STM32串口通讯

本文探讨了基于寄存器与固件库在STM32 LED流水灯编程的区别,介绍了STM32的USART通信程序配置及验证过程。同时,文章详细阐述了C程序中变量的地址空间,包括栈、堆、全局变量的分配,并通过实例展示了STM32中不同类型的变量地址变化。

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

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

两个使用的角度不同:
固件库的特点就是简单、易于理解、资料多,等有一定的基础再用寄存器。
寄存器更贴近底层,对外设的工作原理和运行机理会有更深的理解。

二、STM32的USART窗口通讯程序

用usb线把stm32开发板和电脑相连接,stm32端连接的 ‘usb转串口’这个接口,再打开stm32开关
在这里插入图片描述
连接过后打开CH341SER.EXE,点击安装
在这里插入图片描述
在野火资料包里下载野火串口调试助手,位置如下:
在这里插入图片描述
下载完成后解压打开如下软件:
在这里插入图片描述

此时显示设置串行口调试设置波特率为115200,1位停止位,无校验位如下:
在这里插入图片描述
串口通信的验证,打开官方资料库中的文件:
在这里插入图片描述

打开keil5,需要修改具体程序代码,修改后的源文件代码如下:
(1)修改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个

红包金额最低5元

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

抵扣说明:

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

余额充值