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.

[参考译文] cc430f5137在运行时模式下复位

Guru**** 2391415 points
Other Parts Discussed in Thread: CC430F5137

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/624009/cc430f5137-resets-in-runtime-mode

主题中讨论的其他器件:CC430F5137

您好!
我与 cc430f5137合作进行无线通信项目。 我编写了程序代码 c++、编译器为 ti v16.9.3lts。
程序在调试模式下工作正常、但始终在正常模式或自由运行模式下复位。
看门狗关闭。 此外,系统复位中断服务例程(ISR)、系统 NMI ISR 和用户 NMI ISR 未输入。
我不使用堆、并且没有堆栈溢出评估。 我逐一测试了我的所有功能、所有功能都正常工作、但是
当我作为一个整体运行程序时,它会复位。  错误在哪里?

谢谢、此致、

Celal

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

    激活的调试器会更改系统时序、移除后、MCU 可能会很快到达代码中的某个点。 您能否共享初始化代码、电源电压和预期的工作频率? SYSRSTIV 确定了由什么引起的复位? 您是使用 TI EVM 还是使用定制 PCB 进行评估? 如果是后者、请尽可能分享原理图和电路板布局。

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

    感谢您的 repyl Ryan、
    我解决了这个问题。 我使用 similiciti 库的 mrfi 模块进行简单的射频通信。 MRFI 不会初始化电源管理模块。 当无线电在低功耗模式下进入 Rx 激活模式时、MCU 复位、因为 PMMCTL0寄存器的 PMMHPMRE 位未置位。
    在调用 MRFI_INIT()之前,我设置 PMMCTL0寄存器的 PMMHPMRE,特此代码工作正常

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

    #include
    #include "mrfi.h"
    #include "HAL_PMM.h"
    #include "string.h"

    #define trapdebug __BIC_SR_register (GIE);while (1)


    void ledblink (int ch){

    int i;
    if (ch ==1){
    P2DIR |= BIT7;
    P2OUT &=~BIT7;
    对于(I = 0;I < 10;+I){
    P2OUT ^= BIT7;
    _DELAY_CYCLES (50000);


    否则、如果(ch =0){
    P2DIR |= BIT6;
    P2OUT &=~BIT6;
    对于(I = 0;I < 10;+I){
    P2OUT ^= BIT6;
    _DELAY_CYCLES (50000);




    uint16_t SYSRstiv=0;
    int main (空)

    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
    SFRIFG1 = 0;
    SFRIE1 |= ACCVIE | NMIIE | VMAIE;

    SetVCore (2);
    PMMCTL0_H = 0xA5;
    PMMCTL0_L |= PMMHPMRE_L;//全局高功率模块请求使能
    PMMCTL0_H = 0x00;

    ledblink (1);
    MRFI_Init();
    MRFI_WAKEUP ();
    MRFI_RxIdle();
    _DELAY_CYCLES (16000);
    MRFI_RxOn();



    SYSRSTIV=SYSRSTIV;



    mrfiPacket_t p;
    memset (p.frame+1,0,20);
    memcpy (p.frame+1,(uint8_t*)&sysrstiv,sizeof(uint16_t));
    p.frame[0]= 20;
    int i;
    对于(I = 0;I < 5;+I){
    MRFI_Transmit (&p、MRFI_TX_TYPE_CCA);


    while (1){
    _bis_SR_register (LPM3_bits + GIE);






    #pragma vector=SYSNMI_Vector
    _interrupt void sysnmi_ISR (void)

    ledblink (0);
    __no_operation();
    switch (__evo_in_range (SYSSNIV、0x12)){
    SYSSNIV_NONE 案例:
    __no_operation();
    中断;
    SYSSNIV_SVMLIFG 案例:
    __no_operation();
    中断;
    SYSSNIV_SVMHIFG 案例:
    __no_operation();
    中断;
    SYSSNIV_DLYLIFG 案例:
    __no_operation();
    中断;
    SYSSNIV_DLYHIFG 案例:
    __no_operation();
    中断;
    SYSSNIV_VMAIFG 案例: //空内存访问
    __no_operation();
    中断;
    SYSSNIV_JMBINIFG 案例:
    __no_operation();
    中断;
    SYSSNIV_JMBOUTIFG 案例:
    __no_operation();
    中断;
    案例 SYSSNIV_VLRLIFG:
    __no_operation();
    中断;
    案例 SYSSNIV_VLRHIFG:
    __no_operation();
    中断;
    默认值:
    中断;

    WDTCTL = 0xDead;

    #pragma vector=UNMI_Vector
    _interrupt void unmi_ISR (void)

    ledblink (0);
    __no_operation();
    switch (__evo_in_range (SYSUNIV、0x08)){
    案例 SYSUNIV_NONE:
    __no_operation();
    中断;
    案例 SYSUNIV_ACCVIFG: //flass 访问违规
    __no_operation();
    中断;
    SYSUNIV_NMIIFG 案例:
    __no_operation();
    中断;
    SYSUNIV_OFIFG 案例: //osc 故障
    __no_operation();
    中断;
    案例 SYSUNIV_SYSBERRIV:
    __no_operation();
    中断;
    默认值:
    中断;

    WDTCTL = 0xDead;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴听到您找到了答案 Celal、感谢您发布解决方案。

    Ryan