STM32串口通信与它的堆、栈、全局变量



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

寄存器:可移植性强,更贴近底层,寄存器版式直接对内部寄存器进行操作

固件库:是用ST提供的库函数开发,有函数的集合,不需要与寄存器直接打教导,提供用户函数调用的API
————————————————————————

概念了解:
1.串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式,它将需要传输的数据通过串口按位(bit)发送和接收字节。
分类:单工、 半双工、 全双工

2.USART是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。

二、STM32的USART窗口通讯程序

1、烧录准备

开发板:野火指南者(STM32F103)

STM32库版本:STM32F10x_StdPeriph_Lib_V3.5.0

IDE:KEIL5
在这里插入图片描述
用usb线把stm32开发板的 ‘usb转串口’和电脑相连接,打开开关,小灯亮起。
计算机与调制调解器的信号线连接:
在这里插入图片描述
在这里插入图片描述
打开CH341SER.EXE,安装。

在这里插入图片描述
打开串口下载助手mcuisp
①搜索串口,设置波特率 115200(尽量不要设置的太高)
②选择要下载的 HEX 文件
③校验、编程后执行
④DTR 低电平复位,RTS 高电平进入 bootloader
⑤开始编程
在这里插入图片描述

2、代码

要求:
1.设置波特率为115200,1位停止位,无校验位。
2.STM32系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手“,也可自己编程。
3.当上位机给stm32发送“Stop,stm32”后,stm32停止发送。
在这里插入图片描述
把其中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] == '3'&&ucTemp[i-3] == 'm'&&ucTemp[i-4] == 't'&&ucTemp[i-5] == 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值