TI CC2530基础实验(定时器1查询方式——自由运行模式)
本实验实现通过CC2530的定时器1(16位)查询方式控制LED1以1S的周期性闪烁,此实验使用的三个寄存器T1CTL(定时器1控制寄存器),T1STAT(定时器1状态寄存器),IRCON。
有关CC2530的GPIO基本知识、普通GPIO操作有关寄存器的介绍、IAR Embedded Workbench IDE软件使用:TI CC2530基础实验(普通GPIO操作——点亮led灯)
电路原理图:
寄存器分析:
定时器1的T1CTL寄存器下的模式分析:
当定时器运行在模模式,16位计数器从0x0000开始,每个活动时钟边沿增加1。当计数器达到T1CC0(溢出),寄存器T1CC0H:T1CC0L保存的最终计数值,计数器将复位到0x0000,并继续递增。如果定时器开始于T1CC0以上的一个值,当达到最终计数值(0xFFFF)时,设置标志IRCON.T1IF和T1CTL.OVFIF。如果设置了相应的中断屏蔽位TIMIF.OVFIM以及IEN1.T1EN,将产生一个中断请求。模模式可以用于周期不是0xFFFF的应用程序。计数器的操作展示如下图:
【正计数/倒计数模式】:
在正计数/倒计数模式,计数器反复从0x0000开始,正计数直达到T1CC0H:T1CC0L保存值。然后计数器将倒计数指导0x0000,如下图所示。这个定时器用于周期必须是对称输出脉冲而不是0xFFF的应用程序,因此允许中心对齐的PWM输出应用的实现。在正计数/倒计数模式,当达到最终计数值时,设置标志IRCON.T1IF和T1CTL.OVFIF。如果设置了相应的中断屏蔽位TIMIF.OVFIM以及IEN1.T1EN,将产生一个中断请求。
2、定时器1状态寄存器
3、中断标志4寄存器
程序——定时器1采用自由运行模式:
#include <ioCC2530.h>/************************************* 程序说明:LED1以1S的周期性闪烁***********************************/#define LED1 P1_0/********************************************************* * 函数描述:初始化LED1* 备注:系统不配置工作时钟时使用内部 RC 振荡器,即16MHz*********************************************************/
void LED1Init(void)
{P1SEL &= ~0x01; //功能:普通I/OP1DIR |= 0x01; //方向:输出LED1 = 1; //使其属于灭状态
}/*********************************** * 函数描述:定时器1初始化* 设置:分频、运行模式**********************************/
void T1Init(void)
{T1CTL |= 0x0c; //设置为128分频T1CTL |= 0x01; //设置为自由运行模式,从0x0000到0xFFFF反复计数
}void main()
{unsigned char count = 0;//用来记录定时器溢出次数LED1Init();T1Init();for (;;){
#if 1if ((T1STAT & 0x20) > 0)//判断T1STAT的bit5{T1STAT &= ~0x20;if (++count == 1){count = 0;LED1 = !LED1;}}
#else if ((IRCON & 0x02) > 0)//判断IRCON的bit1{IRCON &= ~0x02;//清除中断标志IRCON = 0;if (++count == 1){count = 0;LED1 = !LED1;}}
#endif}
}
系统在不配置 工作频率时默认为2分频,即32M/2=16M,所以定时器每次溢出时T=1/(16/128)*65536≈0.5s,其中128是设置定时器1的分频,65536是0x0000~0xFFFF总共递增次数,所以总时间Ta=T*count=0.5*1=0.5s切换1次状态,这样看起来才是1S删除1次。
注意:每创建一个新工程都要配置IAR(做基础实验),TI CC2530基础实验(普通GPIO操作——点亮led灯)也有IAR相关配置步骤
总结:
定时器1在采用自由运行模式从0x0000计数开始,到0xFFFF溢出,其当定时器1采用128分频,在默认的工作频率下,一次溢出约为0.5s。
定时器1查询方式是通过判断T1STAT.OVFIF和IRCON.T1IF是否置1来判断定时器是否溢出。
TI CC2530基础实验(定时器1查询方式——自由运行模式)相关推荐
- CC2530————通过定时器T1查询方式控制LED1周期性闪烁(模模式)
CC2530----通过定时器T1查询方式控制LED1周期性闪烁(模模式) 宏定义与函数声明 初始化 主函数 宏定义与函数声明 /*********************************** ...
- CC2530基础实验:(8)串口通讯-发送字符串控制LED
目录 前言 一.实验相关电路图 二.实验相关理论与寄存器 1.并行通信与串行通信 2.URAT 3.同步通信与异步通信 4.外设I/O 5.CC2530 的串口通信模块 6.相关寄存器 三.源码分析 ...
- 用定时器T0查询方式P0口8位控制LED闪烁
#include<reg52.h> #define uchar unsigned char #define uint unsigned int void main (void) { uch ...
- 用定时器T0查询方式P0口8位控制LED闪烁 T1查询方式P1口8位控制LED闪烁
//用定时器T0查询方式P0口8位控制LED闪烁 T1查询方式P1口8位控制LED闪烁 #include<reg52.h> // 包含52单片机寄存器定义的头文件 #def ...
- K210基础实验—定时器
K210基础实验-定时器 ZTFR开发板 定时器 构造函数 测试代码 ZTFR开发板 定时器 硬件定时器,可以用来定时触发任务或者处理任务,设定时间到了后可以触发中断(调用回调函数),精度比软件定时器 ...
- CC2530基础实验四 串口通信
一.任务要求 编写程序实现实验板定期向PC机串口发送字符串"Hello ! I am CC2530 .\n".实验板开机后按照设定的时间间隔,不断地向PC及发送字符串,报告自己的状 ...
- CC2530基础实验:(1)按键控制LED跑马灯
文章目录 前言 一.实验相关电路图 二.实验相关寄存器 三.源码分析 前言 本实验用于学习CC2530芯片GPIO 的配置方法,Led 驱动电路及开关 Led 的原理,按键的使用,实现简单的人机交互. ...
- CC2530基础实验:(11)系统睡眠唤醒--定时器唤醒
目录 前言 一.实验相关电路图 二.实验相关理论与寄存器 三.源码分析 前言 1) 为什么要睡眠? Zigbee的特点就是远距离低功耗的无线传输设备,节点模块闲时可以 进入睡眠模式,在需要传输数据时 ...
- CC2530基础实验:(2)外部中断控制LED亮灭
目录 前言 一.实验相关电路图 二.实验相关理论与寄存器 1.中断相关的基础概念 2.CC2530 的中断系统 3.CC2530 的中断处理函数编写方法 4.CC2530 的外部中断 三.源码分析 前 ...
最新文章
- OpenCASCADE绘制测试线束:拓扑命令之Making the touching shapes connected
- java调用存储过程之环境测试
- avs 中国音视频标准DRA 中音频标准及应用
- 37signals为何砍掉中层?个人点评,高素质人才队伍工作,靠的是全体发挥综合能力,而不是靠......
- 学计算机的人都会CAD制图吗,CAD到底该如何学习?
- 信息学奥赛一本通(1177:奇数单增序列)——比较排序
- jQuery框架总体分析
- 迁移solaris ufs根文件系统至zfs根文件系统
- 用DISKGEN恢复硬盘数据
- 比python更精简的语言,两行代码抓取淘宝/京东平台的商品数据--Uibot
- 小白看完都学会了!Jetpack-MVVM-高频提问和解答,面试建议
- php 网站克隆,如何快速克隆一个网站
- 解决网页上不能直接复制文字的问题
- tf.ones_like()函数用法详解(附代码理解)
- 响铃:丁磊造“网易美学”,是社区进化,还是包抄内容创业
- 微信开发五之微信红包开发
- 惊恐,还真有大神把地府后台管理系统做出来了,“阎王爷”疯狂点
- MATLAB铁轨检测+异物识别
- Matplotlib画图之调整字体大小
- Linux pxe 安装