PMM_unlockLPM5(); 函数会跑死,程序跑飞。

2019-07-21 19:33发布

芯片:msp430FR5849
仿真器:TI 5969开发板 SBW
UART芯片: PL2303
开发环境:IAR 6.4
现象:  MSP430每次都能进入下载仿真,但会经常出现以下问题:
        1)  初始换GPIO,调用“PMM_unlockLPM5()”会仿真跑死,特别是初始化GPIO为中断输入的时候(port1、port2);
        2) 仿真的时候,程序不能跑动到断点,会经常性跑飞;
      


求各位大神指点一二,小弟不胜感激。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
baici513
1楼-- · 2019-07-21 23:42
GPIO初始化代码如下 :


    /*******************************/

    GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN7);
    GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN7);
//    GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN7);

    //
    GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN0);
    PMM_unlockLPM5();

    //SPI
    GPIO_setAsOutputPin(GPIO_PORT_P3,GPIO_PIN0 + GPIO_PIN2 +GPIO_PIN3);
    GPIO_setAsInputPin(GPIO_PORT_P3,GPIO_PIN1);
    GPIO_setOutputHighOnPin(GPIO_PORT_P3, GPIO_PIN0 + GPIO_PIN2 +GPIO_PIN3);
    PMM_unlockLPM5();


    GPIO_setAsOutputPin(GPIO_PORT_P4,GPIO_PIN4);
    GPIO_setOutputHighOnPin(GPIO_PORT_P4, GPIO_PIN4);
    PMM_unlockLPM5();
   
    //SPI
    GPIO_setAsOutputPin(GPIO_PORT_P3, GPIO_PIN4 + GPIO_PIN5 + GPIO_PIN6 + GPIO_PIN7);
    GPIO_setOutputHighOnPin(GPIO_PORT_P3, GPIO_PIN4 + GPIO_PIN5 + GPIO_PIN6 + GPIO_PIN7);
   
    GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN6);
    GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN6);   
    PMM_unlockLPM5();

    /*********************************/

    GPIO_setAsOutputPin(GPIO_PORT_P2,GPIO_PIN3);
    GPIO_setOutputHighOnPin(GPIO_PORT_P2, GPIO_PIN3);
//    GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN3);
    PMM_unlockLPM5();


    Gpio_IrqInit(GPIO_PORT_P2, GPIO_PIN7, GPIO_HIGH_TO_LOW_TRANSITION);

//    Gpio_IrqInit(GPIO_PORT_P1, GPIO_PIN0, GPIO_HIGH_TO_LOW_TRANSITION);



    Gpio_IrqInit(GPIO_PORT_P1, GPIO_PIN1 + GPIO_PIN2, GPIO_HIGH_TO_LOW_TRANSITION);
    Gpio_IrqInit(GPIO_PORT_P1, GPIO_PIN2, GPIO_HIGH_TO_LOW_TRANSITION);
baici513
2楼-- · 2019-07-22 02:49
补充下IO中断初始化函数,刚刚搞掉了

/*GPIO中断初始化*/
static void Gpio_IrqInit(uint8_t selectedPort,uint16_t selectedPins,uint8_t edgeSelect)
{

       //Enable Px.x internal resistance as pull-Up resistance
        GPIO_setAsInputPinWithPullUpresistor(
                selectedPort,
                selectedPins
                );

        //Px.x interrupt enabled
        GPIO_enableInterrupt(
                selectedPort,
                selectedPins
                );

        //Px.x Hi/Lo edge
        GPIO_interruptEdgeSelect(
                selectedPort,
                selectedPins,
                edgeSelect
                );


        //P1.4 IFG cleared
        GPIO_clearInterruptFlag(
                selectedPort,
                selectedPins
                );
        /*
         * Disable the GPIO power-on default high-impedance mode to activate
         * previously configured port settings
         */
        PMM_unlockLPM5();               
}
youtome
3楼-- · 2019-07-22 06:14
 精彩回答 2  元偷偷看……
youtome
4楼-- · 2019-07-22 11:47
程序跑飞肯能是内部的空间太大了。
baici513
5楼-- · 2019-07-22 16:54
youtome 发表于 2016-7-24 22:36
怎么不使用看门狗。

程序还在调试阶段啊 ,肯定不适用看门狗啊
baici513
6楼-- · 2019-07-22 17:24
youtome 发表于 2016-7-24 22:39
程序跑飞肯能是内部的空间太大了。

能说得具体点么?  不太明白

一周热门 更多>