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

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

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

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

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

Alvin Chen:

这个不会影响的,SBL在启动之前生效,而APP是在使用之后生效的。

jeff wang2:

回复 Alvin Chen:

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

Alvin Chen:

回复 jeff wang2:

你在Boot定义中断向量的是要做什么。

Alvin Chen:

回复 Alvin Chen:

关于SBL不建议修改直接使用即可:
e2echina.ti.com/…/174038

jeff wang2:

回复 Alvin Chen:

我要做用串口做程序升级。中断的方式比较方便,另外我看到你们官方提供的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();
}

Alvin Chen:

回复 jeff wang2:

应该是可以的。正如你所言,一旦你定义了中断向量在boot里面,在APP层触发会响应你在原来注册的。

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

赞(0)
未经允许不得转载:TI中文支持网 » CC2530 的 boot load 和APP 不能同时开串口接收中断
分享到: 更多 (0)