STM32串口通信

本文介绍了基于寄存器与固件库的STM32编程方式的差异,重点讲解了STM32串口通信的步骤,包括硬件准备和烧录程序。同时,文章还探讨了C语言中不同类型的变量内存地址,以及STM32的堆、栈、全局变量的分配地址。通过示例程序展示了如何利用串口通信验证内存分配。
摘要由CSDN通过智能技术生成

一、基于寄存器与固件库的stm32编程方式的差异

使用固件库,目前比较多的例程是使用固件库编写的。固件库编写方式,特点是简单易于理解,资料多。新手适合用这种方式入门。

使用寄存器,想要深入理解CortexM3内核或是需要为了获得更好的可移植性,学习寄存器编程会比较有帮助。但是从专业的角度上看,寄存器更贴近底层,对外设的工作原理和运行机理会有更深的理解。优点:①具体参数更直观 ②程序运行占用资源少。 缺点:①开发速度慢 ②程序可读性差 ③维护复杂。开库开发方式则正好弥补了寄存器开发的缺点

二、STM32串口通信

1、准备

(1)选择使用野火stm32开发板

使用链接: 野火STM32F103指南者开发板..下载如图压缩包
在这里插入图片描述
(2)用USB线连接STM32开发板和电脑,STM32端连接的 USB转串口这个接口,再打开STM32开关,可以看到红色的小灯亮起。
在这里插入图片描述
(3)BOOT0和BOOT1接地,RXD接A9,TXD接A10,开发板买来默认这样连接。
(4)解压文件,打开CH341SER.EXE,点击安装,显示安装成功即可
在这里插入图片描述
在这里插入图片描述
(5)然后打开串口下载助手mcuisp
在这里插入图片描述
(6)按如下方式配置:①搜索串口,设置波特率 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] == 's'&&ucTemp[i-6] == ' ')
			if(ucTemp[i-7] == 'p'&&ucTemp[i-8] == 'o'&&ucTemp[i-9] == 't'&&ucTemp[i-10] == 's'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值