总述
当要建立个应用项目时,编程总需要一个调试环境叭,而总所周知程序员最好的调试手段就是打印,而 STM32 相比于传统的编程较为特殊,不能直接使用标准库函数 printf 进行输出,而一般调试方法为使用 USART 串口进行打印,而该配置又千篇一律做着重复的工作,何不如创建一个模版用于学习使用呢。
基于本工程,后续将会继续添加 STM32 相关常用协议模块的使用作为一个总结学习。
一、创建工程
按照个人的 STM32 型号进行选择,在 CubeIDE 中创建 STM32 Project 工程,其步骤如下:
1
点击文件选择 NEW 中的 STM32 Project
2
按照个人使用的型号进行搜索选择,并且 IDE 具有收藏功能点击即可方便后续使用,选择好型号后点击next 以继续配置
3
输入工程名称,这里创建模版工程,取名为 template (别说为什么是英文,不说报错的问题就是光看着 代码.c 这么个文件你不觉得奇怪吗)
4
选中 RCC 开启高速外部晶振
5
选择 SYS 将 Debug 模式选择为 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
如下路径勾选 printf 与 scanf 的使用
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步进行修改