STM32CubeMX配合Keil完成LED流水灯及USART串口通讯程序

本文介绍了如何使用STM32CubeMX配置GPIO实现LED红绿灯周期闪烁,以及如何配置USART进行串口通信。详细步骤包括STM32CubeMX的安装、HAL固件库的在线安装、工程创建、设置及代码生成,并在Keil中完善工程实现串口发送'hello windows!'。最后通过Keil的逻辑分析仪观察波形,总结了STM32CubeMX的便捷性和HAL库的优势。

一、STM32CubeMX的安装

(一)安装JRE

由于 STM32CubeMX 软件是基于 JAVA 环境运行的,所以需要安装 JRE (Java Runtime Environment)才能使用,
官网:https://www.java.com/en/download/manual.jsp

1、双击.exe程序
在这里插入图片描述

2、更改目标文件夹
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
3、安装中
在这里插入图片描述
4、安装成功,关闭即可
在这里插入图片描述

(二)安装STM32CubeMX

官网:www.st.com/stm32cubemx

1、把压缩包解压到文件夹
在这里插入图片描述
2、双击.exe应用程序
在这里插入图片描述
在这里插入图片描述
3、同意协议,下一步
在这里插入图片描述
4、勾选第一个即可,第二个选项是是否同意ST公司收集你的个人使用信息等
在这里插入图片描述
5、更改路径,注意不要有中文
在这里插入图片描述

6、选择YES,这句话是安装本软件可能会与文件夹之前文件冲突,导致文件夹之前文件丢失,是否继续,选择继续即可在这里插入图片描述
7、不用更改其他设置,直接下一步安装
在这里插入图片描述
8、安装完成,Done退出
在这里插入图片描述
在这里插入图片描述

(三)安装HAL固件库

什么是HAL固件库?
STM32 HAL固件库是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。HAL库的推出,可以说ST也慢慢的抛弃了原来的标准固件库,这也使得很多老用户不满。但是HAL库推出的同时,也加入了很多第三方的中间件,有RTOS,USB,TCP / IP和图形等等。
和标准库对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在STM32系列MCU之间无缝移植,甚至在其他MCU也能实现快速移植。
并且从16年开始,ST公司就逐渐停止了对标准固件库的更新,转而倾向于HAL固件库和 Low-layer底层库的更新,停止标准库更新,也就表示了以后使用STM32CubeMX配置HAL/LL库是主流配置环境;
HAL库,有在线安装离线安装两种方式。

这里我选择在线安装
打开安装好的 STM32CubeMX 软件 点上面的Help -> Manage embedded software packages
在这里插入图片描述
会跳出来一个选择型号界面 ,勾选我们需要安装的STM32F1的HAL库, 点击“Install Now” 直到安装成功。 如下图:
在这里插入图片描述
在这里插入图片描述

二、STM32CubeMX下完成用GPIO端口使LED红绿灯周期闪烁

(一)创建工程

1、打开STM32CubeMX,创建新工程
在这里插入图片描述
2、选择需要使用的芯片,这里选择STM32F103C8,双击芯片
在这里插入图片描述
在这里插入图片描述

(二)初始化设置

1、配置时钟
设置成使用外部时钟源
在这里插入图片描述
2、配置时钟树
在这里插入图片描述
3、配置管脚
在左侧选择GPIO,在芯片上选择对应的输出管脚,设置成Output输出模式,这里我选择PA4,PA5,PA6
在这里插入图片描述
4、配置输出模式
分别点击三个管脚配置输出模式
在这里插入图片描述

(三)工程导出

1、设置工程名、保存路径、打开方式选择MDK-ARM V5
在这里插入图片描述
2、选择把.c和.h文件加入到工程中
在这里插入图片描述
3、选择GENERATE CODE,生成代码并导出
在这里插入图片描述

(四)在Keil中完善工程

1、找到生成的工程文件并打开
在这里插入图片描述
2、打开main.c文件
在这里插入图片描述
3、找到while循环,在BEGINEND中间加入我们编写的代码
在这里插入图片描述

		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//A0灯亮
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);	//A4灯灭,同时B0亮
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);	//A5灯灭,同时C15灯亮
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_SET);
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_RESET);//A6灯灭然后开始循环

4、生成.hex文件后进行烧录,观看结果
由于我上一篇博客里已经做过,这里不多赘述
在这里插入图片描述
请添加图片描述

三、STM32的USART串口通信程序

(一)了解串口通信与USART

1、串口通信是一种设备间非常常用的串行通行方式,其简单便捷,大部分电子设备都支持。
RS-232标准: 主要规定了信号的用途、通信接口以及信号的电平标准。
2、USART满足外部设备对工业标准 NRZ 异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率,使得它的应用更加广泛。USART 支持同步单向通信和半双工单线通信;还支持局域互连网络 LIN、智能卡(SmartCard)协议与 lrDA(红外线数据协会) SIR ENDEC规范。
USART支持使用 DMA,可实现高速数据通信。

(二)STM32系统给上位机(win10)连续发送“hello windows!”

采用HAL库方法

1、创建新工程
在这里插入图片描述
2、选择芯片
在这里插入图片描述
3、RCC配置
在这里插入图片描述
4、USART1配置
在这里插入图片描述
5、Project配置
在这里插入图片描述
6、Code Generate配置
在这里插入图片描述
7、生成代码
在这里插入图片描述
8、打开工程
在这里插入图片描述
9、在main.c的while循环上面写入以下代码:

char data[] = "\nHello windows!\n";

10、在while循环中写入以下代码:

HAL_UART_Transmit(&huart1, (uint8_t *)data, 15, 0xFFFF);
HAL_Delay(1000);

在这里插入图片描述

11、生成.hex文件
在这里插入图片描述
12、打开FlyMcu,导入.hex文件进行烧录
在这里插入图片描述
13、打开串口调试助手,打开串口,成功!
在这里插入图片描述

四、观察波形

使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 用此功能观察到3个GPIO端口的输出波形
在这里插入图片描述

HAL库使用的是延时函数,要比我们上一次采用软件延时准确地多

五、总结

通过这次学习,体会到了STM32CubeMX的强大与方便,也初步学习了一些简单的运用HAL库实现的功能,相信通过后面更深入的学习能够更加熟练地掌握更多。

六、参考🔗

1、【STM32】STM32 CubeMx使用教程一安装教程
2、STM32之串口通信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值