御神楽的学习记录之串口通信小试牛刀

本文详细介绍了如何使用STM32CubeMX与Keil配合,实现流水灯及串口通信功能。首先,通过STM32CubeMX配置GPIO和USART,然后导出到Keil进行代码编写和烧录。在Keil中,实现了流水灯的循环点亮和串口发送字符串,并利用逻辑分析仪观察时序波形。最后,使用串口助手验证了串口通信的正确性。
摘要由CSDN通过智能技术生成


前言

通用同步异步收发器(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值