草庐IT

HAL_StatusTypeDef

全部标签

stm32使用HAL库配置串口中断收发数据(保姆级教程)

前言最近在学习使用hal库,之前都是用标准库来写32代码,所以发个帖子记录一下学习过程,同时也希望能帮助到一些也在学习HAL库的同学。接下来进入正题一、串口中断是什么?串口中断是指当单片机收到一个串口数据时,单片机会产生一个中断信号,通知处理器中断服务程序去处理这个接收到的数据。在中断服务程序中,我们可以读取串口接收缓冲区中的数据,并根据具体的应用场景进行处理,例如存储、显示、计算等操作。串口中断一般通过使用串口的中断接收功能实现。当有新的数据到达串口时,单片机会产生一个中断请求,触发中断服务程序。中断服务程序在处理完接收到的数据后,可以根据具体的应用需求采取相应的处理措施。相比于轮询方式,采

基于STM32的TFT-LCD触摸屏实验(HAL库)

        前言:TFT-LCD作为显示终端必不可少的设备,目前大部分的TFT-LCD都具备了触摸功能。无论是在MCU亦或是SOC(MPU)中,触摸屏的使用都是十分常见的。触摸屏LCD通常分为2种:电阻触摸屏,电容触摸屏。两种不同的触摸屏LCD其编程与使用也存在一定的差别,本文将详细介绍电阻触摸屏与电容触摸屏的特点,并就电阻触摸屏进行代码编程讲解——HAL库。(文章结尾会有代码开源)        实验硬件:STM32F103ZET6;2.4寸TFT-LCD-电阻式触摸屏(240×320)        硬件实物图:        效果图:引脚连接:LCD显示引脚:VCC-->3.3VGN

STM32(HAL库)——光电编码器、M/T法测量电机转速

目录一编码器二电机测试的三种方法三STM32CubeMx配置四程序编写五实验结果一编码器常见的用于电机测速的编码器有霍尔编码器和光电编码器两种。两者测速的基本原理不同,但都是输出两路相位差90°的脉冲信号。这里以光电编码器为例介绍一下测速原理。光电编码器是由光源、光码盘和光敏元件组成。光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速。输出波形:方向:A、B相脉冲波形相差90°,A相位在前表示顺时针旋转,B相在前

STM32超声波避障小车(舵机云台+超声波/stm32f103/HAL/Cube)

系列文章目录一、小车1.0——基本蓝牙小车(仅蓝牙遥控小车运动方向,本篇)二、小车2.0——蓝牙小车PLUS(可以蓝牙控制方向+蓝牙直接调节车速)三、小车3.0——避障小车(超声波+舵机云台)四、小车4.0——无线手柄方向感知操控小车(mpu6050+双蓝牙透传)五、双轮自平衡小车(HAL库版)——点此学习吧文章目录系列文章目录前言一、前期准备二、CubeMX中的设置2.1.时钟树的配置2.2.TIM的设置2.2.1.TIM2设置2.2.2.TIM3设置2.2.3.TIM4设置2.3.INx分配的GPIO参数配置2.3.1.INx设置:2.3.2.Trig设置:三、代码总体项目代码结构3.1.

STM32 HAL库 中断处理中使用延时函数(HAL_Delay)

问题描述今天在学习STM32HAL库外部中断,使用的是按键触发外部中断,想在外部中断里面写一个按键消抖,也就是在HAL库外部中断处理函数中使用了HAL_Delay()函数,后来经过实验,在外部中断处理函数(voidEXTI1_IRQHandler(void))和中断回调函数(voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin))里面都不能使用HAL_Delay(),使用就会卡死在延时这一步;经过分析,也参考了别人的一些参考资料,发现网上的写的比较乱一点,自己总结了一下,以我理解的角度分析一下这些问题,(如有质疑之处,还请各位大佬批评指正);首先详细描述一下这

安卓HAL开发指南

安卓HAL开发指南1、介绍HIDL的全称是HALinterfacedefinitionlanguage(硬件抽象层接口定义语言),在此之前Android有AIDL,架构在Androidbinder之上,用来定义Android基于Binder通信的Client与Service之间的接口。HIDL也是类似的作用,只不过定义的是AndroidFramework与AndroidHAL实现之间的接口。2、实现方式2.1旧版传统HAL层Android7.x和更早的版本中,hal模块接口被定义为简单的C头文件。HAL的实现驻留在客户端的进程中(在很多情况下它是系统服务器),这导致了安全性和稳定性问题。版本控

【STM32F4系列】【HAL库】【模块介绍】MPU6050设置与DMP库使用

文章目录概述硬件设计软件设计I2C通信MPU6050设置DMP设置注意成品概述MPU6050是一个3轴陀螺仪(测角加速度)和3轴加速度计(测量线加速度)的测量芯片内部自带运算单元(DMP),可以输出经姿态融合计算后的四元数(一种表示旋转的方法)而且MPU6050的价格较低(10r以下),常被用于精度不高的场合作为姿态感知的芯片如经典项目平衡车,某年电赛题目风力摆等MPU6050可以获取的数据为3轴的角加速度和三轴加速度,为了得到平常使用的欧拉角或者四元数,需要根据这些数据进行姿态解算可以在单片机内部进行姿态解算,如使用卡尔曼滤波但是这样会占用大量单片机资源,因此常用MPU6050自带的运算单元

STM32系列(HAL库)——F103C8T6通过MPU6050+DMP姿态解算读取角度及温度

1.软件准备(1)编程平台:Keil5(2)CubeMX(3)XCOM(串口调试助手)(4)文件资料包:点击跳转下载2.硬件准备(1)一个捡来的MPU6050(2)F1的板子,本例使用经典F103C8T6(3)ST-link 下载器(4)USB-TTL模块(5)杜邦线若干3.模块资料(1)模块简介:        MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP:Digit

STM32系列(HAL库)——F103C8T6通过MPU6050+DMP姿态解算读取角度及温度

1.软件准备(1)编程平台:Keil5(2)CubeMX(3)XCOM(串口调试助手)(4)文件资料包:点击跳转下载2.硬件准备(1)一个捡来的MPU6050(2)F1的板子,本例使用经典F103C8T6(3)ST-link 下载器(4)USB-TTL模块(5)杜邦线若干3.模块资料(1)模块简介:        MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP:Digit

手把手教你开发stm32——ADC(基于hal库)

目录:1.stm32-ADC概述ADC简介2.ADC的功能框图2.1.电压输入范围2.2.输入通道2.3.转换顺序2.4.转换时钟来源2.5.相关数据寄存器2.6.相关标志位和中断2.7.触发源3.ADC的工作模式3.1.单次转换非扫描模式3.2.连续转换非扫描模式3.3.单次转换扫描模式3.4.连续转换扫描模式4.单通道采集实例4.1.cubemx具体配置4.2.具体代码实现4.2.1.轮询方式4.2.2.中断方式5.多通道采集实例6.ADC相关寄存器6.1.ADC状态寄存器(ADC_SR)6.2.ADC控制寄存器1(ADC_CR1)6.3.ADC控制寄存器2(ADC_CR2)6.4.ADC