STM32使用定时器延时

STM32F427 使用定时器T4作为延时定时器

设置如下:主要是预分频设置为90,因为系统APB1的时钟是90Hz
在这里插入图片描述预分频90

在这里插入图片描述

#ifndef __DELAY_H__
#define __DELAY_H__
#include "stdint.h"

void delay_us(uint32_t us);
void delay_ms(uint32_t us);


#endif

C文件

#include "delay.h"
#include "main.h"

#include "stdio.h"
extern TIM_HandleTypeDef htim4;
//使用一个定时器延时1us
void delay_us(uint32_t us)
{
	if(us>65535)
	{	
		us=65535;
		printf("%s %d param us is overrun \r\n",__FILE__,__LINE__);
	}
	//计数器清零
	__HAL_TIM_SET_COUNTER(&htim4,0);
	//设置重载值,也就是需要计数的最大值
	__HAL_TIM_SET_AUTORELOAD(&htim4,us);
	//开始计数
	HAL_TIM_Base_Start(&htim4);
	//等待计数事件到
	while(!__HAL_TIM_GET_FLAG(&htim4,TIM_FLAG_UPDATE));
	//清除转态标志
	__HAL_TIM_CLEAR_FLAG(&htim4,TIM_FLAG_UPDATE);
	//停止计数
	HAL_TIM_Base_Stop(&htim4);
	
}	
//使用一个定时器延时1ms
void delay_ms(uint32_t ms)
{
	for(uint32_t i=0;i<ms;i++)
	{
		delay_us(1000);
	}
	
}




Guess you like

Origin blog.csdn.net/u010261063/article/details/120261533