1、引出问题
uint8_t定义变量地址要1字节对齐。
uint16_t定义变量地址要2字节对齐。
uint32_t定义变量地址要4字节对齐。
uint64_t定义变量地址要8字节对齐。
注:比如4字节对齐的含义就是变量地址对4求余数为0; 8字节对齐就是地址对8求余等于0;
程序里面直接定义是没问题的,如果是指针变量就要注意了。
比如
uint32_t *p;
p=(uint32_t *)0x24000004; 这个地址是4字节对齐。
如果让p去访问0x24000001, 0x24000002,0x24000003这都不是对齐的。
对于M3和M4而言,直接去访问即可(注意芯片要在这个地址有对应的内存空间),因为M3和M4是支持的,而M0/M0+/M1是不支持的 |