news 2026/10/11 1:17:06

STM32CubeMx + makefile --- 添加串口打印 printf

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32CubeMx + makefile --- 添加串口打印 printf

STM32CubeMx+makefile— 添加串口打印printf


源码仓库: 码云仓库


环境

工具版本说明
开发板小熊派IoT开发板建议相同
ubuntu16.04版本关系不大
STM32CubeMXV6.3.0建议相同
L4软件包STM32Cube FW_L4 V1.16.0建议相同
STM32CubeProgrammerv2.8.0版本关系不大
交叉编译工具链gcc-arm-none-eabi-10.3-2021.07版本关系不大

STM32CubeMX 配置

芯片选择

  • 新建项目-选择对应的芯片
  • 我板子使用的芯片是 :STM32L431RCT6
  • 大家可以根据自己的实际情况选择对应的芯片
  • 如下:

时钟配置

  • 配置RCC
  • 配置时钟树, 配制成最高速率80M Hz->回车
  • 如下:

配置烧录方式

  • 配置烧录方式SYS为debug选项选择Serial Wire(4线烧录CLKDIOVCCGND)
  • 如下:

配置USART串口

  • 根据原理图确定自己对应的串口, 我的是USART1
  • 选择Asynchronous异步传输
  • 下面的配置可以设置参数, 我这儿就是用默认的参数
  • 如下:

生成makefile项目

  • 选择Copy only the necessary library files只复制必要的库文件
  • 配置好项目的名称以及位置
  • 配置为Basic基本配置
  • 选择生成Makefile项目
  • 最后点击GENERATE CODE生成项目代码

修改代码

思路:将生成的代码复制到ubuntu上面修改编译, 或者修改好了上传到ubuntu上编译

  • 修改stm32cubemx_makefile_printf\Src\main.c文件
  • 添加#include <stdio.h>
  • 重新定义_write函数
  • main()函数主循环中 添加代码测试printf和USART功能
#include<stdio.h>
int_write(intfd,char*ch,intlen){HAL_UART_Transmit(&huart1,(uint8_t*)ch,len,0xFFFF);returnlen;}
intnum=1024;chartx_buf[]="Hello World1!";printf("\nnum = %d\n",num);HAL_UART_Transmit(&huart1,(unsignedchar*)tx_buf,11,10);HAL_Delay(1000);

编译

  • 进入Makefile所在的目录
  • 输入make进行编译
  • 生成的三个文件 (.bin.elf.hex) 都可以用来烧录
  • 如下

烧录

  • 打开STM32CubeProgrammer
  • 链接ST-LINK
  • 选择刚刚生成的文件进行烧录
  • 如下:

运行

  • 连接串口, 打开串口调试工具
  • 如下:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 1:16:50

STM32CubeMx开发之路—11使用FSMC操作LCD

STM32CubeMx开发之路—11使用FSMC操作LCD 运行环境 Windows10STM32CubeMX Version 5.2.0Keil5(MDK5) Version 5.28.0.0 简介 本例程主要讲解如何使用FSMC操作LCD STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx(Keil5)开发之路—配置第一个项目 CubeMX配置 调试打印配…

作者头像 李华
网站建设 2026/10/11 1:16:49

STM32CubeMx开发之路—移植easyflash

STM32CubeMx开发之路—移植easyflash 运行环境 Windows10STM32CubeMX Version 5.4.0Keil5(MDK5) Version 5.28.0.0硬件开发板 F103RB-NUCLEO 简介 本例程主要讲解如何移植easyflash. STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx开发之路—配置第一个项目 使用print…

作者头像 李华
网站建设 2026/10/11 1:16:02

FusionCore轮速消息不参与定位的三重校验机制解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/11 1:15:18

EMC结构防线:缝隙、开孔与搭接的屏蔽效能实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/11 1:15:13

汽车电子转机器人运动控制,为何比工业机器人更顺?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华