OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » stm32启动代码中的一些疑惑

共25条 1/3 1 2 3 跳转至

stm32启动代码中的一些疑惑

高工
2012-02-29 16:11:14    评分
    

; Dummy Exception Handlers (infinite loops which can be modified)               


NMI_Handler     PROC
                EXPORT  NMI_Handler               [WEAK]
                B       .
                ENDP
HardFault_Handler\
                PROC
                EXPORT  HardFault_Handler         [WEAK]
                B       .
                ENDP
MemManage_Handler\
                PROC
                EXPORT  MemManage_Handler         [WEAK]
                B       .
                ENDP
BusFault_Handler\
                PROC
                EXPORT  BusFault_Handler          [WEAK]
                B       .
                ENDP
UsageFault_Handler\
                PROC
                EXPORT  UsageFault_Handler        [WEAK]
                B       .
                ENDP
SVC_Handler     PROC
                EXPORT  SVC_Handler               [WEAK]
                B       .
                ENDP
DebugMon_Handler\
                PROC
                EXPORT  DebugMon_Handler          [WEAK]
                B       .
                ENDP
PendSV_Handler  PROC
                EXPORT  PendSV_Handler            [WEAK]
                B       .
                ENDP
SysTick_Handler PROC
                EXPORT  SysTick_Handler           [WEAK]
                B       .
                ENDP




关键词: stm32     启动     代码     中的     一些     疑惑     Hand    

高工
2012-02-29 16:15:35    评分
2楼
在上述代码中,stm32对异常的处理怎么都是采用死循环(B   .    )?什么意思

专家
2012-02-29 20:34:22    评分
3楼
这是啥意思啊?

高工
2012-02-29 20:49:59    评分
4楼
楼主尽量说清楚一点吧

专家
2012-03-01 09:03:00    评分
5楼
个人觉得是不是进入死循环就自动打断,意见不一定对~

高工
2012-03-01 10:29:56    评分
6楼
这是stm32对异常NMI_Handler  HardFault_Handler ... SysTick_Handler 等的
的处理,按照文件的意思,就一条指令(B  . )这就是死循环的意思吧?
sum32对待中断的处理也是采用这样的(我没有贴出来),这怎么理解呢,
难道是Cortex处理器一旦发生异常就一直while(1),死到那里?


高工
2012-03-01 13:51:24    评分
7楼
建议LZ看一些关于Cortex-M3内核相关的资料
下面说说我的理解,因为有两三年没搞STM32了,可能有错误,大家一起探讨

B     .  编译之后,之后是一条跳转到原位置的死循环汇编指令
看图

高工
2012-03-01 14:00:36    评分
8楼
另外,在Cortex-M3中,把我们通常理解的异常(fault)和中断统称为 异常

所以,在启动代码中CM3的异常视情况分别做了不同的处理
对于比较重要的,比如BusFault,HardFault等,除声明外部的函数外,还使用了“B ."这么一个死循环指令。这样当程序中没有在外部定义这个异常处理的服务子函数时,但是程序因为其他非法操作,出现这种异常时,就会直接跳转到这里面,死循环。

最容易碰到的,就是因为大意,非法操作了某个寄存器后,程序不能正常运行,直接跑到上面启动代码中一个莫名其妙的异常中断里面去出不来了

而对于一般常用的外设中断,就没有这种操作

高工
2012-03-01 14:02:11    评分
9楼
抛砖引玉,好久没接触STM32,可能有错,大家继续

高工
2012-03-01 16:43:15    评分
10楼
 Dummy Exception Handlers (infinite loops which can be modified) 

共25条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]