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

函数原型:

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秒钟中断一次?

@正点原子    谢谢原子哥!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是用来设置 RTC 的唤醒功能的,具体含义如下: - `RTC_Set_WakeUp`: 设置 RTC 的唤醒功能。 - `RTC_WakeUpClock_CK_SPRE_16bits`: 唤醒时钟的预分频系数,可以取以下值: - `RTC_WakeUpClock_RTCCLK_Div2`: RTCCLK 除以 2 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div4`: RTCCLK 除以 4 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div8`: RTCCLK 除以 8 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div16`: RTCCLK 除以 16 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div32`: RTCCLK 除以 32 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div64`: RTCCLK 除以 64 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div128`: RTCCLK 除以 128 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div256`: RTCCLK 除以 256 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div512`: RTCCLK 除以 512 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div1024`: RTCCLK 除以 1024 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div2048`: RTCCLK 除以 2048 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div4096`: RTCCLK 除以 4096 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div8192`: RTCCLK 除以 8192 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div16384`: RTCCLK 除以 16384 作为唤醒时钟。 - `RTC_WakeUpClock_RTCCLK_Div32768`: RTCCLK 除以 32768 作为唤醒时钟。 - `RTC_WakeUpClock_CK_SPRE_16bits`: CK_SPRE(RTCCLK / 2)的 16 位预分频器的值作为唤醒时钟。 - `0`: 唤醒时间,单位为 RTC 时钟周期。此处为 0,表示立即唤醒。如果需要延时唤醒,可以根据需求设置不同的值。 需要注意的是,使用 RTC 的唤醒功能需要先开启相应的时钟(LSE 或 LSI),并且需要在进入低功耗模式前调用 `RTC_ClearFlag(RTC_FLAG_WUTF)` 函数清除唤醒标志位。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值