设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 4433|回复: 1
打印 上一主题 下一主题

开启定时器1和蓝牙协议栈会有冲突。

[复制链接]

3

主题

6

帖子

40

积分

新手上路

Rank: 1

积分
40
跳转到指定楼层
楼主
wjsmlw 发表于 2015-10-10 16:18:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void init_timers(void) {

        NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
        NRF_CLOCK->TASKS_HFCLKSTART = 1;
        while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0)
                {
               
                }

        NRF_TIMER1->MODE = TIMER_MODE_MODE_Timer;
        NRF_TIMER1->PRESCALER = TIMER_PRESCALER;
  NRF_TIMER1->BITMODE        = TIMER_BITMODE_BITMODE_16Bit;
        NRF_TIMER1->TASKS_CLEAR = 1;  // Clear the timer
        NRF_TIMER1->CC[2] = 0x01; //
        NRF_TIMER1->INTENSET = TIMER_INTENSET_COMPARE2_Enabled << TIMER_INTENSET_COMPARE2_Pos;
        NVIC_EnableIRQ(TIMER1_IRQn);
        NRF_TIMER1->TASKS_START = 1;


}
void TIMER1_IRQHandler(void) {

        if (NRF_TIMER1->EVENTS_COMPARE[2] == 1)
                {
                NRF_TIMER1->EVENTS_COMPARE[2] = 0; //clear interrupt
        }

}

#define SOFTDEVICE_HANDLER_INIT(CLOCK_SOURCE,                                                      \
                                USE_SCHEDULER)                                                     \
    do                                                                                             \
    {                                                                                              \
        static uint32_t EVT_BUFFER[CEIL_DIV(MAX(                                                   \
                                                MAX(BLE_STACK_EVT_MSG_BUF_SIZE,                    \
                                                    ANT_STACK_EVT_STRUCT_SIZE),                    \
                                                SYS_EVT_MSG_BUF_SIZE                               \
                                               ),                                                  \
                                            sizeof(uint32_t))];                                    \
        uint32_t ERR_CODE;                                                                         \
        ERR_CODE = softdevice_handler_init((CLOCK_SOURCE),                                         \
                                           EVT_BUFFER,                                             \
                                           sizeof(EVT_BUFFER),                                     \
                                           (USE_SCHEDULER) ? softdevice_evt_schedule : NULL);      \
        APP_ERROR_CHECK(ERR_CODE);                                                                 \
    } while (0)

开启timer1的话,ERR_CODE返回1001,无法开启蓝牙服务
关闭TIMER1的话,蓝牙服务就正常了。
但是单独运行timer的话又是正确的。
求解

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
沙发
admin 发表于 2015-10-11 09:10:18 | 只看该作者
参考我们给的例子,定时器开启和这个没冲突的
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-11-23 11:55 , Processed in 0.389406 second(s), 28 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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