STM32-HAL库下使用通用定时器实现微秒级和毫秒级延时(运行Liteos操作系统下)

STM32-HAL库下使用通用定时器实现微秒级和毫秒级延时

/**
*	author:	zhuhongxi
*	date:2-27
*	朱红喜
 */
1. 芯片:STM32F407IGT6
2. 定时器:TIM3
3. 时钟源:外部8M时钟源(HSE)
4. 时钟:HCLK-168M
5. Prescaler定时器分频8383+16. ARR预装载 1  84M/(83+1)*1 = 1us
7. 向下计数   

+ 如果使用溢出中断,由于进中断太快,上一次中断还未处理,下次中断机会到来,会造成误差
+ 所以这里使用轮询的方式,查询剩余的计数值是否大于0,完成设定的时间数

void delay_us(uint32_t us){
    uint16_t counter=us&0xffff;

    HAL_TIM_Base_Start(&htim3);
    __HAL_TIM_SetCounter(&htim3,counter);

    while(counter>=1)
    {
        counter=__HAL_TIM_GetCounter(&htim3);
    }

    HAL_TIM_Base_Stop(&htim3);
}

void delay_ms(uint32_t ms){
    delay_us(1000*ms);
}



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坂田民工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值