CC2530定时器配置笔记1(基本定时功能配置)

来源:互联网 发布:云计算工程师要学什么 编辑:程序博客网 时间:2024/05/22 10:29

前言

CC2530有2个8位的定时器,它们分别是定时器3和定时器4。相较于传统51单片机的8位定时器来说,CC2530上的定时器具有输入捕获、输出比较、定时器计数方向可变等几个特点。

定时器计时功能寄存器配置

以定时器3为例,想要通过定时器3进行计时操需要配置T3CTL寄存器、IEN1寄存器、TIMIF寄存器。

T3CTL寄存器介绍

T3XTL是一个8位寄存器。

位 名称 复位值 读写权限 配置 7:5 DIV[2:0] 000 读/写 定时器分频系数 - - - - 000 :系统时钟1分频 - - - - 001 :系统时钟2分频 - - - - 010 :系统时钟4分频 - - - - 011 :系统时钟8分频 - - - - 100 :系统时钟16分频 - - - - 101 :系统时钟32分频 - - - - 110 :系统时钟64分频 - - - - 111 :系统时钟128分频 4 START 0 读/写 定时器启动标志 - - - - 0 :关闭定时器 - - - - 1 :开启定时器 3 OVFIM 1 读/写 定时器溢出中断使能标志 - - - - 0 :关闭定时器溢出中断 - - - - 1 :开启定时器溢出中断 2 CLR 0 读/写 定时器计数值清除位,读取该位时只能读到0 - - - - 0 :无效 - - - - 1 :清除定时器计数值 1:0 MODE[1:0] 00 读/写 定时器工作模式配置 - - - - 00 :自由运行,从0x00到0xFF反复计数 - - - - 01 :向下计数模式,从T3CC0到0x00计数 - - - - 10 :向上计数模式,从0x00到T3CC0反复计数 - - - - 11 :上下计数模式,从0x00到T3CC0在到0x00反复计数

IEN1寄存器介绍

IEN1是一个8位寄存器。

位 名称 复位值 读写权限 配置 3 T3IE 0 读/写 定时器3中断使能标志 - - - - 0 :关闭定时器3中断 - - - - 1 :开启定时器3中断

TIMIF寄存器介绍

TIMIF是一个8位寄存器。

位 名称 复位值 读写权限 配置 2 T3CH1IF 0 读/写 定时器3通道1中断触发标志 - - - - 0 :复位定时器3通道1中断触发标志 - - - - 1 :置位定时器3通道1中断触发标志 1 T3CH0IF 0 读/写 定时器3通道0中断触发标志 - - - - 0 :复位定时器3通道0中断触发标志 - - - - 1 :置位定时器3通道0中断触发标志 0 T3OVFIF 0 读/写 定时器3溢出中断触发标志 - - - - 0 :复位定时器3溢出中断触发标志 - - - - 1 :置位定时器3溢出中断触发标志

范例

    #include <ioCC2530.h>    void Timer3_Init( void )    {        //    TIMIF &= ~0x01;        //    IEN1 |= 0x08;        //    T3CTL = 0xFC;        // 复位T3CTL寄存器        T3CTL = 0x00;        // 配置定时器3时钟为系统时钟128分频        T3CTL |= 0xE0;        // 清空定时器3计数器        T3CTL |= 0x04;        // 复位定时器溢出中断标志        TIMIF &= ~0x01;        // 开启定时器3溢出中断        T3CTL |= 0x08;        // 开启定时器3中断        IEN1 |= 0x08;        // 启动定时器3        T3CTL |= 0x10;        // 开启单片机总中断        EA = 1;    }    int main( void )    {        Timer3_Init();        while(1);    }    #pragma vector = T3_VECTOR    __near_func __interrupt void TIM3_ISR_Handler( void )    {        // 复位定时器3中断溢出标志        TIMIF &= ~0x01;    }

演示程序

[1]. CC2530数据手册

0 0
原创粉丝点击