由于博主用的板子和所看视频不同,故定时器就直接看的开发手册进行的学习
目录
一、定时器1
二、寄存器
T1CNTH(0XE3) - 定时器1计数器高位
T1CNTL(0XE2) - 定时器1计数器低位
T1CTL(0XE4) - 定时器1的控制和状态
T1START(0XAF) - 定时器1状态
T3CC0(0XCD)-定时3通道0捕获/比较值
三、参考代码
#include <ioCC2530.h>
#define BLED P1_0
#define YLED P1_1
#define LEDOPEN 1
#define LEDCLOSE 0
unsigned int counter=0; // 溢出次数
unsigned char LEDFlag; // 闪烁标志
void InitT1(void);
void InitLED(void);
/******************************
* @brief Timer 1 初始化
*****************************/
void InitT1(void)
{
T1CTL = 0x05;
T1STAT= 0x21; //通道0,中断使能,8分频;自动重装模式(0x0000->0xffff)
}
void InitLED(void)
{
P1DIR |= 0x03; // 定义P10、 P11为输出
YLED = LEDCLOSE;
BLED = LEDCLOSE;
}
/***************************
* @brief 主函数
***************************/
void main()
{
InitLED();
InitT1(); // 初始化定时器T1
while(1) //查询溢出
{
if(IRCON > 0) // 判断溢出
{
IRCON = 0; //清溢出标志
counter ++;
if(counter == 15) //中断计数, 约0.25s
{
counter =0;
LEDFlag = 1; // 闪烁标志变量置1
}
}
if(LEDFlag)
{
YLED = !YLED;
BLED = !BLED;
LEDFlag = 0; // 闪烁标志变量置0
}
}
}
这个代码理解不难,就是对T1CTL寄存器的工作模式是10、11时不太懂,还有定时器具体技术周期计算不是很懂,有无大佬帮忙解答下