大家好、我基本上是使用引脚 A0、A1上的 UART0通过串行监视器监控数据、然后初始化引脚 PC4、PC5上的 UART1以将数据发送到 A6模块、一切正常。
出于某些原因、我需要另一个 UART、因此我在引脚 PD6、PD7上初始化了 UART2。 问题是我的 UC 似乎接收信息、但没有发送、所以我解锁了端口、它开始发送数据、但发送数据需要2分钟等很长时间、我不明白这背后的原因。
这些是我的代码的重要块
int main (void){
int i、j;unsigned char b、N;char 字符;char end_c[2]={0x1a、'\0'};
unsigned char at_Response[100];unsigned char test[5]="hello";
UART_Init();//初始化 UART
UART_init1 ();//初始化 UART1
UART_Init2 ();//初始化 UART2
while (1)
{
这是我的代码
}
和 init 函数如下所示:
void UART_Init (void){
//作为实验11的一部分,修改此程序以使用 UART0而不是 UART1
//从 PC5、PC4切换到 PA1、PA0
SYSCTL_RCGC1_R |= SYSCTL_RCGC1_UART0;//激活 UART0
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOA;//激活端口 A
UART0_CTL_R &&~UART_CTL_UARTEN;//禁用 UART
UART0_IBRD_R = 43;// IBRD = int (80、000、000 /(16 * 115200))= int (43.402778)
UART0_FBRD_R = 26;// FBRD =舍入(0.402778 * 64)= 26
UART0_LCRH_R =(UART_LCRH_WLEN_8|UART_LCRH_Fen);
UART0_CTL_R |= UART_CTL_UARTEN;//启用 UART
GPIO_PORta_AFSEL_R |= 0x03;//在 PA1、PA0上启用 alt funt
GPIO_PORta_den_R |= 0x03;//在 PA1、PA0上启用数字 I/O
//将 PA1、PA0配置为 UART0
GPIO_Porta_PCTL_R =(GPIO_Porta_PCTL_R&0xFFFFFF00)+0x00000011;
GPIO_PORta_AMSEL_R &=~0x03;//禁用 PA1、PA0上的模拟功能
}
void UART_init1 (void){
SYSCTL_RCGC1_R |= SYSCTL_RCGC1_UART1;//激活 UART1
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOC;//激活端口 C
UART1_CTL_R &=~UART_CTL_UARTEN;//禁用 UART
UART1_IBRD_R = 520;// 80、000、000/(16 * 115、200))= 43.40278
UART1_FBRD_R = 53;//6-bbit 小数、舍入(0.40278 * 64)= 26
UART1_LCRH_R =(UART_LCRH_WLEN_8|UART_LCRH_Fen);
UART1_CTL_R |= UART_CTL_UARTEN;//启用 UART
GPIO_PORTC_AFSEL_R |= 0x30;//在 PC5-4上启用 alt funt
GPIO_PORTC_DEN_R |= 0x30;//在 PC5-4上启用数字 I/O
//将 PC5-4配置为 UART1
GPIO_PORTC_PCTL_R =(GPIO_PORTC_PCTL_R&0xFF00FFFF)+0x00220000;
GPIO_PORTC_AMSEL_R &=~0x30;//禁用 PC5-4上的模拟功能
}
void UART_Init2 (void){
volatile unsigned long delay;
//作为实验11的一部分,修改此程序以使用 UART0而不是 UART1
//从 PC5、PC4切换到 PA1、PA0
SYSCTL_RCGC1_R |= SYSCTL_RCGC1_UART2;//激活 UART2
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOD;//激活端口 D
延迟= SYSCTL_RCGC2_R;//允许时钟启动的时间
GPIO_PORTD_LOCK_R = 0x4C4F434B;// 2)解锁 GPIO 端口 D
GPIO_PORTD_CR_R = 0x80;//允许更改 PD7
UART2_CTL_R &=~UART_CTL_UARTEN;//禁用 UART
UART2_IBRD_R = 520;// IBRD = int (80、000、000 /(16 * 115200))= int (43.402778)
UART2_FBRD_R = 53;// 8位字长(无奇偶校验位、一个停止位、FIFO)
UART2_LCRH_R =(UART_LCRH_WLEN_8|UART_LCRH_Fen);
UART2_CTL_R |= UART_CTL_UARTEN;//启用 UART
GPIO_PORTD_AFSEL_R |= 0xC0;//在 PD6、PD7上启用 alt funt
GPIO_PORTD_DEN_R |= 0xC0;//在 PD6、PD7上启用数字 I/O
//将 PD7、PD6配置为 UART2
GPIO_PORTD_PCTL_R =(GPIO_PORTD_PCTL_R&0x00FFFFFF)+ 0x11000000;
GPIO_PORTD_AMSEL_R &=~0xC0;//禁用 PA1、PA0上的模拟功能
}

