纠结了好些天了,终于解决了。
泪奔啊!!刚刚写了一堆。。结果undo一下,全没了。。redo也不管用。。。
程序内容:UART中断方式的接收与发送
问题描述:可以中断方式接收,但是从来没有进去过0x2发送中断
分析:因为U0IIR每次读取都会清空中断标志,而我的程序在中断服务函数里读取了两次U0IIR,第一次读取U0IIR判断是否有中断,第二遍读取U0IIR判断是什么类型的中断。所以清空了发送中断标志,不会进入中断。。不过很奇怪为什么缺能正常接收。。
解决方法:注释掉第一遍对U0IIR的读取。。但是不知道这样子会不会不严谨,至少程序可以跑起来了。
另外,从网上看到,有时候会发生发送中断不断触发的情况,需要在初始化时只允许接收中断。然后在接收到数据后再使能发送中断。。发送完毕后再关闭发送中断。用这种方法实现接收->发送。
中断函数如下:
__irq void irq_handler(void)
{
int iir = U0IIR;
switch(iir & 0XF)
{
case 0x2://发送中断
U0THR = transmit;
U0IER = 0X1;
break;
case 0xc://字符超时中断
break;
case 0x4://