这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » STM32G070RB探测7-定时器简单计时

共4条 1/1 1 跳转至

STM32G070RB探测7-定时器简单计时

高工
2020-12-24 20:30:58     打赏
STM32的HAL库有个简单的计时,默认使用systick,只是实现简单的毫秒级延迟,我们用定时器搞个稍微准点的延迟,我们用基本定时器,TIM6,我们实现一个500ms产生一次中断,然后每LED状态变换一下首先咱们配置下时钟

默认的是16MHz

我们直接傻子玩法,直接填64回车,让它自己配置

OK,很不戳(详细的配置及原理大Z老师已经讲过了,咱就不多说了)

打开定时器

下边我们计算一下,计算公式 f = tclk/(prescaler+1)/(period+1) f:频率 tclk:时钟频率 prescaler:预分频 period:自动加载值 1ms一次中断 f=1000; 64000000/32000/1000=1000

优先级

编写回调函数

跟EXTI中断一样

这里我们用周期运行回调函数,继续点灯

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* tim_baseHandle)//周期运行回调,配置定时进入中断
{
    if(tim_baseHandle->Instance == htim6.Instance)
    {
        /* Toggle LED */
    	HAL_GPIO_TogglePin(LED_GREEN_GPIO_Port,LED_GREEN_Pin);
    }
}

然后在main函数里添加启动

HAL_TIM_Base_Start_IT(&htim6);

用逻辑分析仪抓一下引脚看看时间准不准

看起来效果挺好的




关键词: STM32     单片机    

院士
2020-12-26 20:45:40     打赏
2楼
厉害了 楼主好效率啊

高工
2021-01-21 13:37:36     打赏
3楼

厉害了 楼主


高工
2021-04-05 09:03:09     打赏
4楼

多谢楼主分享!


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]