定时器延时us(hal库)

目录

定时器延时us

配置cubemx 

​编辑​编辑新建模块 

 代码实现

测试代码


定时器延时us

复制工程模板

配置cubemx 


新建模块 

新建文件HardWare

 添加文件HardWare

添加文件路径

 添加HardWare

或者直接输入/HardWare

添加.c和.h文件

.h文件

添加防重复定义代码

#ifndef __Delay_us_H__
#define __Delay_us_H__



#endif

 代码实现

Delay_us.c

#include <delay_us.H>

extern TIM_HandleTypeDef htim2;

void Delay_us(uint16_t us)
{     
	uint16_t differ = 0xffff-us-5;				
	__HAL_TIM_SET_COUNTER(&htim2,differ);	//设定TIM1计数器起始值
	HAL_TIM_Base_Start(&htim2);		//启动定时器	
	
	while(differ < 0xffff-5)//判断
	{	
		differ = __HAL_TIM_GET_COUNTER(&htim2);		//查询计数器的计数值
	}
	HAL_TIM_Base_Stop(&htim2);//关闭定时器
}

Delay_us.h

#ifndef __Delay_us_H__
#define __Delay_us_H__

#include "tim.h"
#include "main.h"

void Delay_us(uint16_t us);

#endif

 如果报警,可以尝试代码最后换行

测试代码

 同样添加灯进行验证

在main.c添加头文件

#include "Delay_us.h"

 同样实现LED闪烁

int num = 0;
	
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		Delay_us(1000);
		if(num ++ == 1000)
		{
            num = 0;
			HAL_GPIO_TogglePin(LED_Blue_GPIO_Port, LED_Blue_Pin);
		}

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值