STM32 Cube MX学习笔记——TOF 高速单线激光雷达 L10(usart)
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)相关推荐
- STM32 HAL库学习笔记4-SPI
STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...
- STM32 HAL库学习笔记1-HAL库简介
STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...
- APPCAN学习笔记001---app高速开发AppCan.cn平台概述
1.APPCAN学习笔记---app高速开发AppCan.cn平台概述 1. 平台概述 技术qq交流群:JavaDream:251572072 AppCan.cn开发平台是基于HTML5技术的跨平台移 ...
- STM32中断回调函数定时器-STM32电控学习笔记06
STM32中断&定时器-STM32电控学习笔记06 day6:2022/9/24 [中断概述] 在 STM32 中,对信号的处理可以分为轮询方式和中断方式,轮询方式就是不断去访问一个信号的端口 ...
- 翻转电平函数实现LED闪烁-STM32电控学习笔记05
翻转电平函数实现LED闪烁-STM32电控学习笔记05 day5:2022/9/23 [函数介绍] 在前面帖子大致了解了一下HAL_GPIO_WritePin()函数和HAL_Delay()函数的用法 ...
- STM32 HAL库学习笔记2 HAL库介绍
STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...
- PWM控制LED亮度(2-呼吸灯)-STM32电控学习笔记10
PWM控制LED亮度(2-呼吸灯)-STM32电控学习笔记10 day10:2022/9/29 前面学了两三天的PWM了,PWM本身不难理解,至于为啥进度缓慢,还不是这时钟定时器分频值重装载啥的太难理 ...
- HAL+Cube MX 学习之PWM
记录HAL库+Cube MX的学习过程,不定期更新-- 一.PWM's introduction PWM(Pulse width modulation脉冲宽度调制)是一种** 用数字信号控制模拟信号* ...
- 【单片机】STM32 最小板 学习笔记
目录&索引 前言 第一章 前期工作准备 软件获取 STM32 资料 相关下载 硬件准备 第二章 单片机系统介绍 第三章 库函数工程模板建立 第一步,下载固件库,文件分类 第二步,打开 mdk5 ...
最新文章
- 2万长文,一文搞懂Kafka
- JAVA之获取JavaSwing复选框JCheckBox选中的值(内容)
- PJAX初体验(主要是利用HTML5 新增API pushState和replaceState+AJAX)
- linux 的scp 命令
- 关于残差网络(ResNet)解析
- 【今日CV 计算机视觉论文速览 第108期】Tue, 30 Apr 2019
- 信息安全产品体系的介绍
- Windows 10 下 TeXstudio 深色背景主题的设置方法
- SCU - 4572 醉后不知天在水,满船清梦压星河【思维】
- Java项目酒店管理系统(java+SSM+Maven+LayUI+mysql)
- [转]信息安全相关理论题(三)
- navicat连接linux线上MySQL出现2003错误码
- HTTPS网页账号密码嗅探
- mtkwin10驱动_修复:Win10系统MTK(MediaTek)VCOM USB驱动程序错误
- 洛谷P1010(幂次方)
- 37个重要交换机术语【转载自微信公众号第一监控】
- dalvik启动过程
- 非华为电脑安装PCmanager工具实现多屏协同教程
- UI设计中插画的重要性
- 二合一平板意外下滑,苹果和微软都拯救不了平板了?