OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3105|回复: 6

关于STM32的BKP寄存器操作异常问题

[复制链接]

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2018-9-6 09:41:10 | 显示全部楼层 |阅读模式
2金钱
最近在做一个项目,想到用BKP寄存器做一个标志位来判定自己是否重启过(看门狗复位),调试过程中发现一个奇怪的现象:当我初次上电在程序中操作BKP寄存器,是可以改变对应寄存器的值的。但是当我在不断电的情况下,再次更新下载程序(程序不变),程序正常运行,但是BKP寄存器写入总是不成功,改变不了其存储值。如下图所示:

UCOS任务轮询

UCOS任务轮询
微信图片_20180906093646.png

第1张图是代码,第2张图是初次上电结果,第3张图是不断电情况重下程序结果!有遇到类似情况的朋友吗?

最佳答案

查看完整内容[请看2#楼]

昨天想了一天没想明白也没找到原因,今天一大早竟然解决了:原因是,重下程序相当于复位,初始化时,程序不再使能PWR、BKP时钟和后备寄存器访问,只要在原子的初始化程序中再加入这两句话就行了 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能PWR和BKP外设时钟 PWR_BackupAccessCmd(ENABLE);//使能后备寄存器访问,因为原子哥的程序是在初次上电是给BKP_DR1寄存器写入了一个定值,复位后判定 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2018-9-6 09:41:11 | 显示全部楼层
昨天想了一天没想明白也没找到原因,今天一大早竟然解决了:原因是,重下程序相当于复位,初始化时,程序不再使能PWR、BKP时钟和后备寄存器访问,只要在原子的初始化程序中再加入这两句话就行了
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);        //使能PWR和BKP外设时钟  PWR_BackupAccessCmd(ENABLE);//使能后备寄存器访问,因为原子哥的程序是在初次上电是给BKP_DR1寄存器写入了一个定值,复位后判定该值是否丢失,以此来判定RTC时间是否需要初始化,所以当再次复位时没有使能时钟和寄存器,导致BKP寄存器不能操作。这是我目前得到的结论,分享给大家了!
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2018-9-6 09:43:51 | 显示全部楼层

图1

图1

图2

图2

图3

图3

图片漏传,2楼补
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2018-9-6 09:44:27 | 显示全部楼层
程序没运行起来
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2018-9-6 09:51:44 | 显示全部楼层

肯定运行起来了,无论是指示灯还是打印信息都有的!!只是打印的BKP值不对
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2018-9-6 10:54:45 | 显示全部楼层
本帖最后由 ssssssssssss 于 2018-9-6 11:09 编辑
陈皮皮 发表于 2018-9-6 09:51
肯定运行起来了,无论是指示灯还是打印信息都有的!!只是打印的BKP值不对

stm32f030c8t6  f0特性吧   RCC_APB1Periph_BKP    好像我没有使能这个时钟也能写,我只是使能了RCC_APB1Periph_PWR,
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2018-9-6 14:02:22 | 显示全部楼层
ssssssssssss 发表于 2018-9-6 10:54
stm32f030c8t6  f0特性吧   RCC_APB1Periph_BKP    好像我没有使能这个时钟也能写,我只是使能了RCC_APB1 ...

是F1的,在RTC初始化中是这样写的,RTC没有丢失时间就不会使能时钟和BKP寄存器,所以造成了复位后不能操作BKP寄存器。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 10:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表