实现简单的通信协议(STM32 F411RET6开发版)
/* 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开发版)相关推荐
- 串口重定向(STM32 F411RET6开发版)
实验器材:STM32 F411RET6开发版 任务目标:实现串口重定向. 任务内容:编写简单的控制台(console)程序,利用串口重定向功能实现对Nucleo开发板上用户指示灯LD2的控制. 一.C ...
- 野火洋桃STM32开发版学习指导完整版
该文章是我历时一个月整理总结而成,专门针对想要通过野火&洋桃STM32开发板入门stm32的读者.由于csdn编辑限制,该学习指导只包含文字信息.如需查看含图片的完整版可进入我的博客下载页.完 ...
- 《STM32库开发实战指南:基于STM32F103(第2版)》——2.1节仿真器简介
本节书摘来自华章社区<STM32库开发实战指南:基于STM32F103(第2版)>一书中的第2章,第2.1节仿真器简介,作者刘火良 杨森,更多章节内容可以访问云栖社区"华章社区& ...
- 红米手机3S 3X简单卡刷开发版获得ROOT权限的方法
小米的机器不同手机型号一般小米论坛都提供两个不同的系统,即分别是稳定版和开发版,稳定版没有提供root权限管理,开发版中就支持了root权限,很多情况下我们需要使用的一些功能强大的APP,都需要在ro ...
- 野火开发版屏幕_盘一盘那些年我们常用的物联网开发板!
来源:华为云社区,作者:星辰27,直接来源:华为开发者社区 众所周知开发板是物联网架构中的感知层智能设备,这类设备通常有芯片.通信模组.以及操作系统组成.当然不同的开发版在功能以及使用上可能存在着一定 ...
- 软件集成:Simulink与STM32联合开发
本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个STM32工程中去编译软件.最后将软件下载到STM32F407中,通过串口输出Simulink计算的结果. 阅读本文需要有一 ...
- 最简单DIY基于STM32单片机的蓝牙智能小车设计方案
STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 文章目录 STM32库函数开发系列文 ...
- 最简单DIY基于STM32的远程控制电脑系统②(无线遥杆+按键控制)
STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...
- ChibiOS系列:二、在STM32上开发:介绍ChibiStudio
本文翻译自:http://www.playembedded.org/blog/developing-stm32-chibistudio/ 在STM32上开发:介绍ChibiStudio 发表于 201 ...
最新文章
- metaSPAdes:新型多功能宏基因组拼接工具
- 文本空格_别敲空格了,Word文本对齐谨记这2招,好用到炸裂!【Word教程】
- Weekly Challenges - Week 11
- android 日期对话框,Android日期选择器对话框DatePickerDialog使用详解
- java封装264成flv,将H.264封装为FLV格式-Go语言中文社区
- SAP License:SAP-Coding Block
- 工作中常用的Linux命令(不断更新中)
- [ICLR18]联合句法和词汇学习的神经语言模型
- 故障树分析法(FTA)
- 微信对账单 java_微信下载对账单
- SSM框架整合仿QQ空间
- 【JavaSE】接口
- Python错误日志
- 基于贝叶斯分类器的手写字判别
- golang中json.Number妙用
- 【历史上的今天】10 月 24 日:1024 程序员节;中文维基百科上线;苹果发布 iPad mini
- html动态加载多级菜单,请问iview中动态加载3级菜单的json数据,非常感谢
- 如何使用华为云快速搭建个人博客
- Mysql执行监控工具
- 将Excel中一个表格的数据关联到另一个表格