[ CC2541 ] [ 3 ] 定时器

RTC简介

RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源。有个疑问:在 BLE 协议栈中 RTC 和定时器之前有什么联系吗?


定时器

目前,了解到定时器有两种实现方式:

Timer1:轮询,即通过 while 不断判断 IRCON 状态,定时执行相应操作。

    while(1)
    {
        if(IRCON > 0)
        { 
            IRCON=0;
            if(count++ >= 1) //约1s周期性闪烁,示波器测大约为1025MS
            {
              count=0;
              LED1 = !LED1;  //LED1闪烁        
            }
        } 
    }
寄存器作用描述
IRCON(0xC0)中断标志4Bit1:定时器 1 中断标志。当定时器 1 中断发生时设为 1 并且当 CPU 向量指向中断服务例程时清除。
0:无中断未决
1:中断未决

Timer3. 中断,通过中断触发定时事件。

中断是程序暂停当前执行流(需要对当前程序做保存,方便后序中断恢复),转而去执行其它程序流。

有哪些事件会触发程序中断?中断有两种:硬中断、软中断。当有按键按下时会触发硬中断,也叫作外部中断;而当数据溢出,除零等事件发生时,会产生软中断。

中断的实现方式:中断是通过中断向量表中,各标志位的状态,控制CPU处理不同的中断事件。如:寄存器保存,程序计数器(PC)的指向。

//定时器T3中断处理函数
#pragma vector = T3_VECTOR 
__interrupt void T3_ISR(void) 
{ 
    IRCON = 0x00;            //清中断标志, 也可由硬件自动完成 
    if(count++ > 245)        //245次中断后LED取反,闪烁一轮(约为0.5 秒时间) 
    {                        //经过示波器测量确保精确
        count = 0;           //计数清零 
        LED1 = ~LED1;        //改变LED1的状态
    } 
}

通过这种方式,可以使用程序控制硬件的输入输出状态。