stm32位带地址换算问题
时间:10-02
整理:3721RD
点击:
FLASH :0x42000000 +((A‐0x40000000)*8+n)*4
A:寄存器的地址 n:访问该寄存器的第n个bit位还必须加上一个n
举例:
比如我要访问如下寄存器GPIOB_BSRR中的第14bit位BS13,
GPIO端口B的起始地址是x04001_0C00,GPIOB_BSRR寄存器的偏移地址是
0x10,访问的第14bit位的BS13。
换算0x4200_0000 + ((0x40010c00-0x40000000)*8 + 12)*4 = 实际地址
问题:不是说n是访问该寄存器的第n个位吗,那访问第14个位,不是应该加14,为什么公式里加12,还有那个偏移地址是干什么的?
A:寄存器的地址 n:访问该寄存器的第n个bit位还必须加上一个n
举例:
比如我要访问如下寄存器GPIOB_BSRR中的第14bit位BS13,
GPIO端口B的起始地址是x04001_0C00,GPIOB_BSRR寄存器的偏移地址是
0x10,访问的第14bit位的BS13。
换算0x4200_0000 + ((0x40010c00-0x40000000)*8 + 12)*4 = 实际地址
问题:不是说n是访问该寄存器的第n个位吗,那访问第14个位,不是应该加14,为什么公式里加12,还有那个偏移地址是干什么的?
感觉有错误:
换算0x4200_0000 + ((0x40010c00-0x40000000)*8 + 12)*4 = 实际地址
应该是
换算0x4200_0000 + ((0x40010c10-0x40000000)*8 + 13)*4 = 实际地址
STM32的位操作的方法:http://blog.csdn.net/cy757/article/details/5816929
STM32F103c8t独立按键功能深入剖析:http://wenku.baidu.com/view/f4f15a19a2161479171128df.html