开发板:STM32F407VET6
开发环境:MDK5、CubeMx、Env、串口助手
RT-Thread源码:rt-thread-v3.1.2
一、RTC实验
1.配置RTC的Kconfig语法
打开bsp\stm32\stm32f407-atk-explorer\board目录下的Kconfig文件并编辑:
2.使用Env工具使能RTC功能
在bsp\stm32\stm32f407-atk-explorer目录下右键打开Env控制台,然后在控制台输入menuconfig,选择使能RTC:
3.使用scons构建工具重新生成工程
完成上一步之后,Save保存退出后在Env控制台输入scons --target=mdk5重新生成工程,在rtconfig.h中可以看到RTC功能已经被定义了:
4.CubeMx配置32.768KHZ的外部低速时钟源
打开CubeMx工程,打开System Core栏下的RCC配置:
5.keil 5编程
打开keil 5工程初始化RTC参数,在drv_rtc.c文件下的set_rtc_time_stamp()可以看到在初始化RTC时,官方源码已经帮我们调用了HAL_RTCEx_BKUPWrite()函数去写入一个数据到备份寄存器了:
在drv_rtc.c文件下手动添加自定义函数rtc_init()用来设置RTC的日期、时间:
在main.c文件中添加rtc_entry()线程:
6.调试输出
编译下载程序到开发板,打开串口助手查看打印信息:
只要开发板上的纽扣电池没有被拔下来,开发板掉电重新启动后,时间、日期也不会丢失,RTC设置的参数也不会被重新初始化。