大家好,
应用中由于会经常用到串口通讯,在使用uart fifo 为减少MCU Loading设置触发level,
问题一:
请问低于level没有办法触发中断的那些数据如何收发呢?
如 Tx level =4 ; 传送15个字符的数据产生3次Tx fifo中断,剩余3个字符如何做发送处理呢?
问题二:
执行API UARTIntEnable(SOC_UART_0_REGS, ( UART_INT_THR | UART_INT_RHR_CTI));
后就自动跳入UARTIsr中了,此处感觉应该是先有对fifo写的动作到达tx level 后才会触发ISR,
不知为何?
static void UARTIsr(void)
{
static unsigned int txStrLength = sizeof(txArray);
static unsigned int count = 0;
intId = UARTIntIdentityGet(SOC_UART_0_REGS);
switch(intId)
{ case UART_INTID_TX_THRES_REACH:
if(0 != txStrLength)
{
UARTCharPut(SOC_UART_0_REGS, txArray[count]);
txStrLength–;
count++;
}
else
{
/* Disabling the THR interrupt. */
UARTIntDisable(SOC_UART_0_REGS, UART_INT_THR);
}
}
谢谢!
pengda qiu:
回复 STONE:
请问,如何解决的?
我现在遇到一个问题,我发现UART0的中断标志位会自动清除,如果在UARTISR里面打断点就完蛋了。
user4937584:
回复 STONE:
你是怎么解决的? 我也是遇到同样的问题,中断接收不正确。怎么配置能正确的进入中断服务函数?
Steven Liu1:
回复 user4937584:
可以参考STARTERWARE的UART_EDMA例程,基本上涵盖了这些功能。
AM335X_StarterWare_02_00_01_01\build\armv7a\cgt_ccs\am335x\evmAM335x\uart_edma
user4937584:
回复 Steven Liu1:
我参考的是uart的DEMO,里写的是uart0,我改写成uart1。基本都一样。现在可以发送,中断接收程序就死机。