用户代码移植到STM32芯片时发生非对齐错误怎么办

描述

为什么基于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文档里提取而来,分享给大家算是借花献佛。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分