c语言wakeup函数,关于RTC时钟RTC_Set_WakeUp(u32 wksel,u16 cnt)函数的疑惑

博客介绍了如何在STM32中使用RTC_WakeUpCmd函数配置唤醒定时器,通过设置RTC_WakeUpClock_CK_SPRE_16bits和cnt为0来实现每秒中断一次的功能。RTC和EXTI初始化以及中断配置的步骤详细说明,适合嵌入式硬件开发者参考。
摘要由CSDN通过智能技术生成

函数原型:

void RTC_Set_WakeUp(u32 wksel,u16 cnt)

{

EXTI_InitTypeDef   EXTI_InitStructure;

RTC_WakeUpCmd(DISABLE);//关闭WAKE UP

RTC_WakeUpClockConfig(wksel);//唤醒时钟选择

RTC_SetWakeUpCounter(cnt);//设置WAKE UP自动重装载寄存器

RTC_ClearITPendingBit(RTC_IT_WUT); //清除RTC WAKE UP的标志

EXTI_ClearITPendingBit(EXTI_Line22);//清除LINE22上的中断标志位

RTC_ITConfig(RTC_IT_WUT,ENABLE);//开启WAKE UP 定时器中断

RTC_WakeUpCmd( ENABLE);//开启WAKE UP 定时器

EXTI_InitStructure.EXTI_Line = EXTI_Line22;//LINE22

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发

EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE22

EXTI_Init(&EXTI_InitStructure);//配置

NVIC_InitStructure.NVIC_IRQChannel = RTC_WKUP_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;//抢占优先级1

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道

NVIC_Init(&NVIC_InitStructure);//配置

}

主函数中调用:RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0);  //配置WAKE UP中断,1秒钟中断一次

为什么这里的cnt设置为0?怎么算出来1秒钟中断一次?

@正点原子    谢谢原子哥!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值