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

CC1310: 1310 NORTOS模式下,中断触发后如何立即结束休眠

Part Number:CC1310

使用CC1310的NORTOS的 pininterrupt例程,对其进行如下修改:

void *mainThread(void *arg0)
{

    /* Open LED pins */
    ledPinHandle = PIN_open(&ledPinState, ledPinTable);
    if(!ledPinHandle) {
        /* Error initializing board LED pins */
       while(1);
    }

    buttonPinHandle = PIN_open(&buttonPinState, buttonPinTable);
    if(!buttonPinHandle) {
        /* Error initializing button pins */
    while(1);
    }

    /* Setup callback for button pins */
    if (PIN_registerIntCb(buttonPinHandle, &buttonCallbackFxn) != 0) {
        /* Error registering button callback function */
        while(1);
    }

    /* Loop forever */
    while(1) {

        //sleep(1000);
        sleep(5); // 休眠5秒
        PIN_setOutputValue(ledPinHandle, Board_PIN_LED1, !PIN_getOutputValue(Board_PIN_LED1)); // DIO7电平翻转
    }
}

即将原本主循环中的sleep(1000)替换为{sleep(5)和PIN_setOutputValue(ledPinHandle, Board_PIN_LED1, !PIN_getOutputValue(Board_PIN_LED1))}

实测发现,在芯片休眠期间,中断触发之后,不会立即执行DIO7电平翻转,而是等到5秒休眠时间到后才执行。

请问,有什么方法能够在中断触发后,立即结束休眠并执行sleep(5)后面的语句???

Katherine Wang:

已为您咨询TI资深工程师,一旦得到回复会立刻回复给您

,

Katherine Wang:

您可以参阅以下页面的“NoRTOS Power Management”一章,从而在没有 sleep() 的情况下做到这一点:https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_1GHz_Users_Guide.html

原理是您可以循环 5 秒,然后中断循环,或者在标志被切换后立即中断循环,例如在中断中。

,

CoCo Lv:

目前我这边使用永久等待信号量的方式进入休眠;休眠前启用定时器和外部引脚中断,任一触发时发送信号量,使芯片退出休眠。

,

Katherine Wang:

您能详细地展示一下您的永久等待数据量的方式是什么样的吗?

赞(0)
未经允许不得转载:TI中文支持网 » CC1310: 1310 NORTOS模式下,中断触发后如何立即结束休眠
分享到: 更多 (0)