单片机与PC机的交流———基于STM32的串口通信

前言:

本文主要利用stm32芯片,完成单片机与计算机的通信过程,单片机不停给计算机发送信息,计算机在串口调试助手发送停止指令之后,单片机停止发送。通过这个小实验学习窗口通信

一、串口通信要求

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

二、串口通信准备

1、硬件准备

  • 我采用的是DAP下载器
    在这里插入图片描述

  • 开发板采用的野火stm32指南者系列
    在这里插入图片描述

2、软件准备

主函数:

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include <stdlib.h>
int num=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); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
	uart_init(115200);	 //´®¿Ú³õʼ»¯Îª115200
 	LED_Init();			     //LED¶Ë¿Ú³õʼ»¯
	KEY_Init();          //³õʼ»¯Óë°´¼üÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
	
 	while(num)
	{
		if(USART_RX_STA&0x8000)
		{		   
			len=USART_RX_STA&0x3fff;//µÃµ½´Ë´Î½ÓÊÕµ½µÄÊý¾Ý³¤¶È
			printf("\r\nHELLO Livechen:\r\n\r\n");
			for(t=0;t<len&&USART_RX_BUF[t]==stop[t];num++,t++)
				{if (num>=10) {num=0;break;}}
				
				
			for(t=0;t<len;t++)
			{ 
				USART_SendData(USART1, USART_RX_BUF[t]);//Ïò´®¿Ú1·¢ËÍÊý¾Ý
				
				while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//µÈ´ý·¢ËͽáÊø
			}
			printf("\r\n\r\n");//²åÈë»»ÐÐ
			USART_RX_STA=0;
		}
		
		else
		{
			times++;
			if(times%500==0)		
				printf("HELLO Livechen\r\n");				
			if(times%200==0)
        printf("HELLO Livechen\n");
			if(times%30==0)LED0=!LED0;//ÉÁ˸LED,ÌáʾϵͳÕýÔÚÔËÐÐ.
			delay_ms(10);   
		}
	}	 
 }

三、下载程序进入STM32

1、下载之前相关配置

  • 这里我用的DAP下载器,所以2处选择DAP
    在这里插入图片描述
  • 点击Setting,按照下图依次配置即可(前提是你和博主的下载器和板子类型相同)
    在这里插入图片描述
    在这里插入图片描述

2、下载

编译通过后点击下载
在这里插入图片描述

四、最终效果展示

在这里插入图片描述

总结:

实验过后对于串口通信的过程有了比较清楚的认识,实验中遇到了许多困难,最终都找到了解决的方法,成功完成了通信。博主也是第一次接触串口通信,博文中难免有许多不足的地方,若大家提出来博主会及时改正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值