| 
 
新手入门 
 
	积分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寄存器没有数据如图
 
 | 
 
 
  |