STM32下的USART窗口通讯简要学习

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

寄存器:需要深入掌握芯片,需要更多的时间;

固件器:简单易上手,利用已有的芯片和资料依瓢画葫芦编程;

二、STM32的USART窗口通讯程序

本次学习是串口异步通讯,没有时钟信号,所以需要约定波特率解码,这里我们设置为115200,1位停止位,无校验位。

新建工程,在工程中添加系统已有的文件:
startup_stm32f10x_hd.s
再手动添加两个文件:
stm32f10x.h
main.c

链接: https://ebf-products.readthedocs.io/zh_CN/latest/.

在这里插入图片描述
完成之后,在进行一些必要的选项勾选:

在这里插入图片描述
按照以下文件进行配置:

在这里插入图片描述
按照下图进行代码修改:

在这里插入图片描述
代码如下:

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')
			{
				printf("收 到!");
        while(1);
			}
	}
	i++;
}

在这里插入图片描述
代码如下:

#include "stm32f10x.h"
#include "bsp_usart.h"


void delay(uint32_t count)
{
	while(count--);
}
int main(void)
{	
  USART_Config();
  while(1)
	{	
		printf("hello windows!\n");
		delay(5000000);
	}	
}

打开串口调试,科技端口未显示:

在这里插入图片描述

安装端口驱动:

在这里插入图片描述
按照以下步骤调试:

在这里插入图片描述
再打开端口调试助手:

在这里插入图片描述
可见端口显示安装成功

在这里插入图片描述
结果如下:

在这里插入图片描述

三、重温C语言程序里全局变量、局部变量、堆、栈等概念

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值