草庐IT

HAL_StatusTypeDef

全部标签

U8g2库的STM32硬件SPI(DMA)移植教程(HAL、OLED显示、四线SPI、DMA)

U8g2库的STM32硬件SPI(DMA)移植教程U8g2库的STM32硬件SPI移植教程(HAL、OLED显示、四线SPI)前言U8g2简介U8g2是什么U8g2支持的显示控制器U8g2的优势CubexMX的配置RCC配置外部高速晶振(精度更高)——HSE:SYS配置:Debug设置成SerialWire(否则可能导致芯片自锁):时钟树配置:SPI1配置半双工(全双工):作为OLED的通讯方式:(注意这里的配置)DMA配置:工程配置:U8g2移植准备U8g2库文件精简U8g2库文件去掉csrc文件夹中无用的驱动文件精简u8g2_d_setup.c(注意不是u8x8_setup.c)精简u8g

STM32 Cube MX 之hal库软件模拟IIC 可直接移植使用

此为软件模拟IIC,可以直接移植到HAL库使用。.h文件需要自己做函数声明这里就不再放出,如有问题大家可以讨论。使用的时候只需要更改SDA和SCL引脚的宏定义就可以移植使用,当然IIC协议其实就是根据IIC的时序图编写代码,主要内容就是包括开始信号,停止信号以及发送数据的格式、接收数据和数据的应答。此IIC代码可以供所有的IIC模块使用,包括IIC必须要的几个基本功能代码中都已经给出。下面开始来介绍IIC协议。IIC协议具体内容写数据:主机给从机发从机只收SDA为输出模式读数据:从机给主机发主机收SDA为输入模式IIC具体内容:(只规定了开始信号停止信号8位数据(发8位收一位ACK)ACK应答

【STM32】【HAL库】定时器编码器模式测速

目录概述HAL设置 定时器的编码器模式定时器设置 常用函数代码概述电机AB相增量型编码器的介绍和解码方法在这里介绍过了电机编码器https://blog.csdn.net/m0_57585228/article/details/125791283测速可以使用外部中断进行脉冲计数很多型号的单片机中有专门的电路来计算脉冲的速度和方向,也就是定时器的编码器模式因为是硬件计数,所以计数频率可以很高,性能比软件来的好,使用也比较方便但是需要连接到指定的GPIO这里以常见的4倍频测速为例子进行设置HAL设置要开启:定时器的编码器模式定时器中断一个周期性的定时器及中断 定时器的编码器模式开启编码器模式 编码

STM32 使用HAL库实现微秒级长延时

STM32使用HAL库实现微秒级长延时背景定时器初始化主程序中的设计背景STM32HAL库中有一个延时函数HAL_Delay(),可以实现毫秒级的延时,能够满足一般延时需求。在有些场合下,我们需要更精准的延时,同时可能会有较长时间的延时,需要对定时器进行一些特殊的设计。定时器初始化定时器分频为1MHz,计数方式设置为向上计数//定时器2初始化函数voidMX_TIM2_Init(void){//部分代码略htim2.Instance=TIM2;htim2.Init.Prescaler=71;//根据定时器2的频率进行分频htim2.Init.CounterMode=TIM_COUNTERMOD

STM32-HAL库串口DMA空闲中断的正确使用方式+解析SBUS信号

STM32-HAL库串口DMA空闲中断的正确使用方式+解析SBUS信号一.问题描述二.方法一——使用HAL_UART_Receive_DMA三.方法二——使用HAL_UARTEx_ReceiveToIdle_DMA四.方法三——使用HAL_UARTEx_ReceiveToIdle_IT(不使用DMA)五.总结一.问题描述能够点进这篇文章的小伙伴肯定是对STM32串口DMA空闲中断接收数据感兴趣的啦,今天用这一功能实现串口解析航模遥控器sbus信号时,查阅了很多网友发布的文章(勤劳的搬运工~),包括自己之前写过一篇博客STM32_HAL库_CubeMx串口DMA通信(DMA发送+DMA空闲接收不

STM32cubeIDE HAL库中断服务函数解读

以stm32f103为例在开启一个中断后,首先会在stm32f1xx_it.c找到自动生成的中断处理函数,这里是TIM1产生的定时器中断:​voidTIM1_UP_IRQHandler(void){/*USERCODEBEGINTIM1_UP_IRQn0*//*USERCODEENDTIM1_UP_IRQn0*/HAL_TIM_IRQHandler(&htim1);/*USERCODEBEGINTIM1_UP_IRQn1*//*USERCODEENDTIM1_UP_IRQn1*/}​ 这个函数又调用了stm32f1xx_hal_tim.c中的HAL_TIM_IRQHandler(&htim1)

HAL库配置通用定时器TIM触发ADC采样,然后DMA搬运到内存空间。

ADC+TIM+DMA1.简介HAL库配置通用定时器TIM触发ADC采样,然后DMA搬运到内存空间。MCU为STM32F429ADC的触发可以配置为外部触发转换支持定时器作为触发源,定时器的输出也可以不配置GPIO引脚,专门选一个输出通道作为触发源来控制ADC的采样。2.cubemx的配置以及代码cubemx的版本为6.6.0mdk的版本为5.34ADC配置因为要使用TIM来触发ADC,所以要关闭连续模式,在下面的触发选项选择TIM2的通道2,触发边沿选择上升沿触发。DMA配置要选择循环模式,否则DMA只传输一次就结束了,达不到一直触发ADC一直搬运数据的结果。定时器的配置。因为ADC是上升沿

STM32实战总结:HAL之modbus

什么是modbus?Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气SchneiderElectric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(Defacto),并且现在是工业电子设备之间常用的连接方式。要注意的是::::::MODBUS协议是一种软件协议,是一种人为约定的协议,他和SPI,IIC,CAN总线协议还是有些不同的,SPI,IIC,CAN总线这些协议必须是设备在硬件上支持的,可以说SPI,IIC,CAN总线是一种软硬件的结合体,也就是常分为两层即物理层和协议层,MODBUS本身就是类似于协议层的东

STM32使用温湿度DHT11基于HAL库开发

DHT11是一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。传感器内部湿度和温度数据40Bit的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11功耗很低,5V电源电压下,工作平均最大电流0.5mA。引脚定义:VCC-5V         GND-GND         OUT-PB9相关步骤如下:(1)打开CubeMX (2)选择芯片型号,这里本忍选择S

【STM32】HAL库-通用定时器

简介通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。时基单元软件可以读写计数器CNT、自动重装载寄存器ARR和预分频寄存器PSC,即使计数器运行时也可以操作。当前计数值寄存器CNT向上计数,可随时修改自动重装载寄存器ARR可随时修改,具有影子寄存器,根据TIMx_CR1寄存器中的自动重装载预加载使能位(ARPE),写入ARR寄存器的内容能够立