STM32CubeMX基于HAL库实现简单串口通信
板子:STM32F103C8
编译工具:Keil+STM32CubeMX
烧录工具:FlyMcu
串口调试程序:XCOM
实验要求:
1)设置波特率为115200,1位停止位,无校验位;
2)STM32系统给上位机(win10)连续发送“hello windows!”
一、流水灯项目创建
首先在STM32CUBE中选择对应的单片机,这里用的是STM32F103C8T6。
创建步骤:
创建好项目之后选择要用到的引脚,本次使用A4,B5,C14三个引脚
注意要选择GPIO_output。
配置调试接口
配置GPIO
项目设置
版本要选择MDK5
生成项目
直接打开项目,跳转到KEIL
打开main函数,找到里面的循环,在循环中添加流水灯代码
//高电平点亮A4
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
//延时一秒
HAL_Delay(1000);
//低电平熄灭A4
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);
//高电平点亮B5
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);
//延时一秒
HAL_Delay(1000);
//低电平熄灭B5
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
//高电平点亮C14
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);
//延时一秒
HAL_Delay(1000);
//低电平熄灭C14
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);
二、实现效果
keil项目设置(每次都要弄)
先搭建项目再debug
点击System Analyezer window,再点击Logic Analyzer
点击setup
添加要观察的引脚
分别为A4,B5和C14
添加完毕后点击close
然后点击run观察波形
波形如下
三、STM32串口通信USART
(一)USART介绍
USART,英文全称——Universal Synchronous/Asychronous Receiver/Transmitter,即通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。
(二)实验操作
首先使用STM32CUBE来创建Keil项目
选择A->Z,USART1,Mode选择Asynchronous异步通信,设置波特率、数据长度、奇偶校验、校验。
切换到ProjectManager,输入项目名,Application Structure选择Basic,IDE中选择MDK-ARM。
点击Code Generater生成对应的.c 和.h文件,然后Generate Code用Keil打开项目。
打开的项目中在usart.c中有自动生成的代码
在main.c的while循环中添加代码
点击上面的魔法棒,用仿真器进行仿真
然后build→运行
运行之后打开UART1
运行结果:
四、参考文章
STM32CubeMX基于HAL库实现简单串口通信
基于 MDK 创建 STM32 汇编程序:串口输出 Hello world
STM32最小核心板F103串口通信USART