STM32-超级终端串口控制程序

文章目录

  • 示例程序烧录验证
  • 基于上一节程序修改
  • 烧录验证


杨桃32学习笔记,本文图片文字皆为转述

示例程序烧录验证

STM32-超级终端串口控制程序_第1张图片

使用之前文章讲过的烧录软件烧录结束后,打开超级终端,按下回车弹出指令界面如
下,按照提示可以输入命令进行控制led状态。

STM32-超级终端串口控制程序_第2张图片

基于上一节程序修改

全局变量

函数体内部的变量的作用域仅在该函数内,如果想要在别的文件和函数内调用该变量
就需要定义全局变量。具体方法如下

STM32-超级终端串口控制程序_第3张图片
STM32-超级终端串口控制程序_第4张图片

我们在超级终端输入的命令保存在,接收缓冲数组中,当我们按下回车的时候,程序
就会在数组中查找我们输入的内容

使能串口1中断

因为在串口处理函数当中,对串口接受的内容进行处理。

解读usart.c中实现超级终端控制的函数
STM32-超级终端串口控制程序_第5张图片
STM32-超级终端串口控制程序_第6张图片
修改主函数

#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "buzzer.h"
#include "usart.h"


int main (void){
     //主程序
	RCC_Configuration();
	LED_Init();//LED初始化
	KEY_Init();//按键初始化
	BUZZER_Init();//蜂鸣器初始化
	USART1_Init(115200); //串口初始化,参数中写波特率
	USART1_RX_STA=0xC000; //初始值设为有回车的状态,即显示一次欢迎词
	while(1){
     
		if(USART1_RX_STA&0xC000){
      //如果标志位是0xC000表示收到数据串完成,可以处理。
			if((USART1_RX_STA&0x3FFF)==0){
      //单独的回车键再显示一次欢迎词
				printf("\033[1;47;33m\r\n"); //设置颜色(参考超级终端使用)
				printf(" 1y--开LED1灯      1n--关LED1灯 \r\n");
				printf(" 2y--开LED2灯      2n--关LED2灯 \r\n");
				printf(" 请输入控制指令,按回车键执行! \033[0m\r\n");
			}else if((USART1_RX_STA&0x3FFF)==2 && USART1_RX_BUF[0]=='1' && USART1_RX_BUF[1]=='y'){
      //判断数据是不是2个,第一个数据是不是“1”,第二个是不是“y”
				GPIO_SetBits(LEDPORT,LED1); //LED灯都为高电平(1)
				printf("1y -- LED1灯已经点亮!\r\n");
			}else if((USART1_RX_STA&0x3FFF)==2 && USART1_RX_BUF[0]=='1' && USART1_RX_BUF[1]=='n'){
     
				GPIO_ResetBits(LEDPORT,LED1); LED灯都为低电平(0)
				printf("1n -- LED1灯已经熄灭!\r\n");
			}else if((USART1_RX_STA&0x3FFF)==2 && USART1_RX_BUF[0]=='2' && USART1_RX_BUF[1]=='y'){
     
				GPIO_SetBits(LEDPORT,LED2); //LED灯都为高电平(1)
				printf("2y -- LED2灯已经点亮!\r\n");
			}else if((USART1_RX_STA&0x3FFF)==2 && USART1_RX_BUF[0]=='2' && USART1_RX_BUF[1]=='n'){
     
				GPIO_ResetBits(LEDPORT,LED2); LED灯都为低电平(0)
				printf("2n -- LED2灯已经熄灭!\r\n");
			}else{
      //如果以上都不是,即是错误的指令。
				printf("指令错误!\r\n"); 
			}
			USART1_RX_STA=0; //将串口数据标志位清0
		}
	}
}

STM32-超级终端串口控制程序_第7张图片

烧录验证

STM32-超级终端串口控制程序_第8张图片

你可能感兴趣的:(stm32)