请教一个关于LM4F232串口发送中断问题

2019-03-24 10:08发布

在使用利尔达的M4开发板时使用UART1串口进行中断接收和中断发送,但是发送不会进入中断程序,程序只会将缓冲里面第一个字节发送出去后就完事了,中断接收则正常。下面是配置程序:     //
    // 配置Uart引脚,(PA0、PA1)
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);  // 使能处理器总中断
 //
 IntMasterEnable();     // 设定PC4、PC5
    //
 GPIOPinTypeUART(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5);
 GPIOPinConfigure(GPIO_PC4_U1RX);
 GPIOPinConfigure(GPIO_PC5_U1TX);
//---------------------------GPIP口配置-------------------------------//
//---------------------------串口配置115200 N81-------------------------------//
    //
    // 配置UART到115200,8-N-1
    //
    UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 115200,
                            (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                             UART_CONFIG_PAR_NONE));  
 UARTIntRegister(UART1_BASE, UART1TXIntHandler);
 UARTIntRegister(UART1_BASE, UART1RXIntHandler);
 UARTIntClear(UART1_BASE, UART_INT_TX); 
 UARTIntEnable(UART1_BASE, UART_INT_TX);
 UARTIntEnable(UART1_BASE, UART_INT_RX | UART_INT_RT);
 //
 // 使能UART中断
 //
 IntEnable(INT_UART1); 调试一天了,不知道怎么回事,有人知道吗? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
蓝雨夜
1楼-- · 2019-03-26 06:57

用这个例子试下uart0看看

 

[ 本帖最后由 蓝雨夜 于 2012-2-29 09:25 编辑 ]
yg1982720
2楼-- · 2019-03-26 11:47

昨晚找到原因,确实因为自己看程序不仔细,一直以为自己配置的FIFO未使能用的1位发送FIFO,后来发现TI那个串口库函数最后使能串口那个函数里面,使能了FIFO而导致发送数据小于1/2FIFO深度才能触发而不是我想的1个字节后就触发。

UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 115200, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); 这个函数就是配置串口的,如果只看到里面这个位置就以为未使能FIFO,

// // Set parity, data length, and number of stop bits. //

HWREG(ulBase + UART_O_LCRH) = ulConfig; // // Start the UART. //

 

其实函数最后一句(UARTEnable(ulBase); )打开了FIFO,我把里面打开FIFO的操作屏蔽就好了

void UARTEnable(unsigned long ulBase)

{

 // // Check the arguments. //

ASSERT(UARTBaseValid(ulBase));

// // Enable the FIFO. //

//HWREG(ulBase + UART_O_LCRH) |= UART_LCRH_FEN;

// // Enable RX, TX, and the UART. //

HWREG(ulBase + UART_O_CTL) |= (UART_CTL_UARTEN | UART_CTL_TXE | UART_CTL_RXE); }

[ 本帖最后由 yg1982720 于 2012-2-29 13:53 编辑 ]
yg1982720
3楼-- · 2019-03-26 14:47
 精彩回答 2  元偷偷看……
蓝雨夜
4楼-- · 2019-03-26 19:58
嘿嘿
互相学习
Triton.zhang
5楼-- · 2019-03-27 00:42
你的中断缓冲设置大了,发了一个字节不会触发中断
xiaojunjie
6楼-- · 2019-03-27 06:00
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章