基于STM32F1的超级终端串口控制程序思路分析(洋桃派M1)

一、准备
  1. 洋桃电子 M1 核心板;
  2. 用户程序中的“1-2-11-超级终端串口控制程序”;
  3. HyperTerminal 超级终端软件。
二、业务说明
  1. 需求说明:
    打开超级终端软件,连接对应的 COM 口,按下键盘上回车键之后出现操作提示菜单:

按照菜单提示输入相应的指令,超级终端上返回对应的字符串,STM32 的 LED 灯作出相应的反应,如图所示(这里省略了单片机的状态照片):

如果输入了错误的指令,超级终端会显示“指令错误!”,STM32 不会作出反应,如下图所示:

三、业务逻辑分析
  1. 总体的思路是 STM32 对输入的指令进行识别,根据输入指令的不同 STM32 给出不同的反应;
  2. 代码中可定义一个全局的 16 位串口接收状态变量(USART1_RX_STA),根据这个值判断什么时候接收完成以及接收数据的数量是多少;
  3. 全局变量的高两位用来判断是否接收到0x0d0x0a(键盘上的回车)。当接收到 0x0d时 USART1_RX_STA 变量第 15 位置 1(即USART1_RX_STA|=0x4000;),当接收到0x0a时,USART1_RX_STA 变量第 16 位置 1(即USART1_RX_STA|=0x8000;);
  4. 程序中设置将接收到的超级终端发送来数据放在数组USART1_RX_BUF中,该数组最大的长度是 200,读到0x0d0x0a证明数据接收结束,只有当 USART1_RX_STA & 0xC000为真时才能执行 main 函数中的while(1)循环中的代码,进而 STM32 才会做出响应;
  5. 通过递增全局变量后 14 位的值,可以将接收到的数据放在数组中,当该值的大小超过数组最大接收长度时,该全局变量将清零,重新计数;
  6. main 函数将全局变量 USART1_RX_STA 的初始值设置为0xC000,以便按下回车后可以直接输出按键提示命令;
  7. 程序对单片机执行一次操作后,要记得将全局变量 USART1_RX_STA 清零,以便下一次判断超级终端的输入。

上述的操作整理成流程图,如下所示:



愿余生,不负岁月,不负自己。
喜欢就点个赞吧
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐