stm32中位带操作转化为指针不理解请坛友帮我解释一下谢谢

2020-01-04 18:47发布

1.把“位带地址+位序号”转换别名地址宏:
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
把该地址转换成一个指针:
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
不清楚为什么这么转换????
2.位带操作并不只限于以字为单位的传送。亦可以按半字和字节为单位传送。例如,可以使用
LDRB/STRB 来以字节为长度单位去访问位带别名区,同理可用于 LDRH/STRH。但是不管用哪一个对
子,都必须保证目标地址对齐到字的边界上。
为什么都必须保证目标地址对齐到字的边界上????
谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。