void UART1_ISR(void)
{
unsigned long ulStatus;
ulStatus=UARTIntStatus(UART1_BASE,true); // 读取当前中断状态
UARTIntClear(UART1_BASE,ulStatus);// 清除中断状态
GPIOPinWrite(LED_PORT,LED_PIN, 0XFF);
SysCtlDelay(1000 * (TheSysClock / 3000));
GPIOPinWrite(LED_PORT,LED_PIN, 0X00);
SysCtlDelay(1000 * (TheSysClock / 3000));
}
// 主函数(程序入口)
int main(void)
{
clockInit(); // 时钟初始化:晶振,6MHz
SysCtlPeriEnable(LED_PERIPH); // 使能LED所在的GPIO端口
GPIOPinTypeOut(LED_PORT, LED_PIN); // 设置LED所在管脚为输出
uartInit(); // UART初始化
for(;;);
}
我开了串口接收终端和接收超时中断 然后用串口调试助手给M3只发送了一次数据 只有一个字节 然而上面程序运行结果却是中断处理函数被反复触发执行呢 就像进入死循环一样 我只发了一次数据 而且只有一个字节 并且中断触发后也有清中断语句 所以不理解 请高手指点 小弟不胜感激
此帖出自
小平头技术问答
LZ把你的UART配置函数拉上来看看,从Main和uart中断函数看是没有大的问题了。可能是配置上面有一些问题。。。。。。
或者是LZ在使用串口调试工具的时候,执行的不是发送一次,有些工具有连续发送这个选项的,望LZ再检查一下。或者建议直接使用超级终端或者Putty这个小软件。。。
[ 本帖最后由 shilaike 于 2011-10-18 16:26 编辑 ]一周热门 更多>