请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PM 主题中讨论的其他器件:TM4C123
工具/软件:Code Composer Studio
您好!
我正在尝试编写代码、通过 UART0发送一个字节的数据。 控制只会传输到 UART 处理程序一次、之后不会触发发送中断。 此外、当我单步执行代码时、将数据插入 UART_DR 寄存器后、数据不会反映在 UART0_DR 寄存器中。 我在此附上我的 UART.c 文件。
typedef 结构 { bool 为_TX_over; uint16_t * tx_buff; uint16_t numofbytes; }TX_db_t; 静态 TX_db_t TX_db; 空 Uart0_Init (void) { uint32_t 延迟; SYSCTL_RCGC1_R |= SYSCTL_RCGC1_UART0; SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOA; // SYSCTL_RCGCUART_R |= SYSCTL_SCGC1_UART0; UART0_CTL_R &=~UART_CTL_UARTEN; UART0_IBRD_R = 0x2B; UART0_FBRD_R = 0x1A; UART0_LCRH_R |= UART_LCRH_WLEN_8; UART0_LCRH_R &=~UART_LCRH_Fen; UART0_LCRH_R &=~UART_LCRH_STP2; // UART0_IFLs_R |= UART_IFLs_TX4_8; GPIO_PORta_AFSEL_R |= 0x03; GPIO_Porta_DEN_R |= 0x03; GPIO_PORta_AMSEL_R &= 0xFC; GPIO_Porta_PCTL_R =(GPIO_Porta_PCTL_R 和0xFFFFFF00)+ 0x00000022; // 延迟= SYSCTL_RCGC2_R; // GPIO_PORTC_AHB_DIR_= 0x20; UART0_CTL_R &=~UART_CTL_RXE; UART0_IM_R &=~UART_IM_RXIM; UART0_CTL_R &=~UART_CTL_TXE; UART0_CTL_R |= UART_CTL_TXE; UART0_CTL_R |= UART_CTL_EOT; // UART0_CTL_R |= UART_CTL_UARTEN; } 空 UART0_transmit (uint16_t * TX_buff、uint16_t buffsize) { tx_db.numofbytes = buffsize; TX_db.is-TX_over = false; TX_db.TX_buff _ptr = TX_buff; UART0_ICR_R |= UART_ICR_TXIC | UART_ICR_RXIC; UART0_IM_R |= UART_IM_TXIM; UART0_DR_R =* TX_db.TX_buff; TX_db.TX_buff PTR++; UART0_CTL_R |= UART_CTL_UARTEN; } 空 UART0_Handler (void) { if ((((UART0_MIS_R 和 UART_MIS_TXMIS)>>5)=1) { if (tx_db.numofbytes >0) { UART0_DR_R =* TX_db.TX_buff; tx_db.numofbytes--; TX_db.TX_buff PTR++; } if (tx_db.numofbytes = 1) { UART0_DR_R =* TX_db.TX_buff; tx_db.numofbytes--; UART0_CTL_R &=~UART_CTL_TXE; UART0_IM_R &=~UART_IM_TXIM; TX_db.is-TX_over = true; } UART0_ICR_R |= UART_ICR_TXIC; } }