STM32串口通讯

本文介绍了STM32基于寄存器和固件库的LED流水灯编程差异,并详细讲解了STM32串口通信设置与实现,包括材料准备、烧录步骤以及代码示例。此外,还探讨了在Ubuntu系统中C语言编程中的全局变量、局部变量、堆和栈的概念,并通过串口验证了STM32中堆栈和全局变量的地址分配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基于寄存器与基于固件库的stm32 LED流水灯例子的编程方式的差异

固件库编写方式,特点是简单易于理解,资料多。新手适合用这种方式入门。
寄存器的可移植性强,更贴近底层,要求对外设的工作原理和运行机理有更深的理解。

二、STM32的USART窗口通讯

该处串口通信实现以下功能:
1)设置波特率为115200,1位停止位,无校验位。
2)STM32系统给上位机(win10)连续发送“hello windows!”,
3)当上位机给stm32发送“Stop stm32!”后,stm32停止发送。

1.材料准备

STM32指南者开发板(包括USB串口转换线、所需软件及驱动)
在这里插入图片描述

2.烧录方式

按如下方式配置:①搜索串口,设置波特率 115200(尽量不要设置的太高) ,②选择要下载的 HEX 文件、③校验、编程后执行、④DTR 低电平复位,RTS 高电平进入 bootloader、⑤开始编程。(前4步一定要调试正确,否则可能连接不上)
在这里插入图片描述

在这里插入图片描述

3.代码及效果图

代码(使用野火的代码模板中的串口通信文件中的USART1接发中的工程文件)
把其中stm32f10x_it.c文件的串口中断服务函数部分改为

int i=0;
uint8_t ucTemp[50];
void DEBUG_USART_IRQHandler(void)
{
   
	if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
	{
   
		ucTemp[i] = USART_ReceiveData(USART1);	
	}
  if(ucTemp[i] == '!')
	{
   
		if(ucTemp[i-1] == '2'&&ucTemp[i-2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值