你好,我的工程中包含 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可以提供。