串行通信与并行通信
设备之间的通信方式可以分为串行通信和并行通信,这两种通信方式各有优缺点。串行通信是将数据按位顺序传输,这样做的优势是占用的引脚资源少,对于引脚资源紧张的MCU来大有益处,但是由于每次只能传输一个数据,造成了传输速度较慢的劣势(相对并行传输)。并行通信就是数据的各个位同时传输,优点是数据传输快,缺点是占用引脚资源较多。
串行通信按照传输方向又分为单工、半双工和全双工。单工可以理解为只能向着一个方向传输数据,半双工就是可以双向传输,但每次只能有一个传输方向,全双工就是既可以双向传输,它又可以同时有两个传输方向。按照通信方式又可以分为同步通信和异步通信;同步通信需要时钟线(用作时钟信号的同步)的参与,例如SPI和IIC通信接口,而异步通信就是不带时钟线的,例如UART和one-wire。

STM32提供了UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)和USART(Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步异步收发器)两种串口通信接口,用于实现与其他设备之间的数据交换。本文将介绍STM32串口通信的基础知识,帮助读者理解和掌握其基本原理和配置方法。
STM32串口通信
STM32的串口通信模块主要包括UART和USART两种接口。
UART是一种异步通信协议,它使用起始位、数据位、校验位和停止位来定义一个字符的传输格式。USART则是一种同步/异步通信协议,它支持全双工通信,并具备更高的数据传输速率和更好的抗干扰能力。
在常见的STM32F103C8T6中,根据芯片手册可以得知该型号具备3个USART,但也可以作为UART使用。UART引脚TXD为数据输出引脚,RXD为数据输入引脚,两个设备之间的UART连接为TXD和RXD交叉连接,也需要将GND连接在一起。在需要将UART设备连接其他通信接口设备连接时,则需要电平转换芯片,例如CH340(USB转TTL)、MAX485(UART转485)等。
STM32串口通信参数配置
在进行STM32串口通信之前,需要对串口通信参数进行配置。这些参数包括波特率、数据位、停止位、校验位等。其中,波特率表示每秒钟传输的bit,在STM32F103系列中,最高可达4.5Mbps;数据位表示每个字符的数据长度(8位或者9位),停止位用于表示字符的结束(1bit或者2bit),校验位用于检查数据传输的正确性(无校验、奇校验或者偶校验)。在STM32中,这些参数可以通过配置相应的寄存器来实现。例如,通过配置USART_BRR寄存器可以设置波特率,通过配置USART_CR1和USART_CR2寄存器可以设置数据位、停止位和校验位等参数。
STM32串口通信编程实现
在进行STM32串口通信编程时,需要使用HAL库或标准外设库等提供的API函数来配置串口通信参数和发送/接收数据。以下是一个简单的串口通信编程示例:
初始化串口通信参数:使用HAL库或标准外设库提供的函数配置串口通信参数,如波特率、数据位、停止位和校验位等。
发送数据:使用HAL库或标准外设库提供的发送函数将数据写入串口发送缓冲区,然后等待数据发送完成。在发送数据时,需要注意数据的长度和格式,以确保数据的正确传输。
接收数据:使用HAL库或标准外设库提供的接收函数从串口接收缓冲区读取数据。在接收数据时,需要判断接收缓冲区是否有数据可读,并读取相应的数据长度和格式。
错误处理:在串口通信过程中,可能会出现各种错误情况,如发送超时、接收溢出等。在编程时,需要添加相应的错误处理代码,以处理这些异常情况。
STM32串口通信编程示例
以HAL库,基于STM32CubeMX配置软件,示例一个简单的STM32串口例程。
1.创建CUBE工程:File->New Projiect

2.型号选择
3.时钟RCC配置和SYS配置


4.UART参数配置

5.时钟树配置

6.工程管理


7.程序修改
Main函数修改如下:
int main(void){
/* USER CODE BEGIN 1 */ uint8_t testbuf[] = {"stm32 uart\r\n"}; /* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */ SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ HAL_UART_Transmit(&huart1,testbuf,sizeof(testbuf),0xFFFF); HAL_Delay(1000); } /* USER CODE END 3 */}
编译并下载至MCU,使用串口调试助手,即可看到MCU在输出testbuf内的内容。
结论
STM32串口通信是嵌入式系统开发中不可或缺的一部分。通过掌握STM32串口通信的基础知识和编程实现方法,可以更加高效地进行嵌入式系统开发。
- 随机文章
- 热门文章
- 热评文章
- 5200米!我国最深地热科探井完钻
- 【开箱】欧米茄白色盘面超霸月球表!
- 上海农商银行“鑫动能研发贷”助力企业攻坚硬核科技核心技术
- 塞纳河畔的旧书摊(环球走笔)
- 共享基经丨读懂主题ETF(二十四):黄金、黄金股都在涨,以黄金、稀有金属为主题的ETF,还有机会吗?
- 外媒:依靠民主党通过援外法案,美众议长或“付出代价”
- 黄金交易提醒:中东紧张局势助力金价周线五连阳,七成分析师看涨后市
- 白银高位回落后仍面临危险,或进一步跌至26美元
- 中信保诚人寿管理层再生变 董事长、总经理职位均空缺
- 涉嫌试图推翻2020年美总统竞选结果 多人受重罪指控
- 北约秘书长称中国为俄提供卫星能力和成像技术,中方驳斥:纯属捕风捉影
- 好拼!这只基金新设的C份额,费率打折至0.01%
- 浙江省模范集体和劳模名单公布
- 1“赛事+”提升城市“流量” 陕西商洛拓经济发展新“赛道”
- 2“五一”临近 持基过节的投资者要注意这几点
- 3华发股份:成功入选“人民优选”品牌 五一黄金周热销30亿
- 4到2027年产业规模达到2000亿元 浙江发布历史经典产业高质量发展计划
- 5钟鼓楼老街区的古都新事
- 6IDC:24Q1全球PC出货量恢复增长 达到疫情前水平
- 7非常危险!女子摔成粉碎性骨折!又是因为洞洞鞋,夏天多人中招……
- 8金税四期试点上线,财税体制改革拉开帷幕!或有资金借道信创ETF基金(562030)逢跌进场布局
- 9初步数据:我国一季度经常账户顺差392亿美元
- 10“发现山西之美”TDC旅游发现者大会举办:共话文旅新生态 邀客体验新玩法
- 11国门“夫妻档” 国庆共坚守
- 12北交所一周审核动态:2家企业更新进展 胜业电气二轮问询回复中称家电头部客户对价格敏感度较低
- 13甘肃白银县域经济:从“一枝独秀”到“多点开花”
- 1小方制药两专利受让信披出错,产品挂网价申报出差池
- 2高考在即,如何拿出最好状态?这份“锦囊”请收好
- 3【央视快评】继续弘扬“爱国、革命”的黄埔精神 为同心共圆中国梦广泛凝心聚力
- 4EBC GROUP平台外汇行情播报|科技股疲态和过热情绪引起不安
- 5父母“上瘾”,凌晨3点都不睡!儿女一查账单惊呆了……
- 6我国最大海上公务执法船“海巡09”巡航惠州港
- 7星环科技:9月10日召开业绩说明会,投资者参与
- 8四川双江口水电站库周交通工程“8·18”较大坍塌事故调查报告公布
- 9红旗天工08正式上市 售价23.98万元起
- 10国证2000指数表现亮眼 景顺长城量化策略助力捕获超额收益
- 112025年华北地区联合招聘活动在京举办
- 12小摩:料宁德时代(03750)股价短期或回调 目标价400港元 维持“增持”评级
- 139月首周港股三大指数收涨 机构对后续持乐观态度,9月首周港股三大指数收涨 机构对后续持乐观态度



