小蜜蜂笔记
嵌入式开发与物联网应用教育践行者

【CC2530应用开发17】定时器3和定时器4同时间隔定时

教学目标与重难点

【内容01】强化定时器倒计数模式和模模式的应用。
【内容02】掌握多定时器联合应用的基本逻辑。
【内容03】完成实训项目:定时器3和定时器4同时间隔定时。
——–学生实践实操,老师讲解演示。
【内容04】专创融合专题。

【重点】实训项目:定时器3和定时器4同时间隔定时。
【难点】多定时器联合应用的程序设计思路。

教学单元核心内容与学习资源

实训案例:定时器3和定时器4同时间隔定时

新建工程,编写代码,在XMF09B/XMF09C开发套件上,完成以下任务:
1-选择内部16MHz时钟的128分频作为计数器3和计数器4的计数信号。
2-以倒计数模式启动定时器3,进行1毫秒的间隔定时。
3-以模模式启动定时器4,进行1毫秒的间隔定时。
4-在定时器3的中断服务函数中,每隔1秒翻转D4灯的开关状态,在定时器4的中断服务函数中,实现4秒的间隔定时,并翻转D6灯的开关状态。

#define D4 P1_1
#define D6 P1_4
unsigned int count3 = 0, count4 = 0;
/*=====================定时器3初始化函数=======================*/
void Init_Timer3()
{
  T3CC0 = 0x7D;
  T3IE = 1;
  EA = 1;
  T3CTL =0xFD;              //倒计数模式,启动定时器3
}
/*====================定时器3中断服务函数======================*/
#pragma vector = T3_VECTOR
__interrupt void Service_Timer3()
{
  count3++;
  if(count3 == 1000)        //1秒间隔定时到
  {
    D4 = ~D4;
    count3 = 0;
  }
  T3CTL =0xFD; 
}
/*=====================定时器4初始化函数=======================*/
void Init_Timer4()
{
  T4CC0 = 0x7D;
  T4IE = 1;
  EA = 1; 
  T4CCTL0 |= 0x04;          //开启定时器4通道0的比较模式
  T4CTL =0xFE;              //模模式,启动定时器4
}
/*====================定时器4中断服务函数======================*/
#pragma vector = T4_VECTOR
__interrupt void Service_Timer4()
{
  count4++;
  if(count4 == 4000)        //4秒间隔定时到
  {
    D6 = ~D6;
    count4 = 0;
  }
}
/*==========================主函数============================*/
void main()
{
  Init_Port();              //端口初始化
  Init_Timer3();            //定时器3初始化
  Init_Timer4();            //定时器4初始化
  while(1);                 //死循环
}

【视频教程】:定时器3和定时器4同时间隔定时

赞(13)
未经允许不得转载:小蜜蜂笔记 » 【CC2530应用开发17】定时器3和定时器4同时间隔定时

小蜜蜂笔记 更专业 更方便 更高效

联系我们精品小店