【32单片机学习】(1)stm32位带操作

本文详细介绍了STM32微控制器中位带操作的概念及其应用。包括位带操作的地址计算方法、位带别名区地址的宏定义,以及使用位带操作的优点和潜在风险。还解释了如何通过volatile关键字确保数据的一致性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

位带区操作

STM32F10x支持位带操作的两个内存区的范围是:

0x2000_0000-0x200F_FFFF(SRAM 区中的最低 1MB)

0x4000_0000-0x400F_FFFF(片上外设区中的最低 1MB)

例如操作GPIOB5->ODR寄存器(GPIOB_ODR寄存器的地址为0x4001080c,则A=0x4001080c)

位带区: 支持位带操作的地址区。

位带别名: 对别名地址的访问最终会变换成对位带区的访问。

AliasAddr= 0x42000000+((A-0x40000000)*8+n)*4 =0x42000000+ (A-0x40000000)*32 + n*4

所操作的位带别名区地址:

AliasAddr=*(volatile uint32_t)0x42000000+((0x4001080c-0x40000000)*8+5)*4

=*(volatile uint32_t)0x42000000+ (0x4001080c-0x40000000)*32 + 5*4

=*(volatile uint32_t)0x42218194

#define PB5 *(volatile uint32_t)0x42000000+((0x4001080c-0x40000000)*8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值