STM32 Cube MX学习笔记——TOF 高速单线激光雷达 L10_串口中断通信

  • 1. TOF 高速单线激光雷达 L10
  • 2. STM32 Cube MX配置
  • 3.代码配置
  • 4.编译 烧录 显示

1. TOF 高速单线激光雷达 L10


2. STM32 Cube MX配置

1.1因为将数据显示在oled上,按OLED(i2c)配置好(RCC,SYS,IIC)

1.2 usart的配置

Parameter Settings设置不用改和要求一致

打开串口中断

1.3生成文件

3.代码配置

2.1按照OLED(i2c)加入“oled.c,oled.h,asc.h”

2.2串口不方便传参数,所以我通常会定义一些用于串口通信的全局变量

unsigned char UARTx_Rx_Buf[MAX_REC_LENGTH] = {0};
unsigned char UARTx_Rx_flg = 0;
unsigned int  UARTx_Rx_cnt = 0;
unsigned char UARTx_temp[REC_LENGTH] = {0};

由于这些变量也要在main.c文件中使用,跨文件使用,可以在头文件usart.h中做外部声明:

#define REC_LENGTH 1               //一次接受1个数据
#define MAX_REC_LENGTH 1024  extern unsigned char UARTx_Rx_Buf[MAX_REC_LENGTH];//USARx存储接收数据
extern unsigned char UARTx_Rx_flg ;               //USARTx接收完成标志
extern unsigned int  UARTx_Rx_cnt ;               //USARTx接收数据计数器
extern unsigned char UARTx_temp[REC_LENGTH];      //USARTx接收数据缓存


main.c中插入头文件

开启接收中断,oled初始化

HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
//接收中断(使用的usart指针,接收的数据,接收数据大小)
HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
//发送中断(使用的usart指针,发送的数据,发送数据大小)


接收到了指定数量的串口数据(在本例中,指定的数量是1字节),则会执行回调函数

每次处理完串口接收中断以后,会自动关闭中断,如果想循环接收数据,则必须在处理完中断以后,再次开启中断。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//中断回调函数
{   if(huart->Instance==USART2){UARTx_Rx_Buf[UARTx_Rx_cnt]=UARTx_temp[0]; //接收到的数据放入接收数据缓存中UARTx_Rx_cnt++;                              //接收数据计数if(0x0a == UARTx_temp[0]){                 //0x0a=\n作为结束符UARTx_Rx_flg=1;                        //接收完成}HAL_UART_Receive_IT(&huart2,(uint8_t *)UARTx_temp,REC_LENGTH);//再次开启中断}
}


主函数中,实现“接收ASCII数据,oled显示十进制”的功能。如果串口数据接收完成,计数器,标志都恢复初始状态。

if(UARTx_Rx_flg){distance=(UARTx_Rx_Buf[9]-'0')*4096+(UARTx_Rx_Buf[10]-'0')*256+(UARTx_Rx_Buf[11]-'0')*16+(UARTx_Rx_Buf[12]-'0')*1;//计算出数据OLED_ShowNum(0,0,distance,6,16);//OLED显示HAL_Delay(100);for(int i=0;i<UARTx_Rx_cnt;i++){//将存储中的数据清零继续接收UARTx_Rx_Buf[i]=0;}UARTx_Rx_cnt=0;//计数器,标志都恢复初始状态UARTx_Rx_flg=0;}

4.编译 烧录 显示


学习笔记,不断补充…

STM32 Cube MX学习笔记——TOF 高速单线激光雷达 L10(usart)相关推荐

  1. STM32 HAL库学习笔记4-SPI

    STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...

  2. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  3. APPCAN学习笔记001---app高速开发AppCan.cn平台概述

    1.APPCAN学习笔记---app高速开发AppCan.cn平台概述 1. 平台概述 技术qq交流群:JavaDream:251572072 AppCan.cn开发平台是基于HTML5技术的跨平台移 ...

  4. STM32中断回调函数定时器-STM32电控学习笔记06

    STM32中断&定时器-STM32电控学习笔记06 day6:2022/9/24 [中断概述] 在 STM32 中,对信号的处理可以分为轮询方式和中断方式,轮询方式就是不断去访问一个信号的端口 ...

  5. 翻转电平函数实现LED闪烁-STM32电控学习笔记05

    翻转电平函数实现LED闪烁-STM32电控学习笔记05 day5:2022/9/23 [函数介绍] 在前面帖子大致了解了一下HAL_GPIO_WritePin()函数和HAL_Delay()函数的用法 ...

  6. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  7. PWM控制LED亮度(2-呼吸灯)-STM32电控学习笔记10

    PWM控制LED亮度(2-呼吸灯)-STM32电控学习笔记10 day10:2022/9/29 前面学了两三天的PWM了,PWM本身不难理解,至于为啥进度缓慢,还不是这时钟定时器分频值重装载啥的太难理 ...

  8. HAL+Cube MX 学习之PWM

    记录HAL库+Cube MX的学习过程,不定期更新-- 一.PWM's introduction PWM(Pulse width modulation脉冲宽度调制)是一种** 用数字信号控制模拟信号* ...

  9. 【单片机】STM32 最小板 学习笔记

    目录&索引 前言 第一章 前期工作准备 软件获取 STM32 资料 相关下载 硬件准备 第二章 单片机系统介绍 第三章 库函数工程模板建立 第一步,下载固件库,文件分类 第二步,打开 mdk5 ...

最新文章

  1. 2万长文,一文搞懂Kafka
  2. JAVA之获取JavaSwing复选框JCheckBox选中的值(内容)
  3. PJAX初体验(主要是利用HTML5 新增API pushState和replaceState+AJAX)
  4. linux 的scp 命令
  5. 关于残差网络(ResNet)解析
  6. 【今日CV 计算机视觉论文速览 第108期】Tue, 30 Apr 2019
  7. 信息安全产品体系的介绍
  8. Windows 10 下 TeXstudio 深色背景主题的设置方法
  9. SCU - 4572 醉后不知天在水,满船清梦压星河【思维】
  10. Java项目酒店管理系统(java+SSM+Maven+LayUI+mysql)
  11. [转]信息安全相关理论题(三)
  12. navicat连接linux线上MySQL出现2003错误码
  13. HTTPS网页账号密码嗅探
  14. mtkwin10驱动_修复:Win10系统MTK(MediaTek)VCOM USB驱动程序错误
  15. 洛谷P1010(幂次方)
  16. 37个重要交换机术语【转载自微信公众号第一监控】
  17. dalvik启动过程
  18. 非华为电脑安装PCmanager工具实现多屏协同教程
  19. UI设计中插画的重要性
  20. 二合一平板意外下滑,苹果和微软都拯救不了平板了?

热门文章

  1. python-微信小程序的学习
  2. 2019年河南省ACM大学生程序设计竞赛原题
  3. SOA详解微服务与SOA的关系
  4. 初三英语关于计算机的作文,2019年中考英语作文范文三篇
  5. 【vue3】远程组件加载
  6. 高新技术企业认定领域细分有几项
  7. 云计算平台为什么是必需的
  8. Oracle 几种更新(Update语句)查询的方法
  9. centos8 免密登录
  10. JSP-----------简易购物车代码