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.

CC2530 的 boot load 和APP 不能同时开串口接收中断

  你好,我的工程中包含 BOOT 和 APP 两部分,地址分别在 0x 0000 ,和0x2000

其中两个都需要串口接收中断,但是,一但在boot 中 定义了 

#pragma vector = URX0_VECTOR  串口接收中断,就会导致 APP 中的 串口接收中断失效。我感觉是两个项目的中断相互影响,请问如何解决这个问题,谢谢

  • 这个不会影响的,SBL在启动之前生效,而APP是在使用之后生效的。
  • @Alvin Chen, 谢谢您的回答,但是我没有看明白。能给我个demo 吗,我这里不光是串口接收中断相互影响,我测试一下,定时中断和其他中断也是,只要在BOOT里面定义了中断向量,APP 里面的对应的中断就失效, 中断直接跳到了BOOT 的中断应用程序里了

  • 你在Boot定义中断向量的是要做什么。
  • 关于SBL不建议修改直接使用即可:
    e2echina.ti.com/.../174038
  • 我要做用串口做程序升级。中断的方式比较方便,另外我看到你们官方提供的bootloader 中用串口升级,没有定义中断向量,而是用轮询中断标记的 ,就是说,在bootloader里面不能定义中断向量,是吗

    static void halUartRxIsr(void)
    {
    uint8 tmp = UxDBUF;
    URXxIF = 0;

    isrCfg.rxBuf[isrCfg.rxTail] = tmp;

    if (++isrCfg.rxTail >= HAL_UART_ISR_RX_MAX)
    {
    isrCfg.rxTail = 0;
    }
    }


    static void HalUARTPollISR(void)
    {
    while(URXxIF) halUartRxIsr();
    while(UTXxIF) halUartTxIsr();
    }
  • 应该是可以的。正如你所言,一旦你定义了中断向量在boot里面,在APP层触发会响应你在原来注册的。

    你需要重新定义试试,没有类似的demo可以提供。