为什么基于Cortex-M3/M4的STM32芯片组织的用户代码移植到基于Cortex-M0/M0+的STM32芯片时为何可能会发生非对齐错误?
这是因为基于Cortex-M3/M4的STM32芯片对数据访问的对齐要求不那么严格,即使非对齐访问也可以支持,当然可能会牺牲访问效率。而对于Cortex-M0/M0+的芯片则明确不支持对数据的非对齐访问。显然,我们设计代码时尽量遵循对齐访问便于移植。
因为内核的差异导致我们在应用上的误解或误用,这也是常有的事情。我这里刚好就最近某STM32用户咨询的问题稍作整理,顺便做个简单分享。
下面是部分Cortex-M内核的NVIC特性差异对照表,有兴趣的话可以看看。
该表格是我从The Definitive guide to ARM Cortex-M0 and ARM Cortex-M0+
Processors文档里提取而来,分享给大家算是借花献佛。
全部0条评论
快来发表一下你的评论吧 !