功能:主要实现设置时间以及多次设置闹钟中断。
百度云:https://pan.baidu.com/s/15RbaZY3aH4yC6xRyvhaqWw?pwd=6666
提取码:6666
1.RCC配置
然后回车一下。
因为开发板上接的是24MHz所以这里填1处24,官方给的历程都是80MHz所以4处填80。
2.SYS配置
防止只能下载一次程序所以这里设置为Serial Wire。
3.RTC配置
这里的时钟源我们使用HSE分频之后为750KHz。
这里我们使能时钟和日历以及闹钟A。
我们使用24小时制,
RTC时钟频率=RTC时钟源/(Asynchronous Predivider value+1)/(Synchronous Predivider value+1)=750K/(125-1+1)/(6000-1+1)=1Hz,也就是1秒
我们这里使用BCD形式进行赋值。
这里我们忽略日期,也就相当于时间等于闹钟时间就进入中断。
这里我们使能闹钟中断。
设置好名字以及用keil编写程序 。
勾上这个。
点击生成代码。
4.代码编写
点开rtc.c找到
复制一下
写一下设置闹钟时间的函数
打开stm32g4xx_hal_rtc.c,右击打开对应的头文件,拉到最后。
找到回调函数,复制一下,重新编写回调函数。
这里为设置日期和时间的函数,以及读取时间和日期的函数。
因为是BCD码所以Set_Alarm(sTime.Hours,sTime.Minutes,sTime.Seconds);传入的参数一定为十六进制。例如: Set_Alarm(0,0,0x10);否则不好判断什么时候进入中断。
到此RTC闹钟实验完毕。
如果有错误还请指正,谢谢。