STM32CubeMX-串口通讯

本文介绍了如何使用STM32CubeMX生成串口通讯的HAL库初始代码,并着重讲解了初始化串口接收中断的重要性,以及如何通过printf函数将数据发送到电脑。同时,还提到了在使用printf时需要启用MicroLIB以及重定向fputc方法的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用CubeMX自动生成串口通讯初始代码(HAL)

  • 初始化后需要打开接收中断,如果不写,无法进入接收中断
/**
  * @brief USART1 Initialization Function
  * @param None
  * @retval None
  */
static void MX_USART1_UART_Init(void)
{

  /* USER CODE BEGIN USART1_Init 0 */

  /* USER CODE END USART1_Init 0 */

  /* USER CODE BEGIN USART1_Init 1 */

  /* USER CODE END USART1_Init 1 */
  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_8;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN USART1_Init 2 */
  if(HAL_UART_Receive_IT(&huart1, Uart1RxBuff, USART1_RX_LEN) != HAL_OK)//打开接收中断
  {
	   Error_Handler();
  }
  /* USER CODE END USART1_Init 2 */

}
    ### 使用 STM32CubeMX 配置和实现 UART 串口通信 #### 创建新项目并选择微控制器型号 启动 STM32CubeMX 软件,在新建项目界面中输入项目名称,保存路径以及选择目标板子所使用的 MCU 型号。 #### 初始化设置 进入主窗口后,点击左侧栏中的 "Pinout & Configuration" 标签页来查看引脚分配图。此时可以调整一些基本参数如调试接口的选择、系统时钟配置等[^1]。 #### 配置 UART 外设 切换到中间部分的外设列表区域找到 USART/UART 组件,双击打开其属性对话框来进行具体设定: - **Mode**: 设置为 Asynchronous 异步模式; - **Baud Rate (bps)**: 设定波特率,默认情况下可以选择常见的9600 bps 或者其他适合应用需求的速度; - **Word Length**: 数据位长度通常选8-bit; - **Stop Bits**: 停止位一般保持默认值即1 stop bit; - **Parity**: 如果不需要奇偶校验则关闭此选项; - **Hardware Flow Control**: 流控机制依据实际应用场景决定开启与否; 对于更高级别的定制化需求还可以进一步修改中断使能状态以及其他低级寄存器级别的细节[^2]。 #### 生成初始化代码 完成上述所有硬件层面的相关配置之后,转至顶部菜单栏依次执行 `Project -> Generate Code` 来让 CubeMX 自动生成必要的驱动程序文件夹结构连同源码模板一起打包导出给 IDE 编译环境使用[^3]。 #### 发送数据函数调用示例 在应用程序逻辑里可以通过 HAL 库提供的 API 函数发送字符串或其他形式的数据包: ```c // 定义要传输的消息内容 uint8_t message[] = "Hello from STM32!\r\n"; // 调用 HAL 提供的标准库函数进行消息传递操作 HAL_UART_Transmit(&huart1, message, sizeof(message), HAL_MAX_DELAY); ``` 这段 C 语言片段展示了怎样利用官方封装好的高层抽象层(HAL)方法把指定缓冲区内的字符序列经由已定义好句柄对象指向的具体物理端口发出[^4]。
    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值