功能:主要实现设置时间以及多次设置闹钟中断。

百度云: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闹钟实验完毕。

如果有错误还请指正,谢谢。

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: