基于STM32F1的超级终端串口控制程序思路分析

基于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 清零,以便下一次判断超级终端的输入。

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



愿余生,不负岁月,不负自己。
喜欢就点个赞吧
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值