你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G431位带操作为何不能用?

[复制链接]
liuyangday 提问时间:2024-7-26 18:41 / 已解决

我使用STM32G431RBT6的通过以下常用映射关系进行转换想使用位带操作,通过仿真器看,对于GPIO外设地址结果始终无法正确读写,但是测试RAM存储区的单元可以通过位带操作正确读写。不知道大家是否在G4上有成功使用位带操作,求教如何实现?

define IDR_OFS 0x10 //STM32G4xx

define ODR_OFS 0x14

//IO口地址映射

define GPIOA_IDR_Addr (GPIOA_BASE+IDR_OFS) //0x40010808

define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))

define MEM_ADDR(addr) ((volatile unsigned long )(addr))

define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))

define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出

define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入

收藏 评论2 发布时间:2024-7-26 18:41

举报

2个回答
xmshao 最优答案 回答时间:2024-7-29 09:41:55
首先可以肯定,STM32G4是支持位带操作的,在G4参考手册和M4内核手册上都有描述。


但是,位带区和别名区的地址空间空间都有明确定义。如果G4的GPIO没有落在位带区


就没法支持位带操作。我查看了手册,G4的GPIO外设寄存器地址空间都没在位带区。


当然,很多其它外设和部分片内RAM是支持位带操作的。


这里有篇文章可以参考下:


STM32G4系列是否支持位带操作
liuyangday 回答时间:2024-8-2 11:59:26

xmshao 发表于 2024-7-29 09:41
首先可以肯定,STM32G4是支持位带操作的,在G4参考手册和M4内核手册上都有描述。</p>
<p>

回答很有帮助,非常感谢

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版