草庐IT

HAL_GetTick

全部标签

HAL库 串口空闲中断+DMA接收不定长数据 详解及踩坑

文章目录前言一、串口及DMA基础配置二、HAL_UARTEx_ReceiveToIdle_DMA()函数功能三、使用HAL_UARTEx_ReceiveToIdle_DMA()函数1.重新实现回调函数HAL_UARTEx_RxEventCallback2.调用接收函数四、踩坑测试流程原因总结前言本文需要用到HAL库的HAL_UARTEx_ReceiveToIdle_DMA()函数,如果编辑器提示找不到函数,可以尝试更新HAL库至最新版本。串口接收不定长数据是串口的常见应用。最近的项目需要用到modbus协议,由于不经常使用HAL库,配置串口接收时遇到了一些问题。在此记录一下,希望能帮助到一些人

STM32 HAL库函数——HAL_UART_Receive_IT()详解

文章目录函数源代码函数用法详解函数逐行解释函数源代码/***@briefReceiveanamountofdataininterruptmode.*@noteWhenUARTparityisnotenabled(PCE=0),andWordLengthisconfiguredto9bits(M1-M0=01),*thereceiveddataishandledasasetofu16.Inthiscase,Sizemustindicatethenumber*ofu16availablethroughpData.*@noteWhenUARTparityisnotenabled(PCE=0),and

STM32 hal库编程定时器清除中断标志位,开启定时器中断会立即进入中断的问题

#include"tim.h"__HAL_TIM_CLEAR_FLAG(&htim2,TIM_FLAG_UPDATE); //清除中断标志位1、如果不清除中断标志位,开启定时器中断的话,不能完成相应的计时,会立即进入中断。2、如果在开启定时器中断前清除了中断标志位,就会等待计时完成再出发中断。3、主要是针对单次计时使用,尤其是对第一次计时有要求的程序。HAL_TIM_Base_Start_IT(&htim2);//开启定时器中断的函数

STM32(HAL)多串口进行重定向(printf函数发送数据)

目录1、简介2.1基础配置2.1.1SYS配置 2.1.2RCC配置2.2 串口外设配置 2.3项目生成 3、KEIL端程序整合  4、效果测试1、简介在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库多个串口可进行类似printf函数的操作。2.1基础配置2.1.1SYS配置 2.1.2RCC配置2.2 串口外设配置 接着将串口2、3分别打开,如下图所示:  2.3项目生成 3、KEIL端程序整合在usart.c函数最下方复制如下代码voidUart_printf(UART_HandleTypeDef*huart,char*format,...){charbuf[

STM32 使用硬件IIC驱动0.96寸4针IOLED显示器(HAL库)

OLED显示屏驱动HAL库一、简介:SSD1306是一个单片CMOSOLED/PLED驱动芯片可以驱动有机/聚合发光二极管点阵图形显示系统。由128segments和64Commons组成。该芯片专为共阴极OLED面板设计。SSD1306中嵌入了对比度控制器、显示RAM和晶振,并因此减少了外部器件和功耗。有256级亮度控制。数据/命令的发送有三种接口可选择:6800/8000串口,I2C接口或SPI接口。适用于多数简介的应用,注入移动电话的屏显,MP3播放器和计算器等。详细介绍以及工作原理:链接:https://pan.baidu.com/s/1nz1MpdP5-o-kRXF9mfZmig提取

STM32 hal库编程定时器计数清零

#include"tim.h"__HAL_TIM_SET_COUNTER(&htim2,0); //计数清零 1、stm32定时器是有重装载功能的,所以定时器中断不关的话,就不需要计数清零2、主要是应对单次计时使用,可能因为没有清零导致程序再次运行到相同位置时,中断立即出发,没有完成计时的功能。顺便加一个读取定时器计数值得函数Counter=__HAL_TIM_GET_COUNTER(&TIM2_Handler);

STM32设置为I2C从机模式(HAL库版本)

STM32设置为I2C从机模式(HAL库版本)目录STM32设置为I2C从机模式(HAL库版本)前言1硬件连接2软件编程2.1步骤分解2.2测试用例3运行测试3.1I2C连续写入3.2I2C连续读取3.3I2C单次读写测试4总结前言我之前出过一篇关于STM32设置为I2C从机的博客,现在应粉丝要求,出一篇HAL库版本的I2C从机编程。基于官方库版本的可以看下我之前发的文章:STM32设置为I2C从机模式1硬件连接测试芯片:STM32F103RCT6测试方法:用一个USB转I2C的工具接到STM32的I2C引脚上,通过上位机工具进行读写操作。如果没有这个工具,也可以用另外一组I2C作为主机或者其

STM32 HAL库函数——HAL_UART_Transmit_IT()详解

文章目录函数源代码函数用法详解函数功能函数逐行解释函数源代码HAL_StatusTypeDefHAL_UART_Transmit_IT(UART_HandleTypeDef*huart,constuint8_t*pData,uint16_tSize){/*CheckthataTxprocessisnotalreadyongoing*/if(huart->gState==HAL_UART_STATE_READY){if((pData==NULL)||(Size==0U)){returnHAL_ERROR;}/*Incaseof9bits/NoParitytransfer,pDatabufferp

STM32初学者,到底选标准库还是HAL库?

当初学者尝试学习STM32开发时,通常会面临一个关键的选择:是选择STM32的标准库,还是HAL库?这两个库各自有着优势与适用场景,本文将从多个角度分析,帮助初学者更好地选择适合自己的库。在开始之前,让我们先搞清楚这两个库的基本概念。标准库是一组用于STM32系列微控制器的驱动程序和API集合。它们允许开发者直接访问芯片的寄存器和硬件功能,从而实现精确的控制。相比之下,HAL库提供了一系列高级API,以更抽象的方式操作外设和功能模块,简化了开发过程。初学者的考虑因素1.学习曲线对于初学者而言,学习曲线是一个关键因素。标准库要求开发者对芯片的底层硬件有较深入的理解,因为需要直接操作寄存器和配置引

STM32F103 CubeMax HAL 库开发,使用TIM定时器和DMA输出PWM方波。采坑日记

STM32F103CubeMaxHAL库开发,使用TIM定时器和DMA输出PWM方波问题描述使用阻塞方式和DMA方式开启PWM的区别简短结论具体分析CubeMax配置首先是CubeMax里面的常规配置TIMDMA配置生成工程KEIL文件撰写观察实验现象工程修改工程修改内容观察现象appendix问题描述我是用的芯片是STM32F103C8T6,其他F103系列的芯片也是一样的。使用CubeMax,并使用HAL库函数对硬件进行驱动。目标是使用TIM定时器的DMA方式,输出PWM方波。使用阻塞方式和DMA方式开启PWM的区别简短结论先说结论:如果只是用TIM输出固定占空比的PWM方波,那么阻塞方式