STM32单片机定时器的使用(毫秒级延迟的设置与使用)

本文介绍了如何在HAL库的基础上,通过定时器实现μs级的延迟控制,详细步骤包括设置80MHz频率,配置预分频,编写并调用delay_us函数,以及在GPIO控制中应用此延迟功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HAL库中有毫秒级的延迟,但是实际运用开发中我们往往还需要微秒级的延迟。

本章将利用定时器实现微秒级的延迟。

步骤

  1. 将频率设置为80MHz

调节预分频,配置

CTRL + s 保存代码

自动生成代码如下:

 

在tim.c中加入函数,并在tim.h中声明函数

延迟代码

void delay_us(uint16_t us)
{
	uint16_t differ = 60000-us;
	HAL_TIM_Base_Start(&htim6);

	__HAL_TIM_SET_COUNTER(&htim6,differ);

	while(differ<60000)
	{
		differ=__HAL_TIM_GET_COUNTER(&htim6);
	}

	HAL_TIM_Base_Stop(&htim6);


}

在while循环中使用该函数

      int i;
//灯的初始状态为高电平,即灭的状态,在这里将他点亮
	  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET);


	  for(i=0;i<1000;i++)
	  {
		  delay_us(1000);
	  }
    //控制灯的亮灭
	  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET);

	  for(i=0;i<1000;i++)
	  {
		  delay_us(1000);
	  }

烧录并运行,就会发现对应的灯一秒亮一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值