main.c 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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. IWDG_Configuration(500);
  34. RTC_Init();
  35. Authed=0;
  36. Uart1Init();
  37. Uart1RxEnable(1);
  38. authLink();
  39. Uart1RxEnable(0);
  40. Authed=1;
  41. if (SysTick_Config(SystemCoreClock / 100)){//配置系统滴答10ms中断一次
  42. printf("SysTick_Config err\r\n");
  43. while (1);
  44. }
  45. TIM2_Init();
  46. Uart3Init();
  47. ModemPinConfig();
  48. PowerCtrlInit();
  49. W25Q64_Init();
  50. FileSysInit();
  51. IWDG_ReloadCounter();
  52. LedInit();
  53. KeyInit();
  54. SpeakerInit();
  55. ADCInit();
  56. KEYADCInit();
  57. LcdInit();
  58. GuiInit();
  59. BeepInit();
  60. MY_NVIC_Init();
  61. newSysIniRead();
  62. ShowMcuFreq();
  63. TSGpsDataInit();
  64. GPSRestart();
  65. UI_Init();
  66. SpeakerEnable();
  67. uTimerHardDly(10);
  68. SetBeepByNoOS(1000,10);
  69. SpeakerDisable();
  70. ReadProductParaFromFlash();
  71. GpsTimeUpdate();
  72. UniToGBKIndex=GetFileIndex("UNiTOGBK.bin");
  73. hgs_poc_type=POC_NULL;
  74. printf("\r\n%s_V%d.%d Start...\r\n",sutProductPara.ProductName,sutProductPara.ProductVersion,INTER_VER);
  75. printf("PSN:%lu\r\n",sutProductPara.PSN);
  76. //soc ID替代IMEI
  77. if(GetUniStringByID(DEV_HARDID)==1) printf("hardID:%s\r\n", DEV_HARDID);
  78. LcdOnTimeCt = 0;
  79. SetMessageConfi();//*****************
  80. Uart2Init();
  81. uTimerStart(&bootMapCnt,400); //开机界面持续4秒
  82. ptAllInit();
  83. ptTaskRun();
  84. return 0;
  85. }
  86. void IWDG_Configuration(unsigned int value)
  87. {
  88. // WWDG 时钟使能
  89. RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
  90. if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)RCC_ClearFlag();
  91. //写入0x5555,用于允许狗狗寄存器写入功能
  92. IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  93. //狗狗时钟分频,40K/256=156HZ(6.4ms)
  94. IWDG_SetPrescaler(IWDG_Prescaler_256);
  95. //喂狗时间
  96. //IWDG_SetReload(200);1.28s/6.4MS=200 .注意不能大于0xfff
  97. IWDG_SetReload(value);//3.2s/6.4MS=500 .注意不能大于0xfff
  98. //喂狗
  99. IWDG_ReloadCounter();
  100. //使能狗狗
  101. IWDG_Enable();
  102. }
  103. static void MY_NVIC_Init()
  104. {
  105. NVIC_InitTypeDef NVIC_InitStructure;
  106. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //选择中断分组2
  107. //串口1
  108. NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  109. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  110. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  111. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  112. NVIC_Init(&NVIC_InitStructure);
  113. //串口2
  114. NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  115. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  116. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  117. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  118. NVIC_Init(&NVIC_InitStructure);
  119. //串口3
  120. NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
  121. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  122. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  123. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  124. NVIC_Init(&NVIC_InitStructure);
  125. // //DMA中断设置
  126. // NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn;
  127. // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  128. // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  129. // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  130. // NVIC_Init(&NVIC_InitStructure);
  131. //RTC中断设置
  132. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //选择中断分组1
  133. NVIC_InitStructure.NVIC_IRQChannel =RTC_IRQn; //RTC中断通道
  134. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1; //先占优先级1
  135. NVIC_InitStructure.NVIC_IRQChannelSubPriority =0; //从占优先级
  136. NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE; //RTC中断通道使能
  137. NVIC_Init(&NVIC_InitStructure);
  138. }