【CC2530入门教程-06】CC2530的ADC工作原理与应用

【CC2530入门教程-05】CC2530的串行接口原理与应用

【CC2530入门教程-04】CC2530的定时/计数器原理与应用

【CC2530入门教程-03】CC2530的中断系统及外部中断应用

【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制

【CC2530入门教程-01】CC2530微控制器开发入门基础


一、定时/技术器的基本原理

 定时/计数器,是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向CPU提出中断处理请求,从而实现定时或者计数功能的外设。

定时/计数器的最基本工作原理是进行计数不管是定时器还是计数器,本质上都是计数器,可以进行加1(减1)计数,每出现一个计数信号,计数器就会自动加1(自动减1),当计数值从0变成最大值(或从最大值变成0)溢出时,定时/计数器就会向CPU提出中断请求。

二、CC2530的定时/计数器

CC2530共有5个定时/计数器,其中定时器1是一个16位的定时器,为CC2530中功能最全的一个定时/计数器,在 应用中应优先选用。定时器1的工作模式有三种:

<1> 自由运行模式:计数器从0x0000开始,在每个活动 时钟边沿增加1,当计数器达到0xFFFF时溢出,计 数器重新载入0x0000并开始新一轮的递增计数。该 模式的计数周期是固定值0xFFFF,当达到最终计数 值0xFFFF时,标志位T1IF和OVFIF被设置。

<2> 模模式:计数器从0x0000开始,在每个活动时钟边 沿增加1,当计数器达到T1CC0寄存器保存的值时 溢出,计数器又将从0x0000开始新一轮的递增计数, 模模式的计数周期可由用户自行设定。

<3> 正计数/倒计数模式:计数器反复从0x0000 开始,正计数到TICC0保存的最终计数值,然后再倒计数回0x0000,当达到最终计数值时,标志位T1IF和OVFIF被设置。

三、CC2530的定时/计数器中断系统

定时器有3种情况能产生中断请求:

<1> 计数器达到最终计数值(溢出或回到零)。

<2> 输入捕获事件。

<3> 输出比较事件(模模式时使用)。

使用模模式要特别注意,需要开启通道0的输出比较模式,否则计数器的 值达到T1CC0后,是不会产生溢出中断的。

四、实训项目:应用定时器1的模模式实现1秒定时

【1】设置定时器1的最大计数值

定时器1共有5对T1CCxH和T1CCxL寄存器,分别对应通道0到通道4。在使用定时器1的定时功能时,使用T1CC0HT1CC0L两个寄存器存放最大计数值的高8位和低8位。

最大计数值 = 定时时长 / 定时器计数周期。

在本实训中,系统时钟为16MHz,分频系数为128,要定时0.1秒,最大计数值为:

【2】定时器初始化函数设计

<1> 将定时器1的最大计数值写入T1CC0。

<2> 通过T1CCTL0寄存器开启定时器1通道0的输出比较模式。

<3> 设置定时器1的相关中断控制位。

<4> 设置分频系数和工作模式并启动定时器。

【3】定时器中断服务函数设计

<1> 清除T1STAT的中断标志位。

<2> 累加全局变量count。

<3> count被10整除即1秒的定时到了。

<4> 10秒定时到将count清零。

【4】实训项目源代码

#include "ioCC2530.h"#define  LED5   P1_3
#define  LED6   P1_4
/*===============定时器1初始化函数==================*/
void Init_Timer1()
{T1CC0L = 0xd4;        //设置最大计数值的低8位T1CC0H = 0x30;        //设置最大计数值的高8位T1CCTL0 |= 0x04;      //开启通道0的输出比较模式T1IE = 1;             //使能定时器1中断T1OVFIM = 1;          //使能定时器1溢出中断EA = 1;               //使能总中断T1CTL = 0x0e;         //分频系数是128,模模式
}unsigned char count = 0;
/*================定时器1服务函数====================*/
#pragma vector = T1_VECTOR
__interrupt void Timer1_Sevice()
{T1STAT &= ~0x01;      //清除定时器1通道0中断标志count++;if(count%10 == 0)     //定时1秒到{LED5 = ~LED5;}if(count == 100)      //定时10秒到{LED6 = ~LED6;count = 0;}
}
/*=================端口初始化函数====================*/
void Init_Port()
{P1SEL &= ~0x18;  //将P1_3和P1_4设置为通用I/O端口P1DIR |= 0x18;   //将P1_3和P1_4的端口设置为输出LED5 = 0;LED6 = 0;
}
/*===================主函数=========================*/
void main()
{Init_Port();Init_Timer1();while(1);
}

【CC2530入门教程-04】CC2530的定时/计数器原理与应用相关推荐

  1. 【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制

    [CC2530入门教程-06]CC2530的ADC工作原理与应用 [CC2530入门教程-05]CC2530的串行接口原理与应用 [CC2530入门教程-04]CC2530的定时/计数器原理与应用 [ ...

  2. CC2530的定时/计数器原理与应用

    目录 1.定时计数器的基本原理 2.CC2530的定时/计数器 2.1.定时器1的工作原理 2.2.定时器1的三种工作模式 3.CC2530的定时/计数器中断系统 3.1.定时器1的最大计数值和计算与 ...

  3. CC2530使用定时器实现灯的闪烁,计数器原理和应用

    #include <ioCC2530.h> #define D1 P1_0 #define D2 P1_1 #define SW1 P1_2 int count = 0;//用于定时器计数 ...

  4. C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合

    上一篇: C#,入门教程(03)--Visual Studio 2022编写彩色Hello World与动画效果https://blog.csdn.net/beijinghorn/article/de ...

  5. 51单片机入门 - 定时/计数器原理及结构(T0和T1)

    博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...

  6. 单片机-定时/计数器原理功能介绍

    在单片机应用系统中,我们会需要有定时控制的功能,如定时输出,定时检测,定时扫描等. 这就是单片机中定时/计数器的功能所在,我们在此详细介绍一下计时/计数器的原理功能. 一.定时/计数器的功能原理: 定 ...

  7. python爬虫入门教程04:招聘信息爬取

    前言

  8. ESP8266入门教程04:连接WIFI热点

    一.代码讲解 第2行:包含ESP8266WIFI库头文件,里面包含大量的WIFI操作函数 第4行:设置WIFI名称 第5行:设置WIFI密码 第16行:WiFi.mode(模式)函数用于设置WIFI工 ...

  9. Raspberry Pi 4B树莓派 | #入门教程04#设置屏幕常亮,禁止树莓派休眠

    树莓派是微型电脑,系统自带休眠保护功能,但是有人可能会处理一些事务,想树莓派屏幕常亮,保证树莓派一直都处于活动状态,今天分享如何让树莓派屏幕常亮,禁止休眠的解决方案. raspbian系统 Raspb ...

最新文章

  1. 剑指offer_第17题_树的子结构_Python
  2. parted命令分区
  3. 云时代架构阅读笔记十五——架构设计思维(一)
  4. namesapce的作用 增加访问路径 目的:区分不同包的相同action的访问路径
  5. 文件服务器访问权限分配,设置文件服务器的访问权限
  6. cacti不能实时刷新流量图_介绍一种编码帧内刷新算法
  7. 记录hiveonspark:Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask
  8. linux 高级文件IO
  9. 【ClickHouse】Hangout with ClickHouse
  10. 常用CSS代码片段常见css bug
  11. 小程序使用echarts
  12. ajax中加入if,如何添加if语句到Ajax
  13. Java中字符串比较的注意点
  14. 基于改进麻雀算法优化变分模态分解(IAMSSA—VMD)的信号分解方法
  15. 使用DiskGenius拓展系统盘C盘的容量
  16. autojs各种插件以及教程模板
  17. C#中问号“?”的用法
  18. 一起来云赏月把!three.js实现vr赏月!
  19. Apache关联Weblogic启动时爆错!libstdc++.so.5
  20. JAVA高级---(2)15分钟入门JVM底层原理

热门文章

  1. 辉煌优配|美光被安全审查,芯片概念爆发,北京君正等大涨
  2. Capslock+常用功能汇总
  3. npm install tooltips 提示插件:popper.js
  4. 年少不懂王小波,读懂已是猪圈人!做一只特立独行的猪
  5. linux文件权限s设置,Linux权限位(含特殊权限位s s t) 及chown\chmod命令使用
  6. 华中科技大学校长李培根的演讲
  7. Unity实现读取Excel文件
  8. 注册公司注册资本怎么出?
  9. 专职安全员办公用计算机,3.安全生产审批制度、专项费用保证措施
  10. 五年游戏工作室经验及部分领域性问题浅谈