第六篇 蜂鸣器和app_timer
来源:互联网 发布:微分销源码 .net 编辑:程序博客网 时间:2024/05/17 03:12
开发板上的蜂鸣器是有源的,所以控制上相对比较简单,要让蜂鸣器出声,只需要把控制gpio口拉高就可了。
什么时候关闭蜂鸣器呢?有两种办法,一是在打开蜂鸣器之后加上一段延时,然后再关闭蜂鸣器。二是使用timer,加延时不好的地方在于蜂鸣器发声之后cpu就不能做其他工作了,在有些情况下会影响用户体验,所以呢,这里需要使用timer来控制。
在蓝牙样板程序中已经有app_timer的初始化,对于我们来说只需要创建一个timer,然后启动这个timer就可了,初始化的代码如下:
注意,默认系统最大timer个数为2个,在timer初始化时就指定了,而这个样板程序中,蓝牙和按键部分就分别使用了一个timer,所以这里我们还需要将timer的最大个数修改为3,才能正常使用timer。
什么时候关闭蜂鸣器呢?有两种办法,一是在打开蜂鸣器之后加上一段延时,然后再关闭蜂鸣器。二是使用timer,加延时不好的地方在于蜂鸣器发声之后cpu就不能做其他工作了,在有些情况下会影响用户体验,所以呢,这里需要使用timer来控制。
在蓝牙样板程序中已经有app_timer的初始化,对于我们来说只需要创建一个timer,然后启动这个timer就可了,初始化的代码如下:
static void timers_init(void){ // Initialize timer module, making it use the scheduler APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_MAX_TIMERS, APP_TIMER_OP_QUEUE_SIZE, true); /* YOUR_JOB: Create any timers to be used by the application. Below is an example of how to create a timer. For every new timer needed, increase the value of the macro APP_TIMER_MAX_TIMERS by one. err_code = app_timer_create(&m_app_timer_id, APP_TIMER_MODE_REPEATED, timer_timeout_handler); APP_ERROR_CHECK(err_code); */}
使用APP_TIMER_INIT宏来做初始化。在timers_init()函数中也告诉你了,可以使用app_timer_create()来创建一个timer。
在main()函数里,最后还会调用timers_start()函数,用来启动timer,但是现在这个函数里面是空的,需要自己往里添加的。
最后,蜂鸣器的代码如下:
#include "buzzer.h"#define BUZZER_EN 12#define TIMER_INTERVAL APP_TIMER_TICKS(1000, 0)static app_timer_id_t buzzer_timer_id;static void buzzer_timer_handler(void *p){buzzer_off();}void buzzer_init(void){uint32_t err_code;err_code = app_timer_create(&buzzer_timer_id, APP_TIMER_MODE_REPEATED,buzzer_timer_handler);APP_ERROR_CHECK(err_code);nrf_gpio_cfg_output(BUZZER_EN);}void buzzer_on(void){uint32_t err_code;nrf_gpio_pin_set(BUZZER_EN);err_code = app_timer_start(buzzer_timer_id, TIMER_INTERVAL, NULL);APP_ERROR_CHECK(err_code);}void buzzer_off(void){nrf_gpio_pin_clear(BUZZER_EN);}在打开蜂鸣器的同时启动一个timer,在timer时间到之后再关闭蜂鸣器。
注意,默认系统最大timer个数为2个,在timer初始化时就指定了,而这个样板程序中,蓝牙和按键部分就分别使用了一个timer,所以这里我们还需要将timer的最大个数修改为3,才能正常使用timer。
阅读全文
0 0
- 第六篇 蜂鸣器和app_timer
- 有源蜂鸣器和无源蜂鸣器
- 有源蜂鸣器和无源蜂鸣器
- nrf51822 app_timer
- 有源蜂鸣器和无源蜂鸣器区别
- 区分有源蜂鸣器和无源蜂鸣器
- 有源蜂鸣器和无源蜂鸣器讲解
- 单片机点灯和蜂鸣器
- 步进电机和蜂鸣器
- 蜂鸣器
- 蜂鸣器
- 蜂鸣器
- 蜂鸣器
- 蜂鸣器
- 蜂鸣器
- 蜂鸣器
- Pixhawk指示灯和蜂鸣器含义
- Pixhawk指示灯和蜂鸣器含义
- vue中methods一个方法调用另外一个方法
- vim
- android颜色对应的xml配置值,颜色表
- JDBC底层代码
- C#构造函数、操作符重载以及自定义类型转换
- 第六篇 蜂鸣器和app_timer
- 使用LeNet网络训练Caltech101数据集
- 复制移动文件时对于目标文件系统过大怎么办
- 翻译 | 摆脱浏览器限制的JavaScript
- 二层转三层报文正常流程
- 关于实例方法, 类方法和静态方法的思考
- Python 实现自动刷CSDN博客浏览量
- 【学习笔记】nodejs之包管理npm/yarn
- 100. Same Tree