/* USER CODE BEGIN PV */
uint8_t  RxBuffer[LENGEH];
volatile uint8_t  RxFlag = 0;
uint8_t  ErrFlag = 0;
/* USER CODE END PV */

实验器材:STM32 F411RET6开发版

任务目标:实现简单的通信协议。

任务内容:PC按照自定义的通信协议发送指令控制Nucleo开发板的指示灯LD2。

一、CubeMX配置

关于CubeMX配置参考http://t.csdn.cn/gGp3x,相同设置部分不再赘述

3.3 Connectivity 配置

在NVIC Settings下勾选“USART2 global interrupt”

​  二 Cube IDE程序编写

关于Cube IDE中添加头文件及串口重定向同http://t.csdn.cn/gGp3x中1/6完全一致

1. 进行宏定义

/* USER CODE BEGIN PD */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#define GETCHAR_PROTOTYPE int __io_getchar(FILE *f)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch,FILE *f)
#define GETCHAR_PROTOTYPE int fgetc(FILE *f)
#endif#define LENGEH  4
/* USER CODE END PD */

2.定义自变量

/* USER CODE BEGIN PV */
uint8_t  RxBuffer[LENGEH];
volatile uint8_t  RxFlag = 0;
uint8_t  ErrFlag = 0;
/* USER CODE END PV */

3.发送提示信息

  /* USER CODE BEGIN 2 */printf ("/*******Communication Protocol *******\r\n");printf ("Please enter instruction:\r\n");printf ("Head->0xaa  Device->0x01  Operation->0x00/0x01  Tail->0x55.\r\n");HAL_UART_Receive_IT(&huart2, (uint8_t *)RxBuffer, LENGEH);/* USER CODE END 2 */

4.while 循环程序

    /* USER CODE BEGIN 3 */if(RxFlag){RxFlag = 0;if(RxBuffer[0]==0xaa && RxBuffer[3]==0x55){if(RxBuffer[1]==0x01){if(RxBuffer[2]==0x00){HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);printf ("LD2 is close!\r\n");}else if(RxBuffer[2]==0x01){HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);printf ("LD2 is open!\r\n");}else{ErrFlag = 1;}}else{ErrFlag = 1;}}else{ErrFlag = 1;}if(ErrFlag){printf ("Communication Error!\r\n");}ErrFlag = 0;RxBuffer[0] = 0;RxBuffer[1] = 0;RxBuffer[2] = 0;RxBuffer[3] = 0;}}/* USER CODE END 3 */

5.撰写回调函数

/* USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART2){RxFlag = 1;HAL_UART_Receive_IT(&huart2, (uint8_t *)RxBuffer, LENGEH);}
}
/* USER CODE END 4 */

6.实验结果

实现简单的通信协议(STM32 F411RET6开发版)相关推荐

  1. 串口重定向(STM32 F411RET6开发版)

    实验器材:STM32 F411RET6开发版 任务目标:实现串口重定向. 任务内容:编写简单的控制台(console)程序,利用串口重定向功能实现对Nucleo开发板上用户指示灯LD2的控制. 一.C ...

  2. 野火洋桃STM32开发版学习指导完整版

    该文章是我历时一个月整理总结而成,专门针对想要通过野火&洋桃STM32开发板入门stm32的读者.由于csdn编辑限制,该学习指导只包含文字信息.如需查看含图片的完整版可进入我的博客下载页.完 ...

  3. 《STM32库开发实战指南:基于STM32F103(第2版)》——2.1节仿真器简介

    本节书摘来自华章社区<STM32库开发实战指南:基于STM32F103(第2版)>一书中的第2章,第2.1节仿真器简介,作者刘火良 杨森,更多章节内容可以访问云栖社区"华章社区& ...

  4. 红米手机3S 3X简单卡刷开发版获得ROOT权限的方法

    小米的机器不同手机型号一般小米论坛都提供两个不同的系统,即分别是稳定版和开发版,稳定版没有提供root权限管理,开发版中就支持了root权限,很多情况下我们需要使用的一些功能强大的APP,都需要在ro ...

  5. 野火开发版屏幕_盘一盘那些年我们常用的物联网开发板!

    来源:华为云社区,作者:星辰27,直接来源:华为开发者社区 众所周知开发板是物联网架构中的感知层智能设备,这类设备通常有芯片.通信模组.以及操作系统组成.当然不同的开发版在功能以及使用上可能存在着一定 ...

  6. 软件集成:Simulink与STM32联合开发

    本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个STM32工程中去编译软件.最后将软件下载到STM32F407中,通过串口输出Simulink计算的结果. 阅读本文需要有一 ...

  7. 最简单DIY基于STM32单片机的蓝牙智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 文章目录 STM32库函数开发系列文 ...

  8. 最简单DIY基于STM32的远程控制电脑系统②(无线遥杆+按键控制)

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  9. ChibiOS系列:二、在STM32上开发:介绍ChibiStudio

    本文翻译自:http://www.playembedded.org/blog/developing-stm32-chibistudio/ 在STM32上开发:介绍ChibiStudio 发表于 201 ...

最新文章

  1. metaSPAdes:新型多功能宏基因组拼接工具
  2. 文本空格_别敲空格了,Word文本对齐谨记这2招,好用到炸裂!【Word教程】
  3. Weekly Challenges - Week 11
  4. android 日期对话框,Android日期选择器对话框DatePickerDialog使用详解
  5. java封装264成flv,将H.264封装为FLV格式-Go语言中文社区
  6. SAP License:SAP-Coding Block
  7. 工作中常用的Linux命令(不断更新中)
  8. [ICLR18]联合句法和词汇学习的神经语言模型
  9. 故障树分析法(FTA)
  10. 微信对账单 java_微信下载对账单
  11. SSM框架整合仿QQ空间
  12. 【JavaSE】接口
  13. Python错误日志
  14. 基于贝叶斯分类器的手写字判别
  15. golang中json.Number妙用
  16. 【历史上的今天】10 月 24 日:1024 程序员节;中文维基百科上线;苹果发布 iPad mini
  17. html动态加载多级菜单,请问iview中动态加载3级菜单的json数据,非常感谢
  18. 如何使用华为云快速搭建个人博客
  19. Mysql执行监控工具
  20. 将Excel中一个表格的数据关联到另一个表格

热门文章

  1. led 驱动: 心跳灯
  2. linux之sed命令详解
  3. LTE:PHICH物理层处理过程及资源映射
  4. 简单C程序示例及分析
  5. 极客日报:曝OPPO给离职员工补发年终奖,此前遭克扣;7 亿条领英用户数据被出售;Android Studio 4.2.2 发布
  6. 基于51单片机的篮球计分器
  7. 打成jar包 在命令行下执行java工程
  8. CsvWriteramp;amp;CsvReader
  9. fect:基于面板数据的因果推断(上)
  10. 关于澳洲国立大学雅思成绩的反思