单片机学习小组
登录
直播中
HTSX
9年用户
816经验值
擅长:可编程逻辑
私信
关注
怎样去使用CC2530的定时/计数器中断系统呢
开启该帖子的消息推送
中断系统
计数器
怎样去使用CC2530的定时/计数器中断系统呢?
CC2530的定时/计数器
初始化的方法和原理是什么?
回帖
(1)
许朝亮
2022-1-25 15:47:09
#include
#define D1 P1_0
#define D2 P1_1
#define SW1 P1_2
int count = 0;//用于定时器计数,每进入中断一次计数值+1
void Init_Port()
{
P1SEL &= ~0X07;
P1DIR |= 0X03;
P1DIR &= ~0X04;
P1 &= ~0X03;
}
void Init_Tiner1()
{
//***********************************
T1CC0L = 0XD4;//1.写入最大计数值低8位
T1CC0H = 0X30;//写入最大计数值高8位
//***********************************
T1CCTL0 |= 0X04;//2.开启通道0的比较模式
T1CTL = 0X0E; //3.设置定时器1的分频系数和工作模式
T1IE = 1;//4.使能定时器1中断
EA = 1; //5.使能总中断
}
#pragma vector = T1_VECTOR
__interrupt void T1()
{
count++;
}
void main()
{
Init_Port();
Init_Tiner1();
while(1)
{
if(count == 5)//计数值为5的时候,也就是0.5s的时候打开灯
{
D1 = 1;
D2 = 1;
}
if(count == 10)//计数值为10的时候,也就是1s的时候关闭灯
{
D1 = 0;
D2 = 0;
count = 0;//将计数值清空,为下一轮做准备
}
}
}
这串代码实现的是0.1s的定时器中断,0.5s切换一次灯的亮灭状态
这里为大家介绍一下定时器的原理和功能
一、定时/技术器的基本原理
定时/计数器
,是一种能够对内部时钟信号或外部输入信号进行计数,当
计数值达到设定要求
时,向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的最大计数值写入T1CC0。
<2> 通过T1CCTL0寄存器开启定时器1通道0的输出比较模式。
<3> 设置定时器1的相关中断控制位。
<4> 设置分频系数和工作模式并启动定时器。
定时器计数值的计算
最大计数值=定时时长/定时器计数周期
0.1s
= —————
1/16M*128
=12500
= 0x30D4
写几个常用的给大家 30D4是0.1s
7A12是0.25s
F424是0.5s
#include
#define D1 P1_0
#define D2 P1_1
#define SW1 P1_2
int count = 0;//用于定时器计数,每进入中断一次计数值+1
void Init_Port()
{
P1SEL &= ~0X07;
P1DIR |= 0X03;
P1DIR &= ~0X04;
P1 &= ~0X03;
}
void Init_Tiner1()
{
//***********************************
T1CC0L = 0XD4;//1.写入最大计数值低8位
T1CC0H = 0X30;//写入最大计数值高8位
//***********************************
T1CCTL0 |= 0X04;//2.开启通道0的比较模式
T1CTL = 0X0E; //3.设置定时器1的分频系数和工作模式
T1IE = 1;//4.使能定时器1中断
EA = 1; //5.使能总中断
}
#pragma vector = T1_VECTOR
__interrupt void T1()
{
count++;
}
void main()
{
Init_Port();
Init_Tiner1();
while(1)
{
if(count == 5)//计数值为5的时候,也就是0.5s的时候打开灯
{
D1 = 1;
D2 = 1;
}
if(count == 10)//计数值为10的时候,也就是1s的时候关闭灯
{
D1 = 0;
D2 = 0;
count = 0;//将计数值清空,为下一轮做准备
}
}
}
这串代码实现的是0.1s的定时器中断,0.5s切换一次灯的亮灭状态
这里为大家介绍一下定时器的原理和功能
一、定时/技术器的基本原理
定时/计数器
,是一种能够对内部时钟信号或外部输入信号进行计数,当
计数值达到设定要求
时,向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的最大计数值写入T1CC0。
<2> 通过T1CCTL0寄存器开启定时器1通道0的输出比较模式。
<3> 设置定时器1的相关中断控制位。
<4> 设置分频系数和工作模式并启动定时器。
定时器计数值的计算
最大计数值=定时时长/定时器计数周期
0.1s
= —————
1/16M*128
=12500
= 0x30D4
写几个常用的给大家 30D4是0.1s
7A12是0.25s
F424是0.5s
举报
更多回帖
rotate(-90deg);
回复
相关问答
中断系统
计数器
CC2530
有哪些
定时器
?
2022-01-25
1590
CC2530
项目开发流程是
怎样
的?
2021-10-21
1130
怎样
去
设计一种基于
CC2530
单片机的温度报警
器
2021-09-24
1756
如何使用
cc2530
定时器
来产生pwm波?
2022-01-25
1488
CC2530
单片机
定时器
的原理是什么?怎么使用?
2022-01-25
1574
请问
怎样
去
设计一种基于
CC2530
和TPS5401的单相能量计?
2021-06-30
1341
定时
/
计数器
是
怎样
去
实现
定时
1ms的任务
呢
2022-01-21
1620
cc2530
最小
系统
是由哪些部分组成的
2022-01-25
3604
cc2530
为什么在休眠唤醒后无法发送数据?
2016-03-30
4238
怎样
去
选择单片机
定时器
/
计数器
的模式
呢
2022-01-21
1247
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分