【前言】
💦💦在之前的博客中已经介绍过中断的相关内容,其实大家应该也发现了,在使用STM32CubeMX
之后,对于写程序的我们就很方便,不用去处理寄存器,中断响应函数这些,在配置好之后,只需要调用中断回调函数
即可。在本篇博客中思路也是这样,下面随着答主的思路去了解一下中断实现通信
!💦
目录
一、总体概述
1.问题概述
💦问题Ⅰ💦采用串口中断方式完成通信,要求如下:
(1)当stm32接收到字符“s”
时,停止持续发送“hello windows!”;
(2)当接收到字符“t”
时,持续发送“hello windows!”;
💦问题Ⅱ💦采用串口中断方式完成通信,要求如下:
(1)当stm32接收到字符“stop stm32!”
时,停止持续发送“hello windows!”;
(2)当接收到字符“go stm32!”
时,持续发送“hello windows!”
(提示:要将接收到的连续字符保存到一个字符数组里,进行判别匹配。写一个接收字符串的函数。)
2.问题分析
(1)实验工具
STM32CubeMx、STM32F103C8T6最小核心板、USB转TTL、杜邦线、Flymcu、串口助手
(2)整体流程
在前言中已经介绍,因为在编写代码时有一个比较好的工具——STM32CubeMx
,帮我们完成了基础代码的编写,之后只需要写一下中断回调函数,中断通信就完成了。大致步骤如下:
① 使用Cubemx
完成环境的配置 ;
② 使用MDK
打开第一步配置好的代码,进行代码编写;
③ 编译成功后,利用Flymcu
进行烧录上板测试;
④ 实物观察以及记录。
二、问题Ⅰ解答
1.Cubemx配置环境
(1) 创建新工程
,选择芯片
(2) 配置“RCC”。点击“RCC
”- “HSE
”-选择“Crystal/Ceramic Resonator
”
(3) 点击“SYS
”-Debug选择“Serial Ware
”
(4) 配置串口USART1
,通信方式选择“异步通信
” ,最后一定要记得开中断使能
(5) 配置完成后,生成代码
2.MDK编写代码
(1)定义变量
在后续pc机会收到串口发送的数据,在main函数前定义这些数据,代码如下
:
volatile char c;//指令 s:停止 t:开始
char message[]="Hello Windows\n";//输出信息
char tips[]="未知指令\n";//提示1
char tips1[]="开始发送数据.....\n";//提示2
char tips2[]="停止发送数据......\n";//提示3
int flag=0;//标志 0:停止发送 1.开始发送
(2)编写main函数内的内容
根据题目要求,当收到“t”
时,串口一直发送“Hello Windows!
”,因此可以将输出放在while()循