教学内容与重难点
【内容01】掌握定时器3倒计数模式的工作原理。
【内容02】定时器3倒计数模式的初始化和中断服务函数的逻辑处理。
【内容03】完成实训项目:基于定时器3倒计数模式的间隔定时。
——–学生实践实操,老师讲解演示。
【内容04】专创融合专题。
【重点】实训项目:基于定时器3倒计数模式的间隔定时。
【难点】定时器倒计数模式的理解与应用。
教学单元核心内容与学习资源
定时器3与定时器4的基本知识
定时器3和定时器4的概述。
详见:【工作手册】《CC2530微控制器应用开发速查宝典》【40】。
定时器3和定时器4的重要寄存器:TxCNT、TxCC0、TxCTL。
详见:【工作手册】《CC2530微控制器应用开发速查宝典》【41】 【42】 【43】 。
实训案例:基于定时器3倒计数模式的间隔定时
新建工程,编写代码,在XMF09B/XMF09C开发套件上,完成以下任务:
1-选择内部16MHz时钟的128分频作为计数器3的计数信号。
2-以倒计数模式启动定时器3,进行1毫秒的间隔定时。
3-在中断服务函数中,实现1秒的间隔定时,并翻转D4灯的开关状态,以实现秒闪灯的功能,即D4灯亮1秒,灭1秒….

/*=====================定时器3初始化函数=======================*/
void Init_Timer3()
{
//1-设置倒计数的起始值:125 0x7D,16MHz时钟下定时1ms
T3CC0 = 0x7D;
//2-使能相关的中断控制位
T3IE = 1;
EA = 1;
//3-设置工作模式为倒计数模式,启动定时3
T3CTL = 0xFD; //1111 1101
}
unsigned int count = 0;
/*====================定时器3中断服务函数======================*/
#pragma vector = T3_VECTOR
__interrupt void Service_Timer3()
{
count++; //0.001秒定时累计
if(count == 1000) //1秒间隔定时到
{
D4 = ~D4;
count = 0;
}
T3CTL = 0xFD; //特别注意:启动新一次倒计数定时
}
/*==========================主函数============================*/
void main()
{
Init_Port(); //端口初始化
Init_Timer3(); //定时器3初始化
while(1); //死循环
}
