CC2540开发板学习笔记(四)——定时器

一、实验内容

分别使用定时器T1和T3使得LED周期性闪烁

二、实验过程

1、定时器T1(查询IRCON来控制)

(1)需要调配的寄存器

T1CTL(0XE4) Timer1控制寄存器
  BIT3,BIT2:定时器分频倍数选择
00:不分
01:8分频
10:32分频
11:128分频
  BIT1,BIT0:定时器模式选择:
00:暂停
01:自动重装:0X0000—0XFFFF
10:比较计数:0X0000—T1CC0
11:PWM方式
T1STAT(0XAF) Timer1状态寄存器:
  BIT5:OVFIF
定时器溢出中断标志,在数值达到计数终值时置为1.
 
Bit4: 定时器 1 通道 4 中断标志位
Bit3: 定时器 1 通道 3 中断标志位
Bit2: 定时器 1 通道 2 中断标志位
Bit1: 定时器 1 通道 1 中断标志位
Bit0: 定时器 1 通道 0 中断标志位

IRCON(0XCO) 中断标志位寄存器;

(2)定时器T1的初始化:

T1CTL=0X0d;
T1STAT=0X21;

(3)代码实现

#include<ioCC2540.h>

#define LED1 P1_0    //定义LED1,方便查阅代码

void Init()//初始化函数
{
  P1SEL = 0X00;    //实现LED的初始化
  P1DIR = 0X01;
  P1INP = 0X00;
  LED1 = 0;

  T1CTL = 0X0d;  //128分频,自动重装0X0000-0XFFFF;,时钟频率为16MHZ
  T1STAT = 0X21; //通道0,中断有效
  EA=1;
}

void main(void)
{
  Init();
  unsigned char count=0;

  while(1)
  {
    if(IRCON>0)       //检查是否置位为1
    {
      IRCON=0;
      count++;         //由于分频128后,已经满足1s的闪烁周期。

      if(count>=1)
      {
        count=0;
        LED1=~LED1;
      }
    }
  }
}

2、定时器T3(中断方式)

(1)需要调配的寄存器

T3CTL(0XCB) Timer3:控制寄存器
  BIT7,BIT6,BIT5:定时器时钟分频倍数选择

000:不分频

001 :2 分频

010 : 4 分频

011 : 8分频

100 :16 分频

101 :32 分频

110 : 64 分频

111 :128分频

  BIT4:T3起止控制位
  BIT3:溢出中断掩码
0:关中断溢出
1:开中断溢出
  BIT2:清计数值,高电平有效
  BIT1,BIT0:T3模式选择:

00 :自动重装 0X00 -0XFF
01 : DOWN ( 从 T3CC0 到 0X00 计数一次 )
10 : 模计数(反复从 0X00 到 T3CC0 计数)
11 : UP/DOWN( 反复从 0X00 到 T3CC0计数再到 0X00)

T3CCTL0(0XCC) T3通道 0 捕获/比较控制寄存器
  BIT6:T3通道 0 中断掩码
0:关中断,1:开中断
  BIT5,BIT4,BIT3:T3通道 0 比较输出模式选择
  BIT2:T3通道 0 模式选择:
0:捕获     1:比较
  BIT1,BIT0:T3通道 0 捕获模式选择:

00 没有捕获

01 上升沿捕获

10 下降沿捕获

11 边沿捕获

T3CC0(0XCD) T3 通道 0 捕获 / 比较寄存器
T3CCTL1(0XCE) T3通道 1 捕获/比较控制寄存器
  BIT6:T3通道1中断掩码
0:关中断,1:开中断
  BIT5,BIT4,BIT3:T3通道 1 比较输出模式选择
  BIT2:T3通道 1 模式选择:
0:捕获     1:比较
  BIT1,BIT0:T3通道 1 捕获模式选择:

00 没有捕获

01 上升沿捕获

10 下降沿捕获

11 边沿捕获

T3CC1(0XCF) T3 通道 1 捕获 / 比较寄存器
时间: 2024-10-08 07:34:01

CC2540开发板学习笔记(四)——定时器的相关文章

CC2540开发板学习笔记(五)&mdash;&mdash;串口通信

一.实验现象: 开发板实现 3个功能.发送.收发.控制 LED. 二.实验过程 1.PL2303 USB转串口电路图 2.串口发送 (1)查看用户手册有: UART0 对应的外部设备 IO 引脚关系为: P0_2 ------ RX                                                     P0_3 ------ TXUART1 对应的外部设备 IO 引脚关系为: P0_5 ------ RX                             

CC2540开发板学习笔记(三)&mdash;&mdash;外部中断

一.实验内容 通过外部中断方式依次按下按键S1控制LED1的亮灭 二.实验过程 1.电路原理图同上 2.中断的概念 比如说我们在执行main函数时,突然来了个指令.优先级比现在执行的main还高,那我们便选择跳过去执行优先级高的,完了之后再执行main函数,中断就类似这样一个概念,使用中断可以减少CPU的无效浪费,降低能耗. 3.寄存器调度 (1)LED1的初始化..同前两节,就是SEL,DIR,INP三个,还有附初始状态. (2)外部中断初始化(S1的外部中断初始化) 按键S1外部中断初始化方

CC2540开发板学习笔记(二)&mdash;&mdash;按键

一.实验内容 用按键S1控制LED1的亮和灭 二.实验过程 1.电路原理: 可以看出,当S按下P0.0和P0.1接地,反之则接高电压. 2.寄存器使用: 依旧应该首先进行3个基本寄存器的设定,对LED和按键S都要进行设定. 3.代码实现(IAR环境下) #include<ioCC2540.h> #define LED1 P1_0 //定义LED1,方便查阅代码 #define KEY1 P0_0 //定义按键S1 //函数声明 void Delayms(unsigned int t); //延

CC2540开发板学习笔记(一)&mdash;&mdash;LED点亮

一.实验内容: 点亮LDE1.2 二.实验原理: 1.电路原理图: 就一个发光二极管串联一个电阻.电阻是为了防止电流过大.利用发光二极管的单向导电性,在P1为高电平是点亮LED,在低电平是熄灭LED. 2.CC2540的IO配置所需寄存器:P1SEL .P1DIR .P1INP P1SEL 0:普通IO口,  1:第三功能, 默认设置为0 P1DIR 0:输入           1:输出 P1INP 0:上拉/下拉    1:三态 3.代码如下: #include<ioCC2540.h> #

CC2540开发板学习笔记(七)&mdash;&mdash; 睡眠唤醒

(一)中断唤醒 一.实验内容 通过中断唤醒在睡眠模式下的CC2540 二.实验原理 1.系统电源管理(工作方式) (1)全功能模式: 高频晶振(16M或者32M)和低频晶振(32.768K RCOSC/XOSC)全部工作,数字梳理模块正常工作 (2)PM1: 高频晶振(16或者32M)关闭,低频晶振(32.768K RCOSC/XOSC)工作,数字核心模块正常工作. (3)PM2: 低频晶振(32.768K RCOSC/XOSC)工作,数字核心模块关闭,系统通过RESET,外部中断或者睡眠计时器

CC2540开发板学习笔记(六)&mdash;&mdash;AD控制(自带温度计)

一.实验目的 将采集的内部温度传感器信息通过串口发送到上位机 二.实验过程 1.寄存器配置 ADCCON1(0XB4)ADC控制寄存器1 BIT7:EOC   ADC结束标志位0:AD转换进行中                     1:AD转换完成   BIT6:ST     手动启动AD转换0:关闭                                  1:自动AD转换(需要BIT5:BIT4=11)   BIT5:BIT4   AD转换启动方式00:外部触发01:全速转换,不

CC2540开发板学习笔记(七)&mdash;&mdash; 看门狗

一.功能: 防止程序跑飞,使得系统重新进入工作状态,即一种复位操作吧. 但需要不停地喂狗= =(就是不断的执行某种操作),假如说你的程序跑到了不知道哪里去的错误时,即不会实现喂狗,就会发生复位,程序就进入正常工作状态. 二.模拟看门狗作用 加上注释相当于进入不正常的工作状态. #include<ioCC2540.h> #define uint unsigned int #define uchar unsigned char //定义控制LED灯的端口 #define LED1 P1_0 #de

【4412嵌入式开发板学习笔记】认识uboot

转自迅为讨论群:http://www.topeetboard.com 重要说明:这份笔记不是4412开发配套的,是我在网上看视频的时候下载上课老师的笔记后修改的.所以我试了一下笔记上的uboot命令,有些无法使用,可能是uboot版本问题或者文件系统问题.具体原因我目前还不是很清楚,建议第五部分uboot命令可以先不用尝试. 一切以配套视频为准. 一.为什么是uboot 1.uboot从哪里来的? (1)uboot是SourceForge上的开源项目 (2)uboot项目的作者:一个德国人最早发

【转帖】4412ARM开发板学习笔记(一)

本文转自迅为论坛:http://www.topeetboard.com 新手在进行开发学习前,建议先看01-迅为电子开发板入门视频.对开发板和开发环境有一定的了解后,不要盲目接线开机.以下是个人的一点经验,和大家分享一下. 补充:这是第一份笔记,主要是提供给刚拿到板子的同学,2.3分钟就可以看完,避免你走歪路.实际上视频上都有,我只是整理了一下.之后我大概不定期会陆续上传一些我的学习笔记分享给大家,希望大家可以给出建议.以后可以的话会整理一下,打包上传,也给后来学习的人一个参考,方便大家共勉.