草庐IT

HAL_GetTick

全部标签

STM32实战总结:HAL之IAP

我们学习单片机一般都是从51开始的,51单片机烧录程序通常是使用烧录软件如STC-ISP。这种方式,通过串口连接单片机,选择一个合适的波特率就可以烧录了。后来学习STM32,编程时使用KEIL软件自带的下载按钮就能下载程序,方便了不少,但需要额外使用J-Link等下载器。再后来,接触到产品研发,给已经发布出的产品升级,都是要靠远程无线升级的。……ICP全称是InCircuitProgramming,即在电路中编程ICP是最早的一种程序升级方式。首先需要明确的是,单片机程序下载的本质就是将由0和1组成的hex文件写入到掉电数据不会消失的EEPROM(ElectricallyErasablePro

HAL库配置STM32F1系列定时器驱动步进电机(四)(梯形加减速)

前言经过之前的一些学习我们已经成功地让电机成功地转了起来,但是在实际应用中这样的电机是很难满足工业上的一些需求的,因为电机在启动和停止时都很难在一瞬间达到目标速度,我们可以从波形图的角度来看,如果我们让电机从0启动然后马上到目标速度再从速度马上停止到0,这样显然是不现实的,会产生丢步的情况,因此接下来要介绍一种电机控制算法:梯形加减速(资料来自正点原子)梯形加减速原理通过前面的学习,我们知道了当定时器处于输出比较模式下时,决定脉冲频率的参数是比较值ccr(以下统称Cn),因此控制速度首先我们要能够实时改变比较值,具体来说有三个:(1)加速阶段时需要多少脉冲数?使用n1进行表示(2)减速阶段要步

STM32从固件库到HAL库

让坚持成为一种热爱,极致成为一种精神。历时10个月,目前我又重新回到了程序员的身份,2023想玩不一样的嵌入式。🚀目录前言一、安装STM32CubeMX二、配置自己的HAL库MDK工程三、HAL库与固件库的区别1.句柄2.回调函数3.时钟配置4.HAL_Init()5.其他结语前言我学STM32是基于固件库的,之后的一年都是用固件库开发STM32。其实固件库还是挺好用的,很稳定,即使ST已经放弃很多年了。为什么改用HAL库?1)CubeMX+HAL库是大势所趋。2)CubeMX可以直接生成驱动代码,而且CubeMX是很好的工具,即使不用HAL库,里面的一些工具对开发也很有帮助。3)HAL库效率

[HAL]STM32 SPI+DMA驱动WS2812

该程序是纯手敲,非Cube生成!所有代码均注释。源码在文章后面获取WS2818简介Keyword:单线通讯、归零码、Reset、RGB顺序RGB一共有24bit位->相当于驱动一个灯要24bit位->驱动若干个灯要24*nbit位,通过Reset码决定数据终止(保持)24bit位应该如何发送?可见:表示低电平需要T0H和T0L的配合,其关键在于高电平的时间,图中所示T0H时间为0.85us±150nsQ:怎么控制高低电平的时间数据发送速度可达800Kbps,就是1.25us发送一位数据,因为协议有一定的兼容性,所以实际上一个位的周期在1.25us±300ns之间都能识别到,因为是us级延时,所

STM32系列(HAL库)——F103C8T6 控制SG90舵机

1.软件准备 (1)编程平台:Keil5(2)CubeMX2.硬件准备(1)F1的板子,本例使用经典F103C8T6(2)一个捡来的舵机(3)ST-link 下载器(4)杜邦线若干 3.关于舵机控制原理        舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的: 4.CubeMX配置(1)芯片选择 (2)配置RCC、SYS、时钟树配置RCC配置SYS配置时钟树(3)配置定时器产生PWM波形                         此时产生PWM波

0.96寸OLED显示屏标准库移植HAL库(模拟IIC) - 基于STM32

**0.96寸OLED显示屏标准库移植HAL库,使用模拟IIC**由于项目的需要使用OLED屏显示,并且现有的项目程序是基于HAL库编写的,而手头能找到的程序是标准库的驱动程序,大概看了一下代码,比较简单,涉及到不同库之间需要改动的代码很少。代码下载链接:点击此处下载驱动代码首先去LCDWiKi网站(链接)下载基于0.96寸OLED屏的IIC驱动代码,这个网站包含了常用显示模块的驱动代码,十分方便,本次我选择的是0.96inchOLEDModuleSKU:MC096GX。下载后只需要oled屏的oled.c、oled.h和oledfont.h代码,但是需要改动如下几个地方的代码首先是oled.

STM32学习笔记 & 定时器HAL库函数

stm32f1xx_hal_tim.c定时器基础部分相关函数/*TimeBasefunctions********************************************************//*Blockingmode:Polling*/HAL_StatusTypeDefHAL_TIM_Base_Init(TIM_HandleTypeDef*htim);HAL_StatusTypeDefHAL_TIM_Base_DeInit(TIM_HandleTypeDef*htim);voidHAL_TIM_Base_MspInit(TIM_HandleTypeDef*htim);v

入门小白:STM32hal库实现ESP8266与手机通信(不定长数据收发和ESP8266使用的一些问题)

目录前言一、stm32cubeMX的串口配置二、空闲中断+dma接收三、ESP8266.c和ESP8266.hESP8266.hESP8266.c注意事项四、与手机通信例程步骤: 例程代码main.c运行结果五、相关问题总结相关的app和源码前言前提:1.掌握串口通信和ESP8266的使用方法串口通信:单片机串口通信不理解?STM32的USART和UART差在哪里?几分钟给你讲清楚!(STM32教程基于HAL库和CUBEIDE)_哔哩哔哩_bilibiliESP8266的使用 STM32HAL库使用ESP8266模块_halesp8266_啵啵520520的博客-CSDN博客2.这次采用的空闲

stm32 hal库 GPIO初始化函数MX_GPIO_Init()梳理分析、初步细致学习(二)

目录一、GPIO外设时钟初始化二、配置GPIO2.1配置 GPIO_InitTypeDef结构体成员变量 2.2把参数写到对应寄存器2.2.1io口的配置2.2.2外部中断的配置三、相关知识分析3.1hal_gpio其他函数简单分析3.1.1HAL_GPIO_DeInit();3.1.2  HAL_GPIO_ReadPin();3.1.3  HAL_GPIO_WritePin();3.1.4  HAL_GPIO_TogglePin();3.1.5  HAL_GPIO_LockPin();3.1.6 HAL_GPIO_EXTI_IRQHandler() 3.1.7HAL_GPIO_EXTI_Ca

STM32HAL库常用库函数说明

STM32HAL库常用库函数说明系统函数HAL_Delay(延时函数)GPIOHAL_GPIO_WritePin(GPIO引脚电平设置)HAL_GPIO_TogglePin(GPIO电平翻转)HAL_GPIO_ReadPin(获取GPIO引脚状态)TimerHAL_TIM_Base_Start_IT(打开定时器)HAL_TIM_Base_Stop_IT(关闭定时器中断)USART(串口)HAL_UART_Transmit(阻塞式发送函数)HAL_UART_Transmit_IT(非阻塞式发送函数)HAL_UART_Receive(阻塞式接收函数)——不推荐使用HAL_UART_Receive_