新手入门
- 积分
- 4
- 金钱
- 4
- 注册时间
- 2024-12-18
- 在线时间
- 0 小时
|
2金钱
串口3无法初始化,求求各位大佬帮忙看看!串口3的初始化配置:
.c文件(部分):
int fputc(int ch, FILE *f)
{
if(usart == 0){ /* 如果当前没有设置USART句柄,则返回EOF表示错误 */
return EOF;
}
/* 根据当前设置的USART句柄,选择对应的USART外设发送字符 */
if(usart == 1){
while ((USART1->SR & 0X40) == 0); /* 等待USART1发送完成,然后发送字符 */
USART1->DR = (uint8_t)ch; /* 将要发送的字符 ch 写入到DR寄存器 */
}
else if(usart == 2){
while ((USART2->SR & 0X40) == 0); /* 等待USART2发送完成,然后发送字符 */
USART2->DR = (uint8_t)ch; /* 将要发送的字符 ch 写入到DR寄存器 */
}
else if(usart == 3){
while ((USART3->SR & 0X40) == 0); /* 等待USART3发送完成,然后发送字符 */
USART3->DR = (uint8_t)ch; /* 将要发送的字符 ch 写入到DR寄存器 */
}
return ch; /* 返回发送的字符 */
}
#if USART3_EN == 1
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_USART3_CLK_ENABLE();
gpio_initstructure.Pin = GPIO_PIN_10;
gpio_initstructure.Mode = GPIO_MODE_AF_PP;
gpio_initstructure.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB,&gpio_initstructure);
gpio_initstructure.Pin = GPIO_PIN_11;
gpio_initstructure.Mode = GPIO_MODE_AF_INPUT;
gpio_initstructure.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOB,&gpio_initstructure);
usart3_initstructure.Instance = USART3;
usart3_initstructure.Init.BaudRate = USART3_BAUD;
usart3_initstructure.Init.WordLength = UART_WORDLENGTH_8B;
usart3_initstructure.Init.StopBits = UART_STOPBITS_1;
usart3_initstructure.Init.Parity = UART_PARITY_NONE;
usart3_initstructure.Init.Mode = UART_MODE_TX_RX;
usart3_initstructure.Init.HwFlowCtl = UART_HWCONTROL_NONE;
HAL_UART_Init(&usart3_initstructure);
HAL_NVIC_SetPriority(USART3_IRQn,3,3);
HAL_NVIC_EnableIRQ(USART3_IRQn);
HAL_UART_Receive_IT(&usart3_initstructure,(uint8_t*)rx_buffer3,rx_size);
#endif
.h文件(部分):
#if USART3_EN == 1
#define USART3_BAUD 115200
#define USART3_RX_BUF_SIZE 256
extern uint8_t g_USART3_Rxbuf[USART3_RX_BUF_SIZE];
extern uint16_t g_USART3_RecPos;
#endif
仿真时发现程序卡死在while ((USART3->SR & 0X40) == 0); 且串口3寄存器没有数据如图
|
-
|