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

STM32之串口通信程序

  • 前言:
  • 一、串口通信要求
  • 二、串口通信准备
    • 1、硬件准备
    • 2、软件准备
  • 三、下载程序进入STM32
    • 1、下载之前相关配置
    • 2、下载
  • 四、最终效果展示
  • 总结:

前言:

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

一、串口通信要求

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

二、串口通信准备

1、硬件准备

  • 我采用的是DAP下载器
    单片机与PC机的交流———基于STM32的串口通信_第1张图片

  • 开发板采用的野火stm32指南者系列
    单片机与PC机的交流———基于STM32的串口通信_第2张图片

2、软件准备

主函数:

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include 
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
    单片机与PC机的交流———基于STM32的串口通信_第3张图片
  • 点击Setting,按照下图依次配置即可(前提是你和博主的下载器和板子类型相同)
    单片机与PC机的交流———基于STM32的串口通信_第4张图片
    单片机与PC机的交流———基于STM32的串口通信_第5张图片

2、下载

编译通过后点击下载

四、最终效果展示

总结:

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

你可能感兴趣的:(嵌入式开发,stm32)