stm32串口通讯

本文介绍了基于寄存器和固件库的STM32 LED流水灯编程差异,详细阐述了STM32 USART通信程序的实现步骤,包括硬件连接、程序烧录和调试验证。同时,文章通过Ubuntu和Keil系统,重温了C语言中的全局变量、局部变量、堆和栈的概念,并通过编程验证其工作原理。最后,通过串口将信息发送至上位机进行验证。
摘要由CSDN通过智能技术生成

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

基于寄存器:为了获得更好的可移植性,学习寄存器编程会比较好。寄存器更贴近底层,可以更好的理解外设的工作原理。
基于固件库:比较简单,易于理解,可供我们参考的资料也比较多,比较适合初学者。

二、STM32的USART窗口通讯程序

1、将核心板按照原理图连接好。
原理图如下:
在这里插入图片描述
2、烧录程序
(1)打开下载好的keil工程
在这里插入图片描述
在这里插入图片描述
(这张图片下面是广告,我就擦除了。)
(2)打开工程之后,就把自己连接好的核心板连接到电脑上,打开设备管理器
在这里插入图片描述
(3)在keil软件中进行编译
在这里插入图片描述
(4)调整设置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(5)下面进行烧录,完成后如图
在这里插入图片描述

(6)打开野火多功能调试助手,进行验证
在这里插入图片描述
备注:相关代码(main函数部分)

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include <stdlib.h>
int hcr=1;

 int main(void)
 {
    
    
    
  char stop[]={
   'S','t','o','p',',','s','t','m','3','2'};
 	u16 t;  
	u16 len;	
	u16 times=0;
	
	delay_init();	    	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	uart_init(115200);	
 	LED_Init();			   
	KEY_Init();         
	
 	while(hcr)
	{
   
		if(USART_RX_STA&0x8000)
		{
   		   
			len=USART_RX_STA&0x3fff;
			printf("\r\nhello windows!:\r\n\r\n");
			for(t=0;t<len&&USART_RX_BUF[t]==stop[t];hcr++,t++)
				{
   if (hcr>=10) {
   hcr=0;break;}}
				
				
			for(t=0;t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值