从USART模版开始STM32学习之旅

文章介绍了如何在CubeIDE中创建STM32工程模板,重点在于配置USART串口进行打印调试,以及如何启用printf函数。通过工程创建、调试设置、函数编写和printf重定向,提供了完整的步骤指导,便于后续项目学习和使用。
摘要由CSDN通过智能技术生成

总述

当要建立个应用项目时,编程总需要一个调试环境叭,而总所周知程序员最好的调试手段就是打印,而 STM32 相比于传统的编程较为特殊,不能直接使用标准库函数 printf 进行输出,而一般调试方法为使用 USART 串口进行打印,而该配置又千篇一律做着重复的工作,何不如创建一个模版用于学习使用呢。

基于本工程,后续将会继续添加 STM32 相关常用协议模块的使用作为一个总结学习。

一、创建工程

按照个人的 STM32 型号进行选择,在 CubeIDE 中创建 STM32 Project 工程,其步骤如下:

1

点击文件选择 NEW 中的 STM32 Project

在这里插入图片描述

2

按照个人使用的型号进行搜索选择,并且 IDE 具有收藏功能点击即可方便后续使用,选择好型号后点击next 以继续配置

在这里插入图片描述

3

输入工程名称,这里创建模版工程,取名为 template (别说为什么是英文,不说报错的问题就是光看着 代码.c 这么个文件你不觉得奇怪吗)

在这里插入图片描述

4

选中 RCC 开启高速外部晶振

在这里插入图片描述

5

选择 SYSDebug 模式选择为 Serial Wire

在这里插入图片描述

6

配置时钟按照如图 1->4 的顺序进行配置

在这里插入图片描述

7

工程管理中选择该选项以生成配对的源文件与头文件

在这里插入图片描述

8

接下来就是配置串口了,Connectivity 中选择点击 USART1(当然也可以根据片上资源情况自行选择)将模式设置为异步

在这里插入图片描述

9

下方参数设置中有包括波特率在内的一些基础参数设置, IDE 已默认设置好参数无需修改,但是需要注意参数数值,之后还需使用

在这里插入图片描述

10

NVIC Setting 中开启中断

在这里插入图片描述

11

配置完成点击 ctrl s 保存文件将会提示生成工程文件,目录如下

在这里插入图片描述

二、调试设置

因为我目前使用的是野火的开发板,使用的是 DAP仿真器 连接需要做该配置,如使用传统教学 discovery 开发板(主要是板载 stlink 的板子)则可跳过该步骤

1

点击调试按键(那个小虫子)旁边的下拉键,选择 Debug Configurations

在这里插入图片描述

2

按照下图 1->5 的步骤进行配置即可

在这里插入图片描述

3、应用后目录下将产生 cfg 文件

在这里插入图片描述

4、打开该文件,将原文件中的两行注释或直接修改,如下图所示 6、12行修改为7、13行所示

在这里插入图片描述

5、再次进入调试配置界面修改 Configuration Script 中的选项(我是未修改原文件重新复制的一份配置文件)所以定位配置文件目录与原文件名不同,总之直接选择使用的 cfg 文件即可。

在这里插入图片描述

三、函数编写

1

在主函数的 while 循环中使用中断版(需要开启 USART1 中断,创建工程 第10步已开启)串口发送函数进行测试,该函数可在发送数据时执行其他函数,中断方式配置完成寄存器之后不需要再占用 CPU,会在接受完成后触发中断,所以能使用尽量使用该函数:

在这里插入图片描述

HAL_UART_Transmit_IT(&&huart1,(uint8_t *) &("test\r\n"),sizeof("test\r\n"));

2

串口连接,注意配置的参数与 创建工程 中第9步相同即可,测试效果如下

在这里插入图片描述

在这里插入图片描述

四、使用printf函数

相信大多数人从 C 语言的学习中走过来,更习惯于printf函数去打印信息

1

首先需要引入标准输入输出函数

在这里插入图片描述

2

对项目进行配置,右键点点击项目,选择 Properties

在这里插入图片描述

3

如下路径勾选 printfscanf 的使用

在这里插入图片描述

4

编写函数

在这里插入图片描述

5

进行重定向 __io_putchar 函数编写

在这里插入图片描述

int __io_putchar(int ch)
{
	uint8_t c=ch;
	HAL_UART_Transmit(&huart1, &c, 1, 100);
	return ch;
}

6

运行测试,可用

在这里插入图片描述

7

printf 好了可别忘了他的好兄弟 scanf,编写完成没有测试,应该没问题,嘿嘿。

在这里插入图片描述

int __io_getchar(FILE *f)
{
	uint8_t  ch;
	HAL_UART_Receive(&huart1,(uint8_t *)&ch, 1, 100);
	return  ch;
}

五、模版导入

1

点击 文件 下拉菜单中选择 Import

在这里插入图片描述

2

目录中选择 Existing Projects into Workspace 后点击 next 以继续

在这里插入图片描述

3

点击 Browse 按键进行目录选择(gpio文件即为复制的文件)finish 即可完成导入

导入之后任然需要按照 调试设置 第2步进行修改
在这里插入图片描述
请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DarianT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值