小白才学没几天,求求各位学长指点一下,在下在感激不尽!
程序在这:
[mw_shl_code=c,true]u32 sec=0;
void RTC_Configuration(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE); //PWREN和BKPEN位来打开电源和后备接口的时钟调用库函数
PWR_BackupAccessCmd(ENABLE); //开启电源备份寄存器
BKP_DeInit(); //复位备份寄存器
RCC_LSEConfig(RCC_LSE_ON); //开启外部低速时钟32.767KHZ
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET); //等待时钟响应稳定
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //选择RTC时钟源为外部低速时钟
RCC_RTCCLKCmd(ENABLE); //使能RTC时钟
RTC_WaitForSynchro(); //等待时钟同步
RTC_WaitForLastTask(); //查询RTOFF,RTOFF=0:写操作还在继续,RTOFF=1:写操作已经完成
RTC_SetPrescaler(32767); //这个函数包含了RTC_EnterConfigMode():把CNF置1,从而进行RTC的写操作,把RTC进行32767预分频:1秒记一次
RTC_WaitForLastTask(); //查询RTOFF,RTOFF=0:写操作还在继续,RTOFF=1:写操作已经完成
RTC_ITConfig(RTC_IT_SEC,ENABLE); //配置秒中断使能
RTC_WaitForLastTask();//查询RTOFF,RTOFF=0:写操作还在继续,RTOFF=1:写操作已经完成
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructuer;
NVIC_InitStructuer.NVIC_IRQChannel = RTC_IRQn;
NVIC_InitStructuer.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructuer.NVIC_IRQChannelPreemptionPriority= 0;
NVIC_InitStructuer.NVIC_IRQChannelSubPriority = 0;
NVIC_Init(&NVIC_InitStructuer);
}
int main(void)
{
RTC_Configuration();
NVIC_Configuration();
uart_init(9600);
while(1);
}
void RTC_IRQHanlder()
{
if(RTC_GetITStatus(RTC_IT_SEC)!=RESET)
{
sec=RTC_GetCounter();
printf("%d",sec);
RTC_ClearITPendingBit(RTC_IT_SEC);
}
}[/mw_shl_code]
串口接收不到数据 |