CC2530定时器1实现查询定时1-2

server/2024/10/15 18:07:55/

1源码

#include "iocc2530.h"void led_init(){P1SEL &=~0xff;//通用ioP1DIR |=0x01;//输入输出P1_0=0;//灭灯
}void T1_init(){T1CTL =0x0d;//设置分频,和模式(128分频,0x0000~0xffff)
// 最大计数值=定时时长/定时器计数周期=0.25/(1/16M(时钟源) X 128(分频) )=31250=0x7A12
}
void main(){int count;//选择时钟源,上电默认是内部时钟源16Mled_init();//初始化LEDT1_init();//初始化定时器1while(1){if(IRCON>0){IRCON=0x00;//清除溢出标志count++;}if(count==2){//P1_0=1;}if(count==4){//P1_0=0;}if(count>4){count=0;}}
}

2寄存器讲解

CC2530芯片默认上电时,是使用内部的两个RC电路作为时钟来源的。具体来说,这两个RC电路分别提供高频时钟(16MHz)和低频时钟(32KHz)信号。

io的

定时器的
T1CTL

在使用定时器1的定时功能时,使用T1CC0H和T1CC0L两个寄存器存放最大计数值的 高8位和低8位。T1CCxH和T1CCxL共5对,分别对应定时器1的通道0到通道4,两个寄存器 的功能描述如表T-1-33-2和表T-1-33-3。 

T1CCxH
T1CCxL

定时器1的工作模式设定 由于需要手工设定最大计数值,因此可为定时器1选择工作模式为正计数/倒计数模 式,只需要设置T1CTL寄存器中的MODE[1:0]位即可。一旦设置了定时器1的工作模式 (MODE[1:0]为非零值),则定时器1立刻开始定时计数工作,设置代码如下。 T1CTL|=0x03; //定时器1采用模模式

如果使用的是定时器3或定时器4,参照表T-1-33-4设置相关寄存器。

T3CNTH
T4CNTN

 T1STAT寄存器的描述

查询方式

1判断计数的值

通过读取T1CNTH和T1CNTL两个寄存器来分别获取当前计数值的高位字节和低位字节。

当读取T1CNTL寄存器时,计数器的高位字节会被缓冲到T1CNTH寄存器,以便高位字节可以从T1CNTH中读出,因此在程序中应先读取T1CNTL寄存器,然后读取T1CNTH寄存器。

2判断溢出寄存器
IRCON
#include "iocc2530.h"void led_init(){P1SEL &=~0xff;//通用ioP1DIR |=0x01;//输入输出P1_0=0;//灭灯
}void T1_init(){T1CTL =0x0d;//设置分频,和模式(128分频,0x0000~0xffff)
// 最大计数值=定时时长/定时器计数周期=0.25/(1/16M(时钟源) X 128(分频) )=31250=0x7A12
}
void main(){int count;//选择时钟源,上电默认是内部时钟源16Mled_init();//初始化LEDT1_init();//初始化定时器1while(1){if(IRCON>0){IRCON=0x00;//清除溢出标志count++;}if(count==2){//P1_0=1;}if(count==4){//P1_0=0;}if(count>4){count=0;}}
}

 


http://www.ppmy.cn/server/132304.html

相关文章

【揭秘】短剧小程序爆火背后:狗血剧情背后的百万商机!

近年来,随着移动互联网的迅猛发展,短视频和短剧逐渐成为人们日常娱乐消遣的新宠儿。尤其是一些充满戏剧冲突、情节紧凑的短剧,在各大社交平台上迅速走红,吸引了大量年轻用户的关注。今天我们就来揭开这些短剧小程序爆火的秘密&…

基于YOLOv11的车辆行人实时检测系统(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)

上百种【基于YOLOv8/v10/v11的目标检测系统】目录(pythonpyside6界面系统源码可训练的数据集也完成的训练模型)-CSDN博客 ............................................................................................ 摘要: 本文提出了…

鸿蒙--播放器状态控制

各个页面共享同一个播放状态,而且可以互相控制,如果传递来传递去会非常的麻烦,但是他们都是Tabs组件内的,我们在index页面提供一个状态,在各个组件接收即可 创建两个子组件,一个是播放控制的子组件,一个是背景播放的子组件 背景播放组件

部署私有仓库以及docker web ui应用

官方地址:https://hub.docker.com/_/registry/tags 一、拉取registry私有仓库镜像 docker pull registry:latest 二、运⾏容器 docker run -itd -v /home/dockerdata/registry:/var/lib/registry --name "pri_registry1" --restartalways -p 5000:5000 …

专题:贪心算法(已完结)

1.分发饼干 方法一&#xff1a;用最大的胃口 找到最大的饼干&#xff08;先遍历胃口&#xff09; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 主要思路 用最大的饼干找最大的胃口sort(g.begin(),g.end());so…

华为S5735交换机console密码重置和恢复出厂设置

比较简单&#xff0c;简单说就是进入bootload清除密码&#xff0c;然后进入default mode下重置密码。 1.开机按CtrlB&#xff0c;进入启动加载菜单&#xff08;BootLoad menu&#xff09; 拨电源重启交换机&#xff0c;大约开机10多秒的时候会出现提示按CtrlB可以进入BootLoa…

我常用的两个单例模式写法 (继承Mono和不继承Mono的)

不继承Mono 不继承Mono代表不用挂载到场景物体上面&#xff0c;因此直接饿汉式 加 合并空运算符判空创建实例 >(lambda表达式)的意思是get&#xff0c;就是将instance赋给Instance属性 //单例private static JsonDataManager instance new JsonDataManager();public stati…

Yocto - Meta-data中的PATCHTOOL变量介绍

在 Yocto 中&#xff0c;“do_patch ”任务负责在构建过程中为源代码打补丁。Yocto 支持多种补丁管理工具&#xff0c;例如 patch、quilt 和 git&#xff0c;每种工具都有不同的特性和用例。 在 Yocto 项目中&#xff0c;PATCHTOOL 变量决定了用于为源代码打补丁的工具。 In Yo…