esp8266教程:定时器之原理基础

公众号

欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。
在这里插入图片描述

esp8266教程:定时器之原理基础

定时器的作用

在嵌入式软件开发中我们经常需要使用到定时器,定时器有有什么用?定时器在很多场景都有使用,比如我们要控制一盏led灯的闪烁,亮1秒钟,灭1秒钟,这时候就需要使用到定时器了,比如led灯亮了之后,就要启动定时器,等一秒钟后,定时器超时,定时1秒时间达到,然后熄灭led灯,然后如此反复,就形成了led闪烁的效果。所以定时器在嵌入式系统开发中是非常常见的功能。

定时器的原理

MCU内部一般都有硬件计数器,这个计数器可以根据芯片厂的设计有不同的功能,然后根据芯片的外部晶振时钟来计数,假设外部晶振的时钟为10M,可以配置为一个晶振时钟周期来计数一次,如果这个硬件计数器是16位的,那么可以计数的最大值为65535,当计数器从0计数到65535需要花的时间为 1 / 10000000 * 65535 = 0.0065535秒,6.5535毫秒。

esp8266定时器使用之不用深入理解细枝末节

上面我们说在mcu里面定时器的原理,但是在sdk,或者说在原厂的驱动里面我们无需关心定时器是如何配置出来的。我们只需要使用即可,这里可能有些所谓的“老工程师”需要告诉你,要你深入理解寄存器才能学到知识,我觉得完全没有必要,我们也不用去学习寄存器是怎么配置,我们只需要sdk给我们使用的接口是怎么来的即可,对于细枝末节的东西我们要抓大放小,为啥我啰嗦一大堆,就是怕大家真的去追那些细枝末节的东西。

esp8266定时器使用


//定时器初始化使用原型,主要是传入两个参数,一个是定时时间到之后的回调函数callback。
//另一个是定时时间到之后,调用回调函数给你传入的参数arg
esp_err_t hw_timer_init(hw_timer_callback_t callback, void *arg);
//使用例子,注册一个回调函数,不使用回调传参数,所以设置为NULL
hw_timer_init(hw_timer_callback1, NULL);
//调用hw_timer_alarm_us设置定时的时间,这里设置为100us,第二个参数true的意思是,重复定时,就是定时器到了之后还继续定时100us。
//如果第二个参数是设置false,那么就只会定时器一次。
hw_timer_alarm_us(100, true);


//回调函数的功能,就是将一个IO的电平进行反转一下
void hw_timer_callback1(void *arg)
{
    static int state = 0;

    gpio_set_level(GPIO_OUTPUT_IO_0, (state ++) % 2);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值