123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #include "includes.h"
- static void MY_NVIC_Init();
- void ShowMcuFreq(void)
- {
- RCC_ClocksTypeDef clk;
- RCC_GetClocksFreq(&clk);
- //SysTick_Config(clk.SYSCLK_Frequency / 100);
- printf("SYSCLK=%d,PCLK1=%d,PCLK2=%d,HCLK=%d\r\n",clk.SYSCLK_Frequency,clk.PCLK1_Frequency,clk.PCLK2_Frequency,clk.HCLK_Frequency);
- }
- unsigned int bootMapCnt=1;
- int main(void)
- {
-
- RTC_Init();
- // BeepInit();//PB3作为PWM
- // Authed=0;
- Uart1Init();
- // Uart1RxEnable(1);
- // authLink();
- // Uart1RxEnable(0);
- // Authed=1;
- if (SysTick_Config(SystemCoreClock / 100)){//配置系统滴答10ms中断一次
- printf("SysTick_Config err\r\n");
- while (1);
- }
- ReadProductParaFromFlash();
- IWDG_Configuration(500);
- OnOff_Init();
- Uart3Init();
- ModemPinConfig();
- PowerCtrlInit();
- W25Q64_Init();
- FileSysInit();
- IWDG_ReloadCounter();
- LedInit();
- KeyInit();
- SpeakerInit();
- ADCInit();
- PowerADCInit();
- LcdInit();
- GuiInit();
- MY_NVIC_Init();
- newSysIniRead();
- ShowMcuFreq();
- TSGpsDataInit();
- GPSRestart();
- UI_Init();
- SpeakerEnable();
- uTimerHardDly(10);
- SetBeepByNoOS(1000,10);
- SpeakerDisable();
- FM_Init();
- GpsTimeUpdate();
- UniToGBKIndex=GetFileIndex("UNiTOGBK.bin");
- printf("\r\n%s_V%d.%d Start...\r\n",sutProductPara.ProductName,sutProductPara.ProductVersion,INTER_VER);
- printf("PSN:%lu\r\n",sutProductPara.PSN);
- //soc ID替代IMEI
- if(GetUniStringByID(DEV_HARDID)==1) printf("hardID:%s\r\n", DEV_HARDID);
- LcdOnTimeCt = 0;
- SetMessageConfi();
- Uart2Init();
- uTimerStart(&bootMapCnt,400); //开机界面持续4秒
- ptAllInit();
- ptTaskRun();
- return 0;
-
- }
- void IWDG_Configuration(unsigned int value)
- {
- // WWDG 时钟使能
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
- if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)RCC_ClearFlag();
- //写入0x5555,用于允许狗狗寄存器写入功能
- IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
-
- //狗狗时钟分频,40K/256=156HZ(6.4ms)
- IWDG_SetPrescaler(IWDG_Prescaler_256);
- //喂狗时间
- //IWDG_SetReload(200);1.28s/6.4MS=200 .注意不能大于0xfff
-
- IWDG_SetReload(value);//3.2s/6.4MS=500 .注意不能大于0xfff
- //喂狗
- IWDG_ReloadCounter();
-
- //使能狗狗
- IWDG_Enable();
- }
- static void MY_NVIC_Init()
- {
- NVIC_InitTypeDef NVIC_InitStructure;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //选择中断分组2
- //串口1
- NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- //串口2
- NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- //串口3
- NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- // //DMA中断设置
- // NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn;
- // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
- // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- // NVIC_Init(&NVIC_InitStructure);
- //ONOFF-CHECK //EXTI2_IRQn
- NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-
- //RTC中断设置
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //选择中断分组1
- NVIC_InitStructure.NVIC_IRQChannel =RTC_IRQn; //RTC中断通道
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1; //先占优先级1
- NVIC_InitStructure.NVIC_IRQChannelSubPriority =0; //从占优先级
- NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE; //RTC中断通道使能
- NVIC_Init(&NVIC_InitStructure);
- }
|