OpenEdv-开源电子网

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

端口配置锁定寄存器

[复制链接]

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2014-9-11
在线时间
4 小时
发表于 2014-9-11 12:05:01 | 显示全部楼层 |阅读模式
5金钱

  

V3.5库函数中的void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)和这个写序列不一致?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-9-11 12:47:03 | 显示全部楼层
太高深了,表示没用过
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-12 00:50:18 | 显示全部楼层
没用过这功能,帮顶。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2014-9-11
在线时间
4 小时
 楼主| 发表于 2014-9-12 18:18:03 | 显示全部楼层
“锁定相应端口的某一位,也就是锁定控制寄存器CRL/CRH相应的4个位,在下次系统复位之前更改该端口该位的配置无效”
固件库里的程序和写序列大体是一致的,但有一处不太明白:

uint32_t tmp = 0x00010000;      //假设这里GPIO_Pin=0x0001
tmp |= GPIO_Pin;          //tmp=0x00010001
GPIOx->LCKR = tmp;    //LCK0位置1,即选择该端口第0位;LCKK位置1,即写1
GPIOx->LCKR =  GPIO_Pin;    //LCKK位置0,即写0
GPIOx->LCKR = tmp;             // ?(1)
tmp = GPIOx->LCKR;    // ?(2)    
tmp = GPIOx->LCKR;    //读1

从语句上看,?(1)处应是LCKK位置1,即写1,但是执行后发现LCKR寄存器中LCKK位并未置1?
从语句上看,?(2)处应是读LCKK(已置1),但是执行后发现LCKR寄存器中LCKK位此时才置1,故猜测此处应该是先读0,然后将LCKK位置1,这样就和写序列一致了,只是不明白这个执行的先后顺序了?

回复

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2014-9-12 22:14:36 | 显示全部楼层
回复【4楼】ted99happy:
---------------------------------
使用调试器观察外设会引起读操作,而且说明书也没有说写1了就一定读1.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复

使用道具 举报

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2014-9-11
在线时间
4 小时
 楼主| 发表于 2014-9-13 00:39:25 | 显示全部楼层
回复【5楼】shihantu:
---------------------------------
使用软仿应该不会引起读操作,在寄存器的某一位写入1,再去读这个寄存器的这一位不应该读出1吗?
回复

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2014-9-13 01:53:49 | 显示全部楼层
回复【6楼】ted99happy:
---------------------------------
你可以尝试往GPIOx->BRR写入非零数,然后读出来看看.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-1 12:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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