首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Cortex-M3设置异常处理程序

如何为Cortex-M3设置异常处理程序
EN

Stack Overflow用户
提问于 2014-02-19 16:32:33
回答 1查看 320关注 0票数 0

我开始在STM32L152 Cortex-M3上做一些简单的项目。

我读到M3仅为thumb2,因此,我们需要将异常处理程序地址的LSB保持为'1‘,以便保持在thumb模式。

代码语言:javascript
复制
.thumb
.section .startup, "ax"
exc_vectors:
       .word top_of_stack
       .word reset_handler
       .word NMI_handler
       .word hardfault_handler
           .
           .
reset_handler:
           @some code here

既然指令是16位或32位的,那么说'reset_handler‘符号的地址具有LSB = 0是正确的吗?

如果是这样,通常情况下,如何/何时/在何处将处理程序符号(reset_handler、NMI_handler等)的最低有效位设置为“1”?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2014-02-20 02:54:03

C编译器会自己做这件事,所以你可以放心了。

Cortex-M3内核是32位的。'reset_handler‘向量的地址为0x04。你是对的,所有的向量都会有LSB == 0,但是!如果重置向量从地址0x0B0C开始,如下所示:

代码语言:javascript
复制
              ResetISR:
00000b0c:   F7FFBEC4 B.W             _c_int00
00000b10:   4770     BX 

然后编译器将在向量表中将其写为0x0B0D,如下所示:

代码语言:javascript
复制
00000004:   00000B0D ANDEQ 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21874925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档