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

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

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

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

步骤

  1. 将频率设置为80MHz

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

调节预分频,配置

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

CTRL + s 保存代码

自动生成代码如下:

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

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

延迟代码

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

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);
	  }

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

你可能感兴趣的:(STM32单片机学习笔记,单片机,stm32,嵌入式硬件)