一.前言
通過上次的學習,相信大家對cc2530單片機的定時器的使用有了一定的了解,今天我們來介紹定時器3的使用,為什么介紹定時器3呢,因為它和定時器4功能是差不多的,所以學會定時器3,就基本掌握了cc2530定時器的使用。
二.原理分析
我們要使用定時器3,就要先配置控制它的寄存器T3CTL,下面給出寄存器的介紹
跟定時器3有關的還有IRCON這個寄存器,下面給出介紹
之前定時器1的查詢,是直接訪問IRCON寄存器所進行的,這次我們要通過標志位T3IF來進行查詢。
三.程序
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
//定義控制LED1燈的端口
#define LED1 P1_0 //LED1為P1_0端口控制
#define LED2 P1_1 //LED2為P1_1端口控制
#define LED3 P1_4 //LED3為P1_4端口控制
//函數聲明
void InitLed(void); //初始化LED端口
void InitT3(void); //初始化定時器T3
/******** 函 數 名 : main 功能描述 : Timer3測試(Timer3查詢方式的使用) 輸入參數 : NONE 輸出參數 : NONE 返 回 值 : NONE *****/
void main(void)
{
uchar count=0;
InitLed(); //LED_IO初始化 I
nitT3(); //Timer3初始化
while(1)
{
if(T3IF>0) //查詢溢出標志
{
T3IF=0;
if((++count)==254) //溢出一次約為0.5s
{ count=0;
LED1 = ~LED1; //LED1取反
LED2 = ~LED2;
LED3 = ~LED3; }
}
} }
/********* 函 數 名 : InitLed 功能描述 : LED_IO初始化函數 輸入參數 : NONE 輸出參數 : NONE 返 回 值 : NONE *************/
void InitLed(void)
{ P1DIR |= 0xff; //P1端口定義為輸出
LED1 = 1; //LED燈初始化熄滅
LED2 = 1;
LED3 = 1; }
/*********** 函 數 名 : InitT3 功能描述 : Timer3初始化函數 輸入參數 : NONE 輸出參數 : NONE 返 回 值 : NONE ***/
void InitT3(void)
{ T3CTL = 0xF8; //128分頻;自由運行,從0x00到0xFF反復計數 }
四.分析與總結
本次的程序功能實現很簡單,通過配置定時器,讓led每隔1秒閃一次,通過T3IF寄存器來判斷定時器3是否溢出。