OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 47|回复: 0

STM32F103串口3初始化失败

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2024-12-18
在线时间
0 小时
发表于 2025-7-9 20:53:01 | 显示全部楼层 |阅读模式
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寄存器没有数据如图

0c886b884c1c717587a196f78ddc306.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 20:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表