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

【CC2530应用开发16】基于定时器3倒计数模式的间隔定时

教学内容与重难点

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

【重点】实训项目:基于定时器3倒计数模式的间隔定时。
【难点】定时器倒计数模式的理解与应用。

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

定时器3与定时器4的基本知识

定时器3和定时器4的概述。
详见:【工作手册】《CC2530微控制器应用开发速查宝典》【40】。

定时器3和定时器4的重要寄存器:TxCNT、TxCC0、TxCTL。
详见:【工作手册】《CC2530微控制器应用开发速查宝典》【41】 【42】 【43】 。

【视频教程】:定时器3与定时器4概述

实训案例:基于定时器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);                 //死循环
}

【视频教程】:基于定时器3倒计数模式的间隔定时

赞(6)
未经允许不得转载:小蜜蜂笔记 » 【CC2530应用开发16】基于定时器3倒计数模式的间隔定时

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

联系我们精品小店