This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 与 TM4C123G Launchpad 的 UART2中断连接

Guru**** 2243770 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1108433/uart2-interrupt-connection-with-tm4c123g-launchpad

器件型号:TM4C123GH6PM

我是 TM4C123G 的新手

如果我的代码正确、请任何人指导我

我尝试使用 PD6从 RDM6300 RFID 读卡器接收卡号

波特率:9600

8位

1个停止位

无奇偶校验

启用 FIFO

7/8满时中断

以下是我的代码:

#define UART_FR_RXFE           0x00000010 // UART 接收 FIFO 为空
#define UART_LCRH_WLEN_8       0x00000060 // 8位字长
#define UART_LCRH_Fen          0x00000010 // UART 启用 FIFO
#define UART_CTL_UARTEN        0x00000001 //启用 UART

void UART_Init (void){
SYSCTL_RCGCUART_R |= 0x04;           //激活 UART2
SYSCTL_RCGCGPIO_R |= 0x08;           //激活端口 D
while (((SYSCTL_PRGPIO_R&0x08)=0);
UART2_CTL_R = 0;     //禁用 UART
UART2_IBRD_R = 104;     //对于9600波特率,整数= 104 */
UART2_FBRD_R = 11;      //对于9600波特率,分数= 11*/
UART2_LCRH_R =(UART_LCRH_WLEN_8|UART_LCRH_Fen);
UART2_CTL_R |= UART_CTL_UARTEN;      //启用 UART
GPIO_PORTD_AFSEL_R |= 0x40;          //在 PD6上启用 alt funt
GPIO_PORTD_DEN_R |= 0x40;            //在 PD6上启用数字 I/O
GPIO_PORTD_PCTL_R =(GPIO_PORTD_PCTL_R&0x0F000000)+0x01000000; //将 PD6配置为 UART
GPIO_PORTD_AMSEL_R = 0;         //禁用 PD 上的模拟功能
 
 //启用中断
 UART2_ICR_R &= 0x10; //清除接收中断
 UART2_IM_R = 0x10;
 NVIC_EN1_R =1;
 NVIC_PRI8_R =(NVIC_PRI8_R&0xFFFFFFF0)|0x0000000A;//(g)优先级0                                      

空 UART2_Handler (空)
            {
               char tag_arr[13];
               uint16_t i=0;
               unsigned char rx_data = 0;
               UART2_ICR_R &= 0x10;//清除接收中断
               RX_DATA = UART2_DR_R;//获取接收到的数据字节
               LCD4bits_Data (Rx_DATA);
          Tag_arr[i]=Rx_data;
          i++;
            }