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

【CC2530应用开发12】基于定时器1模模式的间隔定时

教学内容与重难点

【内容01】定时器1模模式间隔定时的工作原理。
【内容02】掌握定时器1模模式的初始化和中断服务函数设计。
【内容03】掌握长定时的程序设计思路。
【内容04】完成实训项目:基于定时器1模模式的间隔定时。
——–学生实践实操,老师讲解演示。
【内容05】专创融合专题。

【重点】实训项目:基于定时器1模模式的间隔定时 。
【难点】定时器1模模式的初始化和中断服务函数设计 。

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

定时器模模式的工作原理

【工作原理】:计数器从0x0000开始,在每个活动时钟边沿加1,计数器达到T1CC0寄存器保存的值时产生溢出,计数器又将从0x0000开始新一轮的递增计数。计数溢出后,自动将相应的标志位置1,如果设置了相关的中断使能则会产生一个中断请求。
【应用特点】:模模式的计数周期不是固定值,可由用户自行设定
【设计注意】:定时器1的模模式,需要开启其通道0的输出比较模式

定时器1控制寄存器T1CTL。
详见:【工作手册】《CC2530微控制器应用开发速查宝典》【32】。

定时器1通道0捕获/比较控制寄存器T1CCTL0
详见:【工作手册】《CC2530微控制器应用开发速查宝典》【33】。

实训案例:基于定时器1模模式的间隔定时

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

/*=====================定时器1初始化函数=======================*/
void Init_Timer1()
{
  //1-设置最大计数值 0x30D4,16MHz时钟下定时100ms
  T1CC0L = 0xD4;
  T1CC0H = 0x30;
  //2-开启通道0的比较模式
  T1CCTL0 |= 0x04;
  //3-使能定时器相应中断控制
  T1IE = 1;
  EA = 1;
  //4-启动定时器1
  T1CTL = 0x0E;   //0000 1110
}
/*====================定时器1中断服务函数======================*/
#pragma vector = T1_VECTOR
__interrupt void Service_Timer1()
{
  count++;                  //0.1秒定时累计
  if((count % 10) == 0)     //1秒定时间隔到
  {
    D4 = ~D4;               //切换D4灯的开关状态
  }
  if(count == 40)           //4秒定时间隔到
  {
    D6 = ~D6;               //切换D6灯的开关状态
    count = 0;              //0.1秒累计变量清0
  }
}
/*==========================主函数============================*/
void main()
{
  Init_Port();              //端口初始化
  Init_Timer1();            //定时器1初始化
  while(1);                 //死循环
}

【视频教程】:基于定时器1模模式的间隔定时

赞(4)
未经允许不得转载:小蜜蜂笔记 » 【CC2530应用开发12】基于定时器1模模式的间隔定时

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

联系我们精品小店