TI CC2530基础实验(定时器1查询方式——自由运行模式)

2024-03-27 15:58

本文主要是介绍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、定时器1控制寄存器


定时器1的T1CTL寄存器下的模式分析

自由运行模式】:
在自由运行操作模式下,计数器从0x0000开始,每个活动时钟边沿增加1。当计数器达到0xFFFF(溢出)后,计数器重新载入0x0000,继续递增它的值,如下图所示。当达到最终计数值0xFFFF,设置标志IRCON.T1IF和T1STAT.OVFIF。如果设置了相应的中断屏蔽位TIMIF.OVFIM以及IEN1.T1EN,将产生一个中断请求。自由运行模式可以用于产生独立的时间间隔,输出信号频率

模模式】:

当定时器运行在模模式,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查询方式——自由运行模式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/852663

相关文章

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代