Cortex-m3 UART为什么无法接收数据?

2019-03-24 15:34发布

请教一下:M3出口通信为什么无法收到数据呢?但是可以发数据的。 下面是我的程序: //
//UART0 inint
void UART0_Inint()
{
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);//enable Port A
 SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);//enable UART0 CLOCK
 GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_1|GPIO_PIN_0);//SET GPIO WORKED AS UART MODE
 UARTConfigSetExpClk(UART0_BASE,SysCtlClockGet(),9600,UART_CONFIG_WLEN_8|UART_CONFIG_STOP_ONE|UART_CONFIG_PAR_NONE);
 //cofigurate the UART
 //baud rate is 9600
 //data length is 8 bit
 //one stop bit
 //none parity bit
// UARTFIFOEnable(UART0_BASE);
 UARTIntEnable(UART0_BASE,UART_INT_RT|UART_INT_RX);//set uart interrupt as receive and receive timeout interrupt
 UARTEnable(UART0_BASE);//enable uart0
 IntEnable(INT_UART0);//enable uart0 interrupt   
}
中断服务函数: void UART0InterruptHandler()
{
 PC5_1;//灯亮 作为指示
 PD7_1;
 SysCtlDelay(0xffffff);
 UARTIntClear(UART0_BASE,UART_INT_RT|UART_INT_RX);//clear interrupt flag
 if(UARTCharsAvail(UART0_BASE))//judge if UART has received data
 {
  UARTCharPutNonBlocking(UART0_BASE,UARTCharGetNonBlocking(UART0_BASE));
 } 
}
使用串口调试助手时,只有在复位的时候串口调试助手能收到00的数据,然后手动发送就不行了。 但是我把发送数据的函数放在主函数中直接调用就可以,说明发送是没问题的,应该是接受端出了问题。 请哪位大哥哥大姐姐帮忙解答一下哈,小弟感激不尽! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
bruthroc
1楼-- · 2019-03-25 02:09
 精彩回答 2  元偷偷看……
ddllxxrr
2楼-- · 2019-03-25 08:08
< :TI_MSP430_内容页_SA7 -->
David_Lee
3楼-- · 2019-03-25 12:31

原帖由 ddllxxrr 于 2011-10-7 14:11 发表

 

有可能

debug一下,看能不能进入中断撒。

bruthroc
4楼-- · 2019-03-25 12:59
 精彩回答 2  元偷偷看……
Study_Stellaris
5楼-- · 2019-03-25 14:21
确定硬件没有问题,试试 StellarisWare 中的 uart-echo 例程。
晶振该位与板子相符。
David_Lee
6楼-- · 2019-03-25 19:46

原帖由 bruthroc 于 2011-10-7 17:58 发表 可以经中断啊,如果我把中断中的发送函数UARTCharPutNonBlocking(UART0_BASE,UARTCharGetNonBlocking(UART0_BASE)) 改写成UARTCharPutNonBlocking(UART0_BASE,0x90);就是任意发送确定的数值时,单片机就会不停地发送 ...

 

那就定义一个中间变量,进入中断之后,把数据读出来UART0_BASE,UARTCharGetNonBlocking(UART0_BASE),然后再UARTCharPutNonBlocking发出去试试。

会不会是因为标志位那些给清零了的原因咧?

一周热门 更多>

相关问题

    相关文章