main.c 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. /****************************************Copyright (c)****************************************************
  2. **
  3. **
  4. **--------------File Info---------------------------------------------------------------------------------
  5. ** File name: main.c
  6. ** Descriptions:
  7. **
  8. **--------------------------------------------------------------------------------------------------------
  9. ** Created by:
  10. ** Created date:
  11. ** Version:
  12. ** Descriptions:
  13. **
  14. **--------------------------------------------------------------------------------------------------------
  15. ** Modified by:
  16. ** Modified date:
  17. ** Version:
  18. ** Descriptions:
  19. **
  20. *********************************************************************************************************/
  21. #define THIS_FILE_ID 1
  22. /* Includes ------------------------------------------------------------------*/
  23. #include "includes.h"
  24. //#define MODEM_LED1_PIN GPIO_Pin_12
  25. //#define MODEM_LED1_PORT GPIOC
  26. //#define MODEM_LED2_PIN GPIO_Pin_2
  27. //#define MODEM_LED2_PORT GPIOD
  28. //#define MODEM_LED1_HIGH (MODEM_LED1_PORT->BRR = MODEM_LED1_PIN) //S
  29. //#define MODEM_LED1_LOW (MODEM_LED1_PORT->BSRR = MODEM_LED1_PIN)
  30. //#define MODEM_LED2_HIGH (MODEM_LED2_PORT->BRR = MODEM_LED2_PIN)
  31. //#define MODEM_LED2_LOW (MODEM_LED2_PORT->BSRR = MODEM_LED2_PIN)
  32. //#ifdef __GNUC__
  33. // /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
  34. // set to 'Yes') calls __io_putchar() */
  35. // #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
  36. //#else
  37. // #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
  38. //#endif /* __GNUC__ */
  39. ///**
  40. // * @brief Retargets the C library printf function to the USART.
  41. // * @param None
  42. // * @retval None
  43. // */
  44. //PUTCHAR_PROTOTYPE
  45. //{
  46. // /* Place your implementation of fputc here */
  47. // /* e.g. write a character to the USART */
  48. // USART_SendData(USART1, (uint8_t) ch);
  49. // /* Loop until the end of transmission */
  50. // while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  51. // {
  52. //
  53. // }
  54. // return ch;
  55. //}
  56. void RTC_EXTI_INITIAL()
  57. {
  58. NVIC_InitTypeDef NVIC_InitStructure;
  59. EXTI_InitTypeDef EXTI_InitStructure;
  60. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  61. //------------EXTI17 ?? -------------------
  62. EXTI_InitStructure.EXTI_Line = EXTI_Line17;
  63. EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  64. EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  65. EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  66. EXTI_Init(&EXTI_InitStructure);
  67. //------------
  68. NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;//
  69. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  70. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  71. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  72. NVIC_Init(&NVIC_InitStructure);
  73. //-------------------------------------------
  74. }
  75. void MY_NVIC_Init()
  76. {
  77. NVIC_InitTypeDef NVIC_InitStructure;
  78. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //选择中断分组2
  79. //RunMake(THIS_FILE_ID);
  80. //串口1
  81. NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  82. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  83. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //响应优先级
  84. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  85. NVIC_Init(&NVIC_InitStructure);
  86. // RunMake(THIS_FILE_ID);
  87. //串口2
  88. NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  89. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  90. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  91. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  92. NVIC_Init(&NVIC_InitStructure);
  93. // RunMake(THIS_FILE_ID);
  94. //串口3
  95. NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
  96. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  97. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  98. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  99. NVIC_Init(&NVIC_InitStructure);
  100. //ONOFF-CHECK
  101. NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
  102. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  103. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  104. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  105. NVIC_Init(&NVIC_InitStructure);
  106. }
  107. void PVD_Config(void)
  108. {
  109. EXTI_InitTypeDef EXTI_InitStructure;
  110. NVIC_InitTypeDef NVIC_InitStructure;
  111. //??????,????
  112. RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
  113. EXTI_StructInit(&EXTI_InitStructure);
  114. EXTI_InitStructure.EXTI_Line = EXTI_Line16; // PVD??????16?
  115. EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //??????
  116. //EXTI_InitStructure.EXTI_Trigger??????:
  117. //EXTI_Trigger_Rising---????????????????????;
  118. //EXTI_Trigger_Falling---????????????????????;
  119. //EXTI_Trigger_Rising_Falling---??????????????????????
  120. EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//???????????
  121. EXTI_InitStructure.EXTI_LineCmd = ENABLE; // ?????
  122. EXTI_Init(&EXTI_InitStructure); // ??
  123. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//???????,2???,2???
  124. NVIC_InitStructure.NVIC_IRQChannel=PVD_IRQn;//??????
  125. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//?????2
  126. NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//????1
  127. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//????
  128. NVIC_Init (&NVIC_InitStructure);
  129. PWR_PVDLevelConfig(PWR_PVDLevel_2V9); // ??????:2.9V
  130. PWR_PVDCmd(ENABLE); // ??PVD
  131. }
  132. void tdly(int time){
  133. int i,j;
  134. for(i=0;i<time;i++){
  135. for(j=0;j<2000;j++){;;}
  136. }
  137. }
  138. void ShowMcuFreq(void)
  139. {
  140. RCC_ClocksTypeDef clk;
  141. RCC_GetClocksFreq(&clk);
  142. SysTick_Config(clk.SYSCLK_Frequency / 100);
  143. printf("SYSCLK=%d,PCLK1=%d,PCLK2=%d,HCLK=%d\r\n",clk.SYSCLK_Frequency,clk.PCLK1_Frequency,clk.PCLK2_Frequency,clk.HCLK_Frequency);
  144. }
  145. //void Uart1Init()
  146. //{
  147. //
  148. // GPIO_InitTypeDef GPIO_InitStructure;
  149. // USART_InitTypeDef USART_InitStructure;
  150. // NVIC_InitTypeDef NVIC_InitStructure;
  151. // RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE);
  152. // /*
  153. // * USART1_TX -> PA9 , USART1_RX -> PA10
  154. // */
  155. // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  156. // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  157. // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  158. // GPIO_Init(GPIOA, &GPIO_InitStructure);
  159. // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  160. // GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;// GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING;
  161. // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  162. // GPIO_Init(GPIOA, &GPIO_InitStructure);
  163. // USART_InitStructure.USART_BaudRate =115200;// 115200;
  164. // USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  165. // USART_InitStructure.USART_StopBits = USART_StopBits_1;
  166. // USART_InitStructure.USART_Parity = USART_Parity_No;
  167. // USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  168. // USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  169. // USART_Init(USART1, &USART_InitStructure);
  170. // USART_Cmd(USART1, ENABLE);
  171. //
  172. // USART_ClearFlag(USART1,USART_FLAG_TC);
  173. // USART_ITConfig(USART1, USART_IT_TXE, DISABLE); //ENABLE DISABLE
  174. // USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //ENABLE
  175. // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //选择中断分组2
  176. // //串口1
  177. // NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  178. // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  179. // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //响应优先级
  180. // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  181. // NVIC_Init(&NVIC_InitStructure);
  182. //
  183. //}
  184. //void LedInit(void)
  185. //{
  186. // GPIO_InitTypeDef GPIO_InitStructure;
  187. // RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//复用功能IO 时钟使能 这里必须先使能复用IO的时钟,再关闭JTAG功能
  188. // GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // JTAG-DP Disabled and SW-DP Enabled
  189. //
  190. // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);
  191. // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  192. // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  193. // GPIO_InitStructure.GPIO_Pin = MODEM_LED1_PIN;
  194. // GPIO_Init(MODEM_LED1_PORT, &GPIO_InitStructure);
  195. // GPIO_InitStructure.GPIO_Pin = MODEM_LED2_PIN;
  196. // GPIO_Init(MODEM_LED2_PORT, &GPIO_InitStructure);
  197. //
  198. //// MODEM_LED1_HIGH;
  199. //// MODEM_LED2_HIGH;
  200. //// SetLedIndicator(InStart);
  201. // MODEM_LED1_LOW;
  202. // MODEM_LED2_LOW;
  203. //}
  204. //U64 stkMainTask[1024];
  205. //U64 stkModemUartTask[1024];
  206. //U64 stkModemTask[1024];
  207. //__task void ModemUartTask(void)
  208. //{
  209. // while(1){
  210. // os_dly_wait(100);
  211. // printf("111111----\r\n");
  212. // IWDG_ReloadCounter();
  213. // }
  214. //
  215. //}
  216. //__task void ModemTask(void)
  217. //{
  218. // while(1){
  219. // os_dly_wait(200);
  220. // printf("2222222----\r\n");
  221. // }
  222. //}
  223. //__task void MainTask(void)
  224. //{
  225. // os_tsk_create_user(ModemUartTask,3,&stkModemUartTask,sizeof(stkModemUartTask));//1024
  226. // os_tsk_create_user(ModemTask,3,&stkModemTask,sizeof(stkModemTask));//1024
  227. // while(1){
  228. // os_dly_wait(400);
  229. // printf("4444444----\r\n");
  230. //
  231. // }
  232. //}
  233. //void IWDG_Configuration(unsigned int value)
  234. //{
  235. //// WWDG 时钟使能
  236. // RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
  237. // if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)RCC_ClearFlag();
  238. ////写入0x5555,用于允许狗狗寄存器写入功能
  239. // IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  240. //
  241. ////狗狗时钟分频,40K/256=156HZ(6.4ms)
  242. // IWDG_SetPrescaler(IWDG_Prescaler_256);
  243. //
  244. ////喂狗时间
  245. // //IWDG_SetReload(200);1.28s/6.4MS=200 .注意不能大于0xfff
  246. // IWDG_SetReload(value);//3.2s/6.4MS=500 .注意不能大于0xfff
  247. //
  248. ////喂狗
  249. // IWDG_ReloadCounter();
  250. //
  251. ////使能狗狗
  252. // IWDG_Enable();
  253. //}
  254. /**********************************************************************************************************
  255. main()
  256. **********************************************************************************************************/
  257. int main (void)
  258. {
  259. RTC_Init();
  260. ModemPinConfig();
  261. PowerCtrlInit();
  262. Uart1Init();
  263. //KeyInit();
  264. /* Initialize RTX and start init */
  265. os_sys_init_user(MainTask,1,stkMainTask,sizeof(stkMainTask));
  266. return (0);
  267. }
  268. /*********************************************************************************************************
  269. END FILE
  270. *********************************************************************************************************/