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.

[参考译文] MSP430FR2476:无法在 BSL 代码中添加计时器和中断

Guru**** 1135610 points
Other Parts Discussed in Thread: MSP430FR2311, MSP430FR2476
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1345827/msp430fr2476-unable-to-add-timers-and-interrupts-in-bsl-code

器件型号:MSP430FR2476
主题中讨论的其他器件:MSP430FR2311

大家好、

我已使用 MSP430FR2311 (Host)成功将 LED 代码刷入 MSP430FR2476 (target)、其参考文献为   《MSP430FRBoot–适用于 MSP430 FRAM 大型存储器型号器件的主存储器引导加 载程序和无线更新》和《用户指南 MSP430 FRAM 器件引导加载程序(BSL)》。 但其他看门狗中断或计时器中断未进行初始化我尝试了调试并在 WDT 初始化后添加断点
任何建议。
下面是主文件、我尝试在其中添加 WDT 中断

#include "MSP430.h"
#include "TI_NIC.h" Boot_Common
#include "TI_MSPBoot_CI.h"
#include "TI_MSPBoot_MI.h"
#include "TI_scholee.45" Boot_App

unsigned int *program_counter=NULL ;


//
//局部函数原型
//

void Software_Trim ();//获得最佳 DCOFTRIM 值的软件调整
#define MCLK_FREQ_MHz 8 // MCLK = 8MHz

静态空 clock_init (void);


char JmpToApp;


void main_boot (void)
{
//停止看门狗计时器以防止超时复位
WDTCTL = WDT_ADLY_1000;
SFRIE1 |= WDTIE;


// WDTCTL = WDTPW + WDTHOLD;

P4DIR |= BIT7;


PM5CTL0 &=~μ A LOCKLPM5;
Clock_init();


如果(JmpToApp == 1)
{
_disable_interrupt ();
(void (*)()) 0xC402 ();

//验证应用程序,并在需要时跳转
如果(TI_SCPHIN_Validate() Boot_App == true_t)
TI_MSPBoot_APPMGR_JUMPTOAPP ();

TI_MSPBoot_CI_Init ();//初始化通信接口

__ bis_SR_register (GIE);

while (1)
{

//轮询新数据包的 PHY 和数据链路接口
TI_MSPBoot_CI_PHYDL_Poll ();

//如果检测到新的数据包,则对其进行处理
如果(TI_MSPBoot_CI_Process ()== RET_JUMP_TO_APP)
{

//如果数据包表示跳转到应用程序
JmpToApp = 1;

TI_452002_Jump Boot_App App ();



#pragma vector = WDT_vector
__interrupt void WDT_ISR (void)
{
P4OUT ^= BIT7;

*/李启






















明 * *简略@初始化 MSP430时钟 * *@返回无 * / //内联静态 void clock_init (void) 静态空 clock_init (void) { CSCTL1 = DCOFTRIMEN | DCOFTRIM0 | DCOFTRIM1 | DCORSEL_3;//设置 DCO = 8MHz CSCTL2 = FLLD_0 + 243;// DCODIV = 8MHz __delay_cycles (3); __BIC_SR_register (SCG0);//启用 FLL // DCOFTRIM ();//获得最佳 Software_Trim 值的软件调整 CSCTL4 = SELM__REFOCLK + SELMS__DCOCLKDIV;//设置 ACLK = VLO // MCLK=SMCLK=DC #if (MCLK==1000000) CSCTL5 = DIVS__8 + DIVM__8;//将 DCO/8分频 #Elif (MCLK==4000000) CSCTL5 = DIVS_2 + DIVM__2;//将 DCO/2分频 #Elif (MCLK==8000000) CSCTL5 = DIVS__1 + DIVM_1;//将 DCO/1分频 #else #error "请定义有效的 MCLK 或添加配置" #endif } 此致、 帕拉维
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在  MSP430的主存储器引导加载程序和无线更新演示中、它将把复位矢量保持在0xFFFE~0xFFFF 以引导代码。 在执行固件更新时、其他中断矢量将由应用程序的矢量表重新写入、如下所示

    所以我认为如果你只是下载启动代码(不要下载应用程序代码)中断应该是有效的

    如果您希望在启动代码中启用某些中断、可以使用以下注释:

    您可以将应用程序的中断表复制到 SRAM 的末尾以及启用的 SRAM 中断矢量表。 这将避免在进行固件更新时过度写入启动代码的中断矢量。 有关操作代码、请参阅此文档 https://www.ti.com/lit/an/slaa968/slaa968.pdf