"); //-->
所以根据上面的模块结构图和说明想要实现定时器,我们需要做如下几个步骤:
1 选择Timer/Countermo模块为timer模式,并设置bitmode(8,16,,2,32位)
2 通过设置分屏来设置timer的时钟
3 设置cc[n](后面我们的例子选择使用cc0),来设置计数到多少产生compares[n]事件(当计数值技术到cc[n]的值时对应产生compare[n]事件)
4 设置compare事件产生时触发中断。
5 通过NVIC函数启动MCU 的timer中断
6 最后启动timer就可以了。
#include "nrf51.h"
#include "nrf_gpio.h"
//定义自己板子上的LED灯
#define LED 22
int main(){
nrf_gpio_cfg_output(LED);
//NRF_TIMER0定义在nrf51.h中,该指针指向timer0中的寄存器组
NRF_TIMER0->PRESCALER = 4; //2^4 16分频得到1M timer时钟
NRF_TIMER0->MODE = 0; //timer模式
NRF_TIMER0->BITMODE = 3; // 设置32bit
NRF_TIMER0->CC[0] = 1000000; //一个tick是1us,1000000代表1s
NRF_TIMER0->INTENSET = 1<<16;//设置compare[0]事件产生时触发中断
//该设置使timer模块中的conter计数到cc[0]值时会自动清零,以带到重//新计数的目的
NRF_TIMER0->SHORTS = 1;
//启动timer模块
NRF_TIMER0->TASKS_START = 1;
//开启MCU的timer0中断
NVIC_SetPriority(TIMER0_IRQn, 3);
NVIC_ClearPendingIRQ(TIMER0_IRQn);
NVIC_EnableIRQ(TIMER0_IRQn);
while(1);
return 0;
}
//中断函数中翻转灯状态
void TIMER0_IRQHandler(){
if(NRF_TIMER0->EVENTS_COMPARE[0] == 1){
NRF_TIMER0->EVENTS_COMPARE[0] = 0; //清除事件,不然会导致一
//直产生中断
nrf_gpio_pin_toggle(LED);
}
} 专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
简单制胜—第四部分:高效主动均衡背后的算法
又一场闹剧-中国无限期推迟WAPI标准强制执行
超短波物品遗留提醒报警器
人工智能领域的投资已达数万亿,从当前技术中实现通用人工智能(AGI)的可能性“接近于零”
MYthorON,问你一个 NAND FLASH问题
超温及降温报警器
“瑞萨杯2011全国大学生电子设计竞赛”新闻发布会①
电力线载波报警器
SolidWorks 2003 教程
金升阳超低纹波1mV系列开关电源重磅发布—LRN65-20Bxx系列
系统启动问题请教!
“瑞萨杯2011全国大学生电子设计竞赛”新闻发布会②
SST 89C54 89C58单片机资料
有刷VS无刷 - 电机控制电子实验室第2章
2026年PCIM Asia Shenzhen正式定档,连接全球电力电子产业与华南核心产业集群
【IEEE好文分享】AI智能体能为您做什么?
成本压力下的转型与机遇:2026年中国智能手机市场十大洞察
急性冠状动脉供血不足报警电路
介绍适合 FPGA 和服务器背板的 LT3070 负载点稳压器
200-600W高功率密度电源——LOFxxx-20BxxR2
ROHM首次推出用于精密目标检测的高速VCSEL光学传感器
电冰箱外壳漏电报警器电路(NE555、CW9561)
人在职场:德意志的气氛有点闷 在德企如何生存
配套ACDC机壳开关电源的宽压金属滤波器——FC-LxxM系列
“第三届OpenHW开放源码硬件与嵌入式大赛”于2011年6月正式启动
SST 89C54 89C58的中文资料
纳芯微成功登陆香港联交所—以香港为全球化支点,开启从中国标杆到全球优选的新征程
SST39VF080 SST39VF016 1M,2M字节 Flash
SST89E564 SST89E554 SST89V554 SST89V564单片机资料
重定位问题请教!