首页 > 其他分享 >STM32 HAL 定时器代替HAL_Delay延时函数

STM32 HAL 定时器代替HAL_Delay延时函数

时间:2024-07-25 18:06:28浏览次数:20  
标签:STM32 定时器 HAL 函数 Delay uint32 wait

因为不知道的原因SysTick_Handler不进入中断,HAL_IncTick函数中的uwTick计数值不能自增,延时函数卡死。

用定时器代替系统时钟计数,并重写HAL_Delay延时函数。
不使用中断。

需要找一个32位计数周期的定时器,才能和32位计数值匹配。
我选择的TIM2,STM32H750的TIM2挂载在APB1上,时钟树设置为60MHz,

image

60000预分频,周期刚好1ms,如果时钟太快,可以考虑两个定时器串联。

不用开启中断,这是重写的HAL_Delay函数。

void HAL_Delay(uint32_t Delay)
{
  uint32_t tickstart = __HAL_TIM_GET_COUNTER(&htim2);
  uint32_t wait = Delay;

  /* Add a freq to guarantee minimum wait */
  if (wait < HAL_MAX_DELAY)
  {
    wait += (uint32_t)(uwTickFreq);
  }
  uint32_t ticknow = __HAL_TIM_GET_COUNTER(&htim2);
  while ((ticknow - tickstart) < wait)
  {
	  ticknow = __HAL_TIM_GET_COUNTER(&htim2);
  }
}

标签:STM32,定时器,HAL,函数,Delay,uint32,wait
From: https://www.cnblogs.com/lizesen/p/18323856

相关文章

  • (12)RCC与时钟树编程—基于铁头山羊的STM32标准库教程
    时钟树倍频与分频: LSI:位于芯片内的低速时钟(低速内部时钟):36.768KHz HSI:位于芯片内的高速时钟(高速内部时钟):8MHzLSE:位于芯片外的低速时钟(低速外部时钟):36.768KHzHSE:位于芯片外的高速时钟(低速外部时钟):4~16MHz配置RCC时钟的标准库函数:RCC_HSEConfig(值1);//HSE开......
  • STM32F407最小系统板烧录基于ST-LINK /V2
    STM32F407最小系统板烧录ST-LINK/V2背景我们使用的单片机最小系统板为STM32F407ZGT6,下载器为正点原子.方法下载测试程序下载好程序`LoadTest`,地址为Casdos/STM32F407NUEDC:电赛,尤其针对stm32f407zet6最小开发版相关代码(github.com)按图连接SWD和其它线路,注意SW......
  • STM32的外部中断详解
    一、什么是中断?想象一下你正在家里做饭,突然门铃响了,你听到门铃声后,会暂时放下手中的事情(比如炒菜),去开门看看是谁。在这个例子中,门铃声就是一个“中断”,它打断了你原本在做的事情(炒菜)。在STM32(一个常用的微控制器)中,中断也是类似的概念。STM32有很多功能,比如控制LED灯、读取传......
  • Datawhale AI 夏令营 第二期 机器学习 Task3 学习笔记 尝试使用深度学习方案
    概要:如何进行时间序列的进阶特征提取与分析如何构建深度学习方案一.时序特征的详细介绍 1.日期变量:时间序列数据通常包含日期或时间信息。这可以细分为不同的时间尺度,如年、月、周、日、小时、分钟等。在特征提取时,可以将这些日期变量转换为数值型特征,以便于模型......
  • 零基础STM32单片机编程入门(二十) 华邦W25Q32 SPI FLASH实战含源码
    文章目录一.概要二.W25Q32SPIFLASH主要参数三.W25Q32SPIFLASH芯片介绍1.W25Q32芯片内部框图2.W25Q32芯片指令表格3.W25Q32芯片通讯时序四.W25Q32SPIFLASH读写实验五.CubeMX工程源代码下载六.小结一.概要FLASH是一种存储芯片,通过程序可以修改数据,即平时所......
  • STM32定时器中断实验
    1.定时器介绍 STM32中的定时器根据其功能复杂程度,可以分为基础定时器(BasicTimers)、通用定时器(General-PurposeTimers)和高级定时器(Advanced-ControlTimers)。以下是这三种定时器的主要功能概述:1.基础定时器(BasicTimers)主要功能:基本计时:基础定时器具有较为简单的功能,......
  • Datawhale AI夏令营
    DatawhaleAI夏令营第三期可以报名了,实习证明+奖学金+项目经历,本期与阿里云天池联合主办。......
  • STM32中断方式发送字符串的两种方法(判断TC和TXE)
    以前一直是用查询方式发送字符串的。今天研究了下手册,看到两个标志位TC和TXE,两种判断方式均可用。先说TC。即TransmissionComplete。发送一个字节后才进入中断,这里称为“发送后中断”。和原来8051的TI方式一样,都是发送后才进中断,需要在发送函数中先发送一个字节触发中断。发......
  • SPI协议——结合百问网STM32入门 STM32 HAL快速入门与项目实战视频
    目录1、SPI协议的概念2、SPI的传输模式2.1SPI工作模式2.2SPI传输模式2.3SPI操作方法3、时序图4、代码实现4.1SPIHAL库编程4.2中断方式4.3DMA方式函数说明5、总结5.1SPI协议的优点5.2SPI协议的缺点1、SPI协议的概念SPI(SerialPeripheralInterface,......
  • 学习STM32的SPI总线通信
    学习STM32的SPI总线通信需要了解SPI的基本原理和STM32的库函数使用方法。SPI(SerialPeripheralInterface)是一种全双工的同步串行通信总线,用于在微处理器或微控制器与外围设备之间传输数据。在STM32中,SPI总线通信需要使用SPI外设和相关的库函数。SPI外设包括多个SPI控制器,每个......