|
Hi 强哥:
我想按照你的例程,自己实验一下apptimer 的用法。
定时1S 钟,让LED4 翻转。
但是我写的这个程序 LED4 一直不会闪烁,timer 的回调函数一直都执行不到,调试打断点也无法在led4_toggle_timeout_handler 函数中停下来。
请帮我看看这个程序 ,是有什么问题吗?
多谢强哥了!!
程序 main.c文件如下 :
#include <stdint.h>
#include "nrf_delay.h"
#include "nrf_drv_gpiote.h"
#include "app_error.h"
#include "app_timer.h"
#include "softdevice_handler.h"
#define LED_4 24
#define APP_TIMER_OP_QUEUE_SIZE 1 /**< Size of timer operation queues. */
#define APP_TIMER_PRESCALER 0 /**< Value of the RTC1 PRESCALER register. */
#define APP_TIMER_MAX_TIMERS 1
#define LED4_TOGGLE_INTERVAL APP_TIMER_TICKS(1000, APP_TIMER_PRESCALER)
APP_TIMER_DEF(m_led4_toggle_timer_id);
static void led4_toggle_timeout_handler(void * p_context)
{
UNUSED_PARAMETER(p_context);
nrf_gpio_pin_toggle(LED_4);//·-×aLEDÖ¸ê¾μÆD4μÄ×′ì¬
}
static void timers_init(void)
{
APP_TIMER_INIT(APP_TIMER_PRESCALER,APP_TIMER_OP_QUEUE_SIZE, false);
uint32_t err_code;
err_code = app_timer_create(&m_led4_toggle_timer_id, APP_TIMER_MODE_REPEATED, led4_toggle_timeout_handler);
APP_ERROR_CHECK(err_code);
}
static void application_timers_start(void)
{
/* YOUR_JOB: Start your timers. below is an example of how to start a timer.*/
uint32_t err_code;
err_code = app_timer_start(m_led4_toggle_timer_id, LED4_TOGGLE_INTERVAL, NULL);
APP_ERROR_CHECK(err_code);
}
int main(void)
{
nrf_gpio_cfg_output(LED_4);
nrf_gpio_pin_clear(LED_4);//on
timers_init();
application_timers_start();//
while (true)
{
__SEV();
__WFE();
__WFI();
}
}
|
|