This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR5969:自定义引导加载程序问题

Guru**** 2538955 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/997019/msp430fr5969-custom-bootloader-issue

器件型号:MSP430FR5969

各位专家、您好!

我正在尝试一个代码、我要在其中从一个位置跳转到另一个位置。 这是我的代码

#include
#include
#include
#include

#pragma LOCATION ="FLASHcode"//定义闪存段代码

void dummy_code ()@"FLASHcode"

int a=0、b=0;
(A=0;A<10;A++)

b=b+1;
//_NOP();

_NOP();
asm ("BR #0x4432");

unsigned char BSL_Flag = 0;

void TI_MSPBoot_JumpToBoot (void)

_disable_interrupt ();//禁用所有中断
伪代码();

静态空 clock_init (空)

CSCTL0_H = CSKKEY_H;
CSCTL1 = DCOFSEL_6;//设置 DCO = 8MHz
CSCTL2 = SELA_VLOCLK + SELM__DCOCLK + SELESS__DCOCLK;//设置 ACLK = VLO
// MCLK=SMCLK=DCO

CSCTL3 = DIVA__1 + DIVS_8 + DIVM_8;//除以 DCO/8

void test_jum_application()

int l;

for (l = 0;l<10;l++)

_NOP();

int main( void )

//停止看门狗计时器以防止超时复位
WDTCTL = WDTPW + WDTHOLD;

//初始化 MPU
//MPU_init();

clock_init();

TI_MSPBoot_JumpToBoot();

BSL_Flag = 0xED;

BSL_Flag = 0xE0;

test_jum_application();//地址位置0x4432

返回0;

问题是当它进入 dummy_code()时,它直接跳转到 test_jum_application,直到这个流程正常。 但是、在执行 test_jump 应用程序后、它将执行

BSL_Flag = 0xED;
BSL_Flag = 0xE0;
test_jum_application();

我想跳过上述三项陈述。

当我使用  asm ("BR #0x4432");语句时、为什么程序计数器正在执行上述语句。

是否有人能让我清楚地了解这一疑问?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我无法从代码中显示任何注释。 还请附上汇编代码、以便我们进行一些分析。