main.c 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #include "includes.h"
  2. static void MY_NVIC_Init();
  3. void TIM2_Init()
  4. {
  5. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  6. NVIC_InitTypeDef NVIC_InitStructure;
  7. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//
  8. NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  9. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  10. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  11. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  12. NVIC_Init(&NVIC_InitStructure);
  13. TIM_TimeBaseStructure.TIM_Period = 100 - 1;
  14. TIM_TimeBaseStructure.TIM_Prescaler = 100 - 1;//600
  15. TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  16. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  17. TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  18. TIM_Cmd(TIM2, ENABLE);
  19. TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
  20. }
  21. void ShowMcuFreq(void)
  22. {
  23. RCC_ClocksTypeDef clk;
  24. RCC_GetClocksFreq(&clk);
  25. //SysTick_Config(clk.SYSCLK_Frequency / 100);
  26. printf("SYSCLK=%d,PCLK1=%d,PCLK2=%d,HCLK=%d\r\n",clk.SYSCLK_Frequency,clk.PCLK1_Frequency,clk.PCLK2_Frequency,clk.HCLK_Frequency);
  27. }
  28. unsigned int bootMapCnt=0;
  29. unsigned char Test_EnableSpk=0;
  30. int main(void)
  31. {
  32. //newPara.LcdPulse=4;//LCD初始化最亮
  33. RTC_Init();
  34. Authed=1;
  35. Uart1Init();
  36. if (SysTick_Config(SystemCoreClock / 100)){//配置系统滴答10ms中断一次
  37. printf("SysTick_Config err\r\n");
  38. while (1);
  39. }
  40. ReadProductParaFromFlash();
  41. IWDG_Configuration(500);
  42. Uart1RxEnable(1);
  43. //authLink();
  44. Uart1RxEnable(0);
  45. //Authed=1;
  46. OnOff_Init();
  47. KeyInit();
  48. TIM2_Init();
  49. Uart3Init();
  50. ModemPinConfig();
  51. PowerCtrlInit();
  52. W25Q64_Init();
  53. FileSysInit();
  54. IWDG_ReloadCounter();
  55. LedInit();
  56. SpeakerInit();
  57. ADCInit();
  58. KEYADCInit();
  59. LcdInit();
  60. GuiInit();
  61. BeepInit();
  62. MY_NVIC_Init();
  63. newSysIniRead();
  64. ShowMcuFreq();
  65. TSGpsDataInit();
  66. GPSRestart();
  67. GPSInit();
  68. UI_Init();
  69. SpeakerEnable();
  70. uTimerHardDly(10);
  71. SetBeepByNoOS(1000,10);
  72. SpeakerDisable();
  73. GpsTimeUpdate();
  74. UniToGBKIndex=GetFileIndex("UNiTOGBK.bin");
  75. hgs_poc_type=POC_NULL;
  76. printf("\r\n%s_V%d.%d Start...\r\n",sutProductPara.ProductName,sutProductPara.ProductVersion,INTER_VER);
  77. printf("PSN:%lu\r\n",sutProductPara.PSN);
  78. //soc ID替代IMEI
  79. if(GetUniStringByID(DEV_HARDID)==1) printf("hardID:%s\r\n", DEV_HARDID);
  80. LcdOnTimeCt=0;
  81. //SetMessageConfi();//*****************
  82. Uart2Init();
  83. uTimerStart(&bootMapCnt,400); //开机界面持续4秒
  84. ptAllInit();
  85. ptTaskRun();
  86. return 0;
  87. }
  88. void IWDG_Configuration(unsigned int value)
  89. {
  90. // WWDG 时钟使能
  91. RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
  92. if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)RCC_ClearFlag();
  93. //写入0x5555,用于允许狗狗寄存器写入功能
  94. IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  95. //狗狗时钟分频,40K/256=156HZ(6.4ms)
  96. IWDG_SetPrescaler(IWDG_Prescaler_256);
  97. //喂狗时间
  98. //IWDG_SetReload(200);1.28s/6.4MS=200 .注意不能大于0xfff
  99. IWDG_SetReload(value);//3.2s/6.4MS=500 .注意不能大于0xfff
  100. //喂狗
  101. IWDG_ReloadCounter();
  102. //使能狗狗
  103. IWDG_Enable();
  104. }
  105. static void MY_NVIC_Init()
  106. {
  107. NVIC_InitTypeDef NVIC_InitStructure;
  108. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //选择中断分组2
  109. //串口1
  110. NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  111. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  112. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  113. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  114. NVIC_Init(&NVIC_InitStructure);
  115. //串口2
  116. NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  117. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  118. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  119. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  120. NVIC_Init(&NVIC_InitStructure);
  121. //串口3
  122. NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
  123. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  124. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  125. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  126. NVIC_Init(&NVIC_InitStructure);
  127. //EXTI15_10_IRQHandler
  128. NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
  129. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  130. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  131. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  132. NVIC_Init(&NVIC_InitStructure);
  133. // //DMA中断设置
  134. // NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn;
  135. // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  136. // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  137. // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  138. // NVIC_Init(&NVIC_InitStructure);
  139. //RTC中断设置
  140. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //选择中断分组1
  141. NVIC_InitStructure.NVIC_IRQChannel =RTC_IRQn; //RTC中断通道
  142. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1; //先占优先级1
  143. NVIC_InitStructure.NVIC_IRQChannelSubPriority =0; //从占优先级
  144. NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE; //RTC中断通道使能
  145. NVIC_Init(&NVIC_InitStructure);
  146. }