main.c 4.0 KB

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