设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

NRF51822 定时器中断

[复制链接]

1

主题

5

帖子

50

积分

注册会员

Rank: 2

积分
50
跳转到指定楼层
楼主
wolfdong7 发表于 2015-6-2 09:12:35 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
教程的定时器中断,感觉像延时一样。

能不能像中断一样,设置初始值,计数到了,跳入IRQ里面处理。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖
回复

使用道具 举报

1

主题

5

帖子

50

积分

注册会员

Rank: 2

积分
50
沙发
 楼主| wolfdong7 发表于 2015-6-2 11:28:03 | 显示全部楼层
已解决!代码工程:http://pan.baidu.com/s/1pr9IQ

#include "nrf51.h"
#include "nrf_gpio.h"
#include "led.h"
#include "time.h"
#include <stdbool.h>
#include <stdint.h>

void time1_init(void)  //&para;¨&Ecirc;±&AElig;÷&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;,&para;¨&Ecirc;±1s
{

    NRF_TIMER2->MODE        = TIMER_MODE_MODE_Timer;
    NRF_TIMER2->PRESCALER   = 9;  //Ftimer  = 31250 Hz   =32us

    NRF_TIMER2->CC[2]       = (31250U);  //=32us*31250=1s
    NRF_TIMER2->INTENSET    = TIMER_INTENSET_COMPARE2_Enabled << TIMER_INTENSET_COMPARE2_Pos;


    NRF_TIMER2->SHORTS      = (TIMER_SHORTS_COMPARE1_CLEAR_Enabled << TIMER_SHORTS_COMPARE1_CLEAR_Pos);
               
                NVIC_ClearPendingIRQ(TIMER2_IRQn);
    NVIC_SetPriority(TIMER2_IRQn,3);
                NVIC_EnableIRQ(TIMER2_IRQn);  
          NRF_TIMER2->TASKS_START = 1; //&iquest;&ordf;&AElig;&ocirc;&para;¨&Ecirc;±&AElig;÷
}
void TIMER2_IRQHandler(void)  //&para;¨&Ecirc;±&AElig;÷&Ouml;&ETH;&para;&Iuml;&Auml;&pound;&Ecirc;&frac12;·&thorn;&Icirc;&ntilde;&ordm;&macr;&Ecirc;&yacute;
{

    if ((NRF_TIMER2->EVENTS_COMPARE[2] == 1) && (NRF_TIMER2->INTENSET & TIMER_INTENSET_COMPARE2_Msk))
    {
      NRF_TIMER2->EVENTS_COMPARE[2] = 0;
   
      LED2_UN;//&micro;&ccedil;&AElig;&frac12;·&shy;×&ordf;


                         NRF_TIMER2->TASKS_CLEAR = 1; //&Ccedil;&aring;&sup3;&thorn;&frac14;&AElig;&Euml;&atilde;
    }

}

int main(void)
{
  LED_Init();
        KEY_Init();
        EXIT_Init();
                time1_init(); //&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;time&pound;&raquo;
  LED1_ON;
        LED2_ON;       
        LED2_UN;
       
  // LED 0 and LED 1 blink alternately.
  while(1)
  {
           
                                               
   
    nrf_delay_ms(500);
   
   
   
    nrf_delay_ms(500);
  }
}
回复 支持 反对

使用道具 举报

1

主题

5

帖子

50

积分

注册会员

Rank: 2

积分
50
板凳
 楼主| wolfdong7 发表于 2015-6-6 14:30:49 | 显示全部楼层

谢谢!
期待版主为我们新手写出更多的好教程来。
回复 支持 反对

使用道具 举报

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

GMT+8, 2024-5-16 15:43 , Processed in 0.250441 second(s), 28 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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