4
0
mirror of https://github.com/RT-Thread/rt-thread.git synced 2025-02-21 02:27:10 +08:00
YangZhongQing 1c2d05d545 RTC STM32F1 Enable PWR and BKP clocks in the same time
bsp\stm32\libraries\HAL_Drivers\drv_rtc.c在STM32F10x上有一个“RTC首次上电时BKP时钟没使能”的问题。

STM32F10x要求:
写RTC Domain and RTC registers之前需要__HAL_RCC_BKP_CLK_ENABLE(详见:stm32f1xx_hal_rtc.c里面的##### Backup Domain Access #####)

问题分析:
1、RTC首次上电时:由于HAL_RTC_Init初始化之前没有使能BKP时钟,所以对RTC registers的初始化无效。
2、然后用date命令设置时间,调用到set_rtc_time_stamp也没有__HAL_RCC_BKP_CLK_ENABLE,所以HAL_RTCEx_BKUPWrite写的值无法真正永存于BKP,重启后就丢失。
最终导致:对于RTC首次上电的情况,每次重启后RTC_BKP_DR1里的值都不是BKUP_REG_DATA,导致永远无法调用到rt_rtc_f1_bkp_update()去使能BKP时钟。

解决办法:
参考STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\RTC\Calendar\main.c里面的RTC_Configuration()同时打开RCC_APB1Periph_PWR和RCC_APB1Periph_BKP
2022-09-23 21:04:35 -04:00
..
2022-03-14 21:18:14 +08:00

STM32 BSP 说明

STM32 系列 BSP 目前支持情况如下表所示:

BSP 文件夹名称 开发板名称
F0 系列
stm32f072-st-nucleo ST 官方 STM32F072-nucleo 开发板
stm32f091-st-nucleo ST 官方 STM32F091-nucleo 开发板
F1 系列
stm32f103-100ask-mini 百问网F103 Mini开发板
stm32f103-100ask-pro 百问网F103 Pro开发板
stm32f103-atk-nano 正点原子 F103 NANO 开发板
stm32f103-atk-warshipv3 正点原子 F103 战舰V3 开发板
stm32f103-blue-pill STM32F103C8T6蓝色最小系统板
stm32f103-dofly-lyc8 德飞莱 STM32F103 开发板
stm32f103-dofly-M3S 德飞莱 STM32F103 开发板
stm32f103-fire-arbitrary 野火 F103 霸道开发板
stm32f103-gizwits-gokitv21 GoKit V2.1开发板
stm32f103-hw100k-ibox 硬件十万个为什么 STM32F103 iBox 开发板
stm32f103-onenet-nbiot STM32F103 OneNET NB-IoT 开发板
stm32f103-yf-ufun STM32F103 yf-ufun 开发板
stm32f107-uc-eval uC/Eval STM32F107 评估板(中国版)
F2 系列
stm32f207-st-nucleo ST 官方 STM32F207-nucleo 开发板
F4 系列
stm32f401-st-nucleo ST 官方 STM32F401 Nucleo-64 开发板
stm32f405-smdz-breadfruit 三木电子 SM1432F405 开发板
stm32f407-atk-explorer 正点原子 F407 探索者开发板
stm32f407-robomaster-c 大疆公司 RoboMaster C型开发板
stm32f407-st-discovery ST 官方 STM32F407-discovery 开发板
stm32f410-st-nucleo ST 官方 STM32F410-Nucleo-64 开发板
stm32f411-atk-nano 正点原子 F411 NANO 开发板
stm32f411-st-nucleo ST 官方 STM32F411-Nucleo-64 开发板
stm32f411-weact-MiniF4 F401/F411最小系统开发板Black Pill
stm32f412-st-nucleo ST 官方 STM32F412-Nucleo-144 开发板
stm32f413-st-nucleo ST 官方 STM32F413-Nucleo-144 开发板
stm32f427-robomaster-a 大疆公司 RoboMaster A型开发板
stm32f429-armfly-v6 安富莱 F429-v6 开发板
stm32f429-atk-apollo 正点原子 F429 阿波罗开发板
stm32f429-fire-challenger 野火 F429 挑战者开发板
stm32f429-st-disco ST 官方 STM32F429-discovery 开发板
stm32f446-st-nucleo ST 官方 STM32F446-nucleo 开发板
stm32f469-st-disco ST 官方 STM32F469-discovery 开发板
F7 系列
stm32f746-st-disco ST 官方 STM32F746-discovery 开发板
stm32f767-atk-apollo 正点原子 F767 阿波罗开发板
stm32f767-fire-challenger-v1 野火 F767-V1 挑战者开发板
stm32f767-st-nucleo ST 官方 STM32F767-nucleo 开发板
stm32f769-st-disco ST 官方 STM32f769-discovery 开发板
G0 系列
stm32g070-st-nucleo ST 官方 STM32G070-nucleo 开发板
stm32g071-st-nucleo ST 官方 STM32G071-nucleo 开发板
G4 系列
stm32g431-st-nucleo ST 官方 STM32G431-nucleo 开发板
H7 系列
stm32h743-atk-apollo 正点原子 h743 阿波罗开发板
stm32h743-st-nucleo ST 官方 STM32H743-nucleo 开发板
stm32h747-st-discovery ST 官方 STM32H747I-discovery 开发板
stm32h750-armfly-h7-tool 安富莱 STM32H750 Tool 开发板
L0 系列
stm32l010-st-nucleo ST 官方 STM32L010-nucleo 开发板
stm32l053-st-nucleo ST 官方 STM32L053-nucleo 开发板
L4 系列
stm32l4r5-st-nucleo ST 官方 STM32L4R5-Nucleo 开发板
stm32l4r9-st-eval ST 官方 STM32L4R9I-EVAL 开发板
stm32l412-st-nucleo ST 官方 STM32L412-Nucleo 开发板
stm32l431-BearPi STM32L431 小熊派 开发板
stm32l432-st-nucleo ST 官方 STM32L432-Nucleo 开发板
stm32l433-st-nucleo ST 官方 STM32L433-Nucleo 开发板
stm32l452-st-nucleo ST 官方 STM32L452-Nucleo 开发板
stm32l475-atk-pandora 正点原子 L475 潘多拉 IoT 开发板
stm32l475-st-discovery ST 官方 stm32l475-discovery 开发板
stm32l476-st-nucleo ST 官方 STM32L476-Nucleo 开发板
stm32l433-ali-startkit 诺行 STM32L433 Ali Start Kit 开发板
stm32l496-ali-developer 诺行 STM32L496 Ali Developer Kit 开发板
stm32l496-st-nucleo ST 官方 STM32L496-Nucleo 开发板
L5 系列
stm32l552-st-nucleo ST 官方 STM32L552-Nucleo 开发板
U5 系列
stm32u575-st-nucleo ST 官方 STM32U575ZI-Nucleo 开发板
MP1 系列
stm32mp157a-st-discovery ST 官方 STM32MP157A-DK1 开发板
stm32mp157a-st-ev1 ST 官方 STM32MP157A-EV1 开发板
WB 系列
stm32wb55-st-nucleo ST 官方 STM32WB55-Nucleo 开发板
stm32wl55-st-nucleo ST 官方 STM32WL55-Nucleo 开发板

可以通过阅读相应 BSP 下的 README 来快速上手,如果想要使用 BSP 更多功能可参考 docs 文件夹下提供的说明文档,如下表所示:

BSP 使用教程 简介
外设驱动使用教程 讲解 BSP 上更多外设驱动的使用方法
外设驱动介绍与应用 讲解 STM32 系列 BSP 驱动的支持情况,以及如何利用驱动框架开发应用程序
BSP 制作与提交 简介
BSP 制作教程 讲解 STM32 系列 BSP 的制作方法,以及在制作 BSP 和提交 BSP 时应当遵守的规范,视频教程请观看 《RT-Thread STM32 系列 BSP 制作视频教程》
外设驱动添加指南 讲解 BSP 添加更多设备驱动的方法