STM32实现串口通讯

本文详细介绍了STM32基于寄存器与固件库的串口通讯程序,包括USART配置、代码实现及.hex文件生成与烧录。同时,探讨了C语言中的全局变量、局部变量、堆和栈的概念,并通过实验分析了STM32中堆栈和全局变量的地址分配。
摘要由CSDN通过智能技术生成

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

(1)、固件库:特点是简单易上手,现目前比较多的例程是使用固件库编写的。固件库编写方式简单并且相比寄存器他的资料更多,所以这种方式适合新手。

(2)、寄存器:想要深入理解CortexM3内核或者是需要为了获得更好的可移植性,学习寄存器编程会比较有帮助。并且从专业的角度来看,寄存器更贴近底层,对外设的工作原理和运行机理会有更深的理解,所以这种方式适合进阶深入学习的人群。

二、STM32的USART窗口通讯程序

1、任务要求

(1)、设置波特率为115200,1位停止位,无校验位。
(2)、STM32系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手“,也可自己编程。
(3)、当上位机给stm32发送“Stop,stm32”后,stm32停止发送。

2、生成.hex文件

1、按如图路径打开指定文件
在这里插入图片描述

在这里插入图片描述
2、根据需要修改代码
(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] == 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值