AT32F421的GPIO是否支持位带操作
AT32F421的GPIO是否支持位带操作正在使用AT32F421移植原来使用SXX32F103的设计。
发现GPIO的位带操作无效。相对F103的GPIO位带定义已经把OsODR/OsIDR分别由12/8改为20/16, 已经验证无效。
请厂家确认。如果可行请指导正确方法。 421的地址是按着st030排的 因此和st030一样,gpio 不支持bitband。但是 421 gpio有单独的set 和rset寄存器,和bitband操作一样。 谢谢解答。改代码问题解决了,没有BITBAND效率稍低而已。
M4内核本身是支持BITBAND的, 而且F421的SRAM区域也支持这个功能,开发库有应用实例。
不了解为什么把GPIO的BITBAND功能给阉割了,能节省很多逻辑门 ?
更不理解的是这么重要的信息在DS和RM中为什么只字不提?一定要用户自己摸索或到论坛提问? 其实DS和RM中已经说明,BITBAND地址段是ARM规定的,而421的GPIO相关寄存器不在BITBAND地址段中,所以不支持BITBAND功能。参考M4权威手册 现在的位操作效率很低吧,为什么还用?
本帖最后由 muyichuan2012 于 2020-12-9 17:18 编辑
zhjerry 发表于 2020-12-7 08:51
谢谢解答。改代码问题解决了,没有BITBAND效率稍低而已。
M4内核本身是支持BITBAND的, 而且F421的SRAM区域 ...
前面已经很明确的回答您了,使用GPIOx_BSRE 效率和bitband是一样的。GPIOx_BSRE 设计的目的就是为了快速进行GPIO set和reset,
其优势在于:操作时,直接写1即可,写0是无效的,无须把寄存器值读出来。
muyichuan2012 发表于 2020-12-9 17:17
前面已经很明确的回答您了,使用GPIOx_BSRE 效率和bitband是一样的。GPIOx_BSRE 设计的目的就是为了快速进 ...
写操作效率差不多,读操作效率略低。
而代码可读性也差一点。 本帖最后由 muyichuan2012 于 2020-12-9 20:38 编辑
代码可读性的决定因素是程序员编写风格,421对标的是st030,st030的设计也是这样的。
当然您的确想使用bitband功能,也可以使用at32f415413 403a 407等型号,这些型号对标的是st103.
页:
[1]