我把程序换成了使用外部高速晶振,程序软仿正确,硬件一跑就不对,串口收不到秒中断。
[mw_shl_code=c,true]int main()
{
//ErrorStatus HSEStartUpStatus;
NVIC_InitTypeDef nvic;
nvic.NVIC_IRQChannel=RTC_IRQn;
nvic.NVIC_IRQChannelCmd =ENABLE;
nvic.NVIC_IRQChannelPreemptionPriority=0;
nvic.NVIC_IRQChannelSubPriority=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_Init(&nvic);
USART_init();//这是我一直使用的函数,不会有问题就不贴了
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR,ENABLE);
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
RTC_WaitForLastTask();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
RTC_SetPrescaler(32767);
RTC_WaitForLastTask();
PWR_BackupAccessCmd(DISABLE);
while(1)
{
if(time==1)
{
printf("Seconds");
time=0;
}
}
}
[/mw_shl_code]
中断函数
[mw_shl_code=c,true]void RTC_IRQHandler ()
{
time=1;
RTC_ClearITPendingBit (1);
}[/mw_shl_code]
程序哪里不对,怎么仿真对?
|