文章目录
前言
通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。而STM32CubeMX可以十分方便的生成Keil代码,两者配合编程可以高效的完成编程目标。
一、 Stm32CubeMX与Keil配合流水灯实现
1.新建STM32CubeMX项目
1) 选择芯片
笔者采用的硬件芯片为STM32F103C8系列
2) 选择引脚,并配置GPIO输出
选中引脚,选择GPIO_Output
3) 配置GPIO设置
选择Configuration
设置GPIO
设置如下:
接着点击apply应用
2.项目导出
1) 点击导出项目,如图所示
2) 导出设置
设置项目名称、输出编译软件选择MDK-ARM V5,点击OK完成
3.使用Keil编译并烧录
1) 打开STM32CubeMx输出文件
2) 配置流水灯代码:
while (1)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);//b1亮
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_RESET);//a12灭
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);//c14灭
HAL_Delay(1000);//延时1s
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);//b1灭
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_SET);//a12亮
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);//c14灭
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);//b1灭
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_RESET);//a12灭
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);//c14亮
HAL_Delay(1000);
3) 使用串口烧录工具烧录
效果:
二、串口通信hello windows
1.串口通信USART
通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。
串行通信一般是以帧格式传输数据,即是一帧一帧的传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。USART 就是对这些传输参数有具体规定,当然也不是只有唯一一个参数值,很多参数值都可以自定义设置,只是增强它的兼容性。
USART功能构图:
2.新建STM32CubeMx项目
1) 选择芯片、选择USART1
Mode选择Asynchronous异步通信
2) 接着设置设置波特率、数据长度、奇偶校验、校验
默认设置如下:
3) 导出设置
2.Keil编译并烧写代码
1) 在while循坏中加入代码
//需要发送的数据
char data[]="hello windows!\n";
//发送
HAL_UART_Transmit(&huart1, (uint8_t *)data, 15, 0xffff);
//延时
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);//设置指示灯
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);
HAL_Delay(1000);
2) 编译运行并烧写代码
3.串口助手测试
1) 选择串口
2) 实际效果:
发送一条通信,红灯同时闪一下
三、Keil仿真逻辑分析仪观察管脚的时序波形
1.流水灯时序波形观测
1) 点击调试,选择logic analyzer
2) 选择setup
3) 设置端口信息,display type选择bit
这里设置的引脚为b1、a12、c14
4) 开始调试,可以看到如下波形
2.串口通信时序波形观测
输出图像为红灯闪烁的波形
右下角可以查看到UART1正常
总结
通过通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。
同时STM32CubeMx是一个十分方便的嵌入式代码编写软件,可以图形化编程,直接设置即可自动生成代码
参考
https://blog.csdn.net/vic_to_ry/article/details/110451036
https://blog.csdn.net/qq_47281915/article/details/120870801
https://blog.csdn.net/qq_43279579/article/details/112213196