关于stm8l05x系列单片机rtc初始化问题

关于stm8l05x系列单片机rtc初始化问题

在开始项目时,用到的单片机是stm8l052的单片机,为了降低功耗就要在活跃停止模式和正常运行模式之间切换,即每隔一段时间用rtc唤醒,在进行rtc初始化时,发现调用rtc的唤醒事件分频函数RTC_WakeUpClockConfig();和唤醒数值设置函数RTC_SetWakeUpCounter();无论怎么设置都是800ms左右进一次唤醒中断,即进中断的时间无法用函数设置,我是如下解决的:

1.查看官方库.c文件stm8l15x_rtc.c
如下图:
stm8l15x_rtc.c
在这里插入图片描述
这是官方库中的两个函数的部分截图,上面函数注释部分翻译过来就是说在调用这个唤醒事件的相关初始化之前需要先将rtc的唤醒使能关闭,即先写上语句RTC_WakeUpCmd(Disable);再调用,如果不仔细看官方库英文注释很容易在这个地方卡半天。
2.修改代码
在调用函数RTC_WakeUpClockConfig和RTC_SetWakeUpCounter之前都加上一句RTC_WakeUpCmd(DISABLE);在初始化最后再加上一句RTC_WakeUpCmd(ENABLE);简而言之,在调用唤醒事件设置函数的时候关闭唤醒使能,设置完成之后再打开即可。最后说一下这个rtc唤醒事件中断时长的计算方法,先设置RTC的时钟(LSE或LSI),再进行唤醒事件分频得到唤醒频率,即调用函数RTC_WakeUpClockConfig,关于RTC_SetWakeUpCounter函数数值的计算,定时时长(你想要设置的时长)/分频周期(1/唤醒频率)-1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值