STM32下的USART串口通信程序

铁头山羊-STM32 (按钮驱动程序编写) 本文介绍了使用独立按钮控制板载LED的硬件电路和软件实现方案。硬件部分设计了按钮电路(PA0输入上拉)和LED电路(PC13输出开漏)。软件实现包括引脚初始化、消抖处理(10ms延时)和状态切换逻辑,通过检测按钮松开瞬间(上升沿)来切换LED状态。重点分析了按钮抖动现象及软件消抖原理,对比了有无消抖的效果差异,并提供了常见问题解决方案。文章还提出了进阶应用建议,包括状态机实现和中断方式,适用于需要处理复杂按钮操作或高实时性的场景。整个方案实现了稳定可靠的按钮控制功能。 阅读详情

一、STM32的USART简介

通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。
串行通信一般是以帧格式传输数据,即是一帧一帧的传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。USART就是对这些传输参数有具体规定,当然也不是只有唯一一个参数值,很多参数值都可以自定义设置,只是增强它的兼容性。
USART满足外部设备对工业标准(NRZ异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率,使得它的应用更加广泛。[USART]支持同步单向通信和半双工单线通信;还支持局域互连网络LN、智能卡(SmartCard)协议与IhDA(红外线数据协会)SIR ENDEC规范。
USART支持使用DMA,可实现高速数据通信,
USART在 STM32应用最多莫过于“打印”程序信息,一般在硬件设计时都会预留一个USART通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、如果出错哪具体哪里出错等等。[1]

二、 USART功能框图

USART 的功能框图包含了USART最核心内容,掌握了功能框图,对 USART就有一个整体的把握,在编程时就思路就非常清晰。USART功能框图见下图:[1]
在这里插入图片描述

  1. ①功能引脚
  2. ②数据寄存器
  3. ③控制器
  4. ④小数波特率生成
  5. 校验控制
  6. 中断控制

具体内容请参考野火官方书籍《零死角玩转STM32——F103指南者》,或者STM32串口通信USART学习笔记

三、 USART接发通信实验

USART只需两根信号线即可完成双向通信,对硬件要求低,使得很多模块都预留USART接口来实现与其他模块或者控制器进行数据传输,比如GSM模块,WIFI模块、蓝牙模块等等。在硬件设计时,注意还需要一根“共地线”
我们可以将数据发送到串口调试助手,我们还可以在串口调试助手发送数据给控制器,控制器程序根据接收到的数据进行下一步工作。
以下将开展USART接发通信实验
任务要求如下:
1)设置波特率为115200,1位停止位,无校验位。
2)STM32系统给上位机(win10)连续发送“hello windows! ”,上位机接收程序可以使用“串口调试助手“,也可自己编程
3)当上位机给stm32发送“Stop,stm32”后,stm32停止发送。

3.1实验环境

①STM32核心板(stm32F103)
②MDK KEIL5
③实验所用串口:USART1
④驱动:CH340

3.2 硬件设计

3.2.1硬件原理图

在这里插入图片描述

CH340G芯片 的作用是将电脑的USB电平转换为串口的TTL电平。
因此在实验前,确保自己的电脑已经安装了CH340的驱动。
但一般我们在市面上买到的USB-TTL接线器已将整个模块焊接在整体了,这里大家只做个初步了解原理就行。

USB-TTL与STM32F103具体连接方式如下:
在这里插入图片描述

3.3 软件程序设计

  • 核心代码-串口初识化
void uart_init(u32 bound){
   
   
  //GPIO端口设置
  GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	 
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);	//使能USART1,GPIOA时钟
  
	//USART1_TX   GPIOA.9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出
  
STM32自学--GPIO 输出模式是有通用和复用的是因为在输出模式下GPIO口的输出只能被CPU或者是片上外设控制二者只能选择一个在输出模式下有输出推挽和输出开漏这两个是通用输出而复用推挽和复用开漏则是复用输出在推挽输出里高低电平都是可以但是在开漏输出中只有低电平驱动,但是在输入模式下输入的信号不仅可以被CPU感知到同时也可以被片上外设感知到所以是没有通用输入和复用输入之分。1.特殊功能引脚(如:电源引脚启动引脚等等)是芯片运行所必需的引脚和普通功能引脚,其中普通引脚是可以进行编程的一共有48个但是只有31个是可以进行编程的。 阅读详情

相关推荐

串口通信-STM32USART串口通讯程序

串口是显控设备与信号处理板之间通信的主要接口,也是显控设备与其他设备、设备与设备之间的协议数据帧通信传输的重要接口。串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式。

m0_73646434的博客 4425

关于b站up铁头山羊的平衡车的学习笔记

个人学习记录

基于STM32USART串口通信驱动程序设计与优化

驱动程序设计的重点是初始化USART模块、发送数据和接收数据。对于串口通信中可能发生的错误,例如奇偶校验错误、帧错误等,进行适当的错误处理,以提高系统的稳定性和可靠性。使用USART的中断或事件功能,可以实现数据接收的异步处理,提高系统的灵活性和效率。使用软件FIFO缓冲区来缓存接收到的数据,减少数据丢失的可能性,提高通信稳定性。通过使用STM32的DMA功能,可以减少CPU的负载,实现大量数据的高效传输。☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。代码获取、问题探讨及文章转载可私信。

weixin_66608063的博客 786

嵌入式初级阶段HAL库笔记(铁头山羊

内容概要:本文档系统性地介绍了STM32 HAL库的核心知识点,涵盖GPIO引脚复用与重映射、IO端口结构(推挽/开漏输出、上/下拉输入)、串口通信帧格式与时钟配置,以及I2C、SPI、UART等常用外设的工作原理与编程接口。深入讲解了定时器的时基单元、输入捕获、输出比较、PWM生成、编码器模式,详细解析了ADC的工作机制、采样与转换时间计算,并提供了各类外设的HAL库函数使用方法,包括中断处理、回调函数机制(如串口接收完成、空闲中断、定时器周期中断、ADC转换完成等)。同时介绍了RTC时间设置与报警功能、DMA数据传输标志清除等内容,全面覆盖嵌入式开发中常用的底层驱动技术。; 适合人群:具备单片机基础知识,熟悉C语言编程,正在学习或从事STM32嵌入式开发的初、中级工程师,尤其是使用HAL库进行项目开发的技术人员; 使用场景及目标:①掌握STM32各外设(如UART、I2C、SPI、ADC、TIMER)的工作原理与HAL库编程方法;②理解中断机制与回调函数的设计逻辑,提升非阻塞式程序设计能力;③应用于智能控制、传感器采集、通信协议实现等嵌入式系统开发场景; 阅读建议:建议结合STM32CubeMX工具与实际硬件平台边学边练,重点理解外设初始化流程、中断服务函数与回调函数的关系,并通过调试验证各类通信与定时功能的实现效果。

STM32HAL库笔记

GPIO、UART、I2C、时钟系统、SPI、中断、定时器、ADC

Hello World! 5045

(1)STM32基本概念与特征—基于铁头山羊STM32标准库教程

本系列文章总结了bilibili铁头山羊STM32标准库教程常用的基本概念图、函数接口和标准例程,以便于日后新程序的开发。

2301_80325508的博客 1767

STM32串口通信USART_ClearFlag(USART1,USART_FLAG_TC); 添加后程序出现bug;( USART_ClearFlag(USART_TypeDef* USART

引言:串口通信是一种很重要的通信方式,我在在平时制作项目的时候经常会使用到串口通信,有时候因为很多模块需要使用串口通信来实现和MCU的通信和数据传输,有时候在调试程序的时候需要用到串口使用printf()的重定向来对程序运行进行监视和调试,最近我在制作一个小项目的时候就遇见了一个问题,就是在串口中断函数中,当向上位机发送一个数据之后,如果此时调用库函数USART_ClearFlag(USART1,USART_FLAG_TC); 就会发现程序莫名其妙的发生故障,但是将这一句去掉之后程序就可以正常运行了,对于.

en_Wency的博客 9399

STM32 USART1 USART2 UASRT3 UART4 UART5串口通信测试程序

STM32 USARTUSART2 UASRT3 UART4 UART5串口通信测试程序 (2014-02-11 20:09:19) 转载▼ 分类: 单片机、嵌入系统 // 5个串口均可工作,已经把定时器中断、 串口中断和配置函数写在一个文件中   晶振  8Mhz  #include "stm32f10x_lib.h"

yu132563的专栏 5185

源享科技全系列资料整合大合集一次打包下载

资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 链接:https://pan.baidu.com/s/1xxxxx 提取码:abcd 80集刘凯STM32全集|uCOS-Ⅱ精讲|C语言|JAVA|51单片机|ARM|模电|Protel一站式资料包已打包上传CSDN,欢迎下载交流,共同进步!

STM32USART串口通信程序

实验环境及仪器1 、stm32核心板103f一块 2 、usb转串口一块 3 、面包板一块,导线若干 4 、Keil5 5 、STM32CubeMx 6 .野火多功能调试助手 7 .mcuisp用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。

qq_52187415的博客 1570

STM32 USART串口通信程序

【代码】STM32 USART串口通信程序

weixin_58619062的博客 249

一个STM32USART串口通信程序(汇编)

嘿!我是目录一、主要内容二、USART 简介三、程序1. 新建项目2. 添加 .s 文件3. 写入代码4. 烧录四、串口调试五、观察管脚的时序波形1. 配置2. 仿真调试观察波形小小的总结参考文献 一、主要内容 完成一个STM32USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求: 1)设置波特率为115200,1位停止位,无校验位; 2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。 二、USART 简介 USAR

YouthBlood9的博客 3042

STM32USART串口通信(指令控制RGB彩灯)

这里写目录标题一、寄存器与基于固件库的stm32 LED流水灯的差异二、STM32USART窗口通讯 一、寄存器与基于固件库的stm32 LED流水灯的差异 二、STM32USART窗口通讯

Scorpio_L_的博客 8134

STM32USART串口通讯程序

一、了解串口通信及准备工作 1.串口通信简介 串行通讯是指设备之间通过少量数据信号线,地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。 分类 单工:数据传输只支持数据在一个方向上传输。 半双工:允许数据在两个方向上传输。但同一时刻只允许数据在一个方向上传输,它实际上是一种能够切换方向的单工通信,不需要独立的接收端和发送端,两者可以合并使用一个端口。 全双工:允许数据同时在两个方向上传输。因此全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。 2.STM32USART 简介 通

weixin_43757736的博客 2220

关于使用stm32核心板进行USART串口通信的实验

目录一、关于串口通信1.串口通信2.USART二、USART串口通信程序1.准备工作2.实验要求3.实验代码4.代码所实现的功能及原理5.实验结果三、结论 一、关于串口通信 1.串口通信 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供

weixin_45189628的博客 2916

STM32-HAL库02-USART串口通信

STM32HAL库实现usart串口通信

qq_45854134的博客 4084

STM32F103笔记】5、串口通信——你好呀~

这一篇来说说STM32串口通信功能,可以说串口通信是每个工程师在开发过程中第一或者第二个进行调试的程序(第一个可能是点灯,固定时间闪烁的那种),因为作为一种通信手段,单片机可以输出一些必要的信息,为调试其他程序提供有力的帮助(当然如果用JLink的话,配合keil uVision5可以单步调试啦。。但是不能否认串口通信在大多数情况下都调试的好帮手)。 这一篇将编写STM32USART程序,并通...

TTZZWWW 3033
上一篇: Altium Designer画stm32最小系统
下一篇: STM32下完成一个基于FreeRTOS的多任务程序
Liu-FE
博客等级 码龄7年 103粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值