TI中文支持网
TI专业的中文技术问题搜集分享网站

关于MSP430F2131复位

Other Parts Discussed in Thread:MSP430F2131, MSP430F5437

我查阅MSP430F2131的用户手册发现,该芯片复位后,目标CPU会从0xFFFE执行,这是一个复位中断,那么我该如何从这个中断恢复,开始执行我自己的main程序呢?

Susan Yang:

复位向量由C编译器使用函数c_int00()自动处理。该函数会处理各种事情,例如设置堆栈和堆,初始化全局变量和静态变量以及branch到main()。

您可以看一下论坛上我之前的分享

e2echina.ti.com/…/192689

,

user6372742:

我其实更加关心的是:

我想要通过MSP430F5437控制JTAG编程,向MSP430F2131里烧录程序,但是我烧完程序后需要让MSP430F2131运行一段时间。

根据《Programming a Flash-Based MSP430 Using the JTAG Interface》里的描述,调用release释放从芯片后,2131会进入复位矢量。我想知道如何从复位矢量进入main函数运行?

,

user6372742:

您的答案我没太看懂,是不是我不用在程序里额外处理,复位中断会自己跳转到Main?

,

Susan Yang:

或许您可以看一下 

6.9 System Initialization

我这边没有2131的板子,所以我用G2553来说明一下

在debug设置不自动跳到main

然后debug就会跳到

然后就会跳到boot.c中的

/*------------------------------------------------------------------------*//* Allow for any application-specific low level initialization prior to*//* initializing the C/C++ environment (global variable initialization,*//* constructers).If _system_pre_init() returns 0, then bypass C/C++*//* initialization.NOTE: BYPASSING THE CALL TO THE C/C++ INITIALIZATION*//* ROUTINE MAY RESULT IN PROGRAM FAILURE.*//*------------------------------------------------------------------------*/if(_system_pre_init() != 0){if (NEEDS_INIT)_auto_init();}/*------------------------------------------------------------------------*//* Handle any argc/argv arguments if supported by an MSP430 loader.*//*------------------------------------------------------------------------*/if (NEEDS_ARGS)_args_main();elsemain(0);exit(1);
}

在上面的语句中就会跳到main

,

user6372742:

我使用的是IAR,从芯片是什么确实不重要。
我是希望能从0xFFFE中断跳转到main的,为什么要在debug设置不自动跳到main呢?

,

Susan Yang:

IAR的话也是相同的流程

“为什么要在debug设置不自动跳到main呢?”

这个就是为了让您看清从reset跳到main函数这个过程经历了什么……不然直接设置自动跳到main,不就看不到这个过程了吗

,

user6372742:

好吧,那就是如果产生复位矢量0xFFFE,那我就不用处理了?可以自动跳转到Main函数运行,而我不用写什么中断处理函数?

,

Susan Yang:

是的,可以这样理解的

赞(0)
未经允许不得转载:TI中文支持网 » 关于MSP430F2131复位
分享到: 更多 (0)