stm32 sram字节都可以位操作吗?
发布网友
发布时间:2022-05-05 14:24
我来回答
共3个回答
热心网友
时间:2022-06-27 15:06
那当然可以了, 地址0x20000000 后的SRAM跟外设的0x40000000都可以位操作很方便的。
比如要操作0x20000010的第3位就这样计算
0x20000010 - 0x20000000 = 0x10
0x10 = 16
(16 x 8 + 3) X 4 = 524
524 = 0x20c
0x20000000 + 0x20c = 0x2000020c
对0x2000020c写1或者0就可以了。
本人刚写的1602驱动就用到了位操作
直接把内存0x20000208的0到3的四个位赋值给PB口ODR寄存器的12到15位
PB口ODR寄存器地址是0x40010c0c。
这样操作少了很多乱七八糟的东西
ldr r4, = 0x22004100
ldmia r4!, {r0-r3}
ldr r5, = 0x422181b0
stmia r5!, {r0-r3}
热心网友
时间:2022-06-27 15:06
没有直接的位操作,如果你要想一个一个bit的操作也行,一个小程序就可以让你随意操作任何一个位!
热心网友
时间:2022-06-27 15:07
stm32没有位操作功能的,因为stm32有足够大的ram或者外部ram,不像以前的51单片机ram资源有限,才有位操作的。