930电子网

 找回密码
 立即注册
艾克姆科技推出最新产品STC32G12K128开发板
查看: 18450|回复: 2

51822 apptimer 无法启动

[复制链接]

1

主题

5

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2019-3-3 15:29:28 | 显示全部楼层 |阅读模式
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&#214;&#184;ê&#190;μ&#198;D4μ&#196;×′ì&#172;
}
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();                     
        }
}

回复

使用道具 举报

52

主题

354

帖子

6545

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6545
发表于 2019-3-3 22:28:24 | 显示全部楼层
裸机程序必须要自己初始哈低频时钟,因为APP定时器会用到低频时钟。低频时钟初始化代码:
  1. static void lfclk_config(void)  
  2. {  
  3.      //初始化时钟模块,设置低频时钟源  
  4.      ret_code_t err_code = nrf_drv_clock_init();  
  5.     APP_ERROR_CHECK(err_code);  
  6.     //请求低频时钟,输入参数为NULL表示低频时钟启动后不产生事件  
  7.      nrf_drv_clock_lfclk_request(NULL);  
  8. }
复制代码


回复 支持 反对

使用道具 举报

1

主题

5

帖子

37

积分

新手上路

Rank: 1

积分
37
 楼主| 发表于 2019-3-4 16:03:09 | 显示全部楼层
强光手电 发表于 2019-3-3 22:28
裸机程序必须要自己初始哈低频时钟,因为APP定时器会用到低频时钟。低频时钟初始化代码:

Hi 强哥,
我的加入配置低频时钟后还是 无法进入 timeout 函数。
我的工程文件是51822 2.4G 通信的例程上改的,不知道还有什么问题,请帮我看一下吧。
多谢强哥了!!
工程文件太大,我上传到百度网盘上了,如下的连接。

链接:https://pan.baidu.com/s/16uAbVROtaQcAWiSKLHZT2g
提取码:npyj



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2 )

GMT+8, 2024-11-21 20:13 , Processed in 0.076781 second(s), 22 queries .

快速回复 返回顶部 返回列表