第一章 定時(shí)器技術(shù)與CC2530時(shí)鐘源介紹
1. 定時(shí)器技術(shù)
定時(shí)器在單片機(jī)里也是屬于基本必備功能,非常常用;程序設(shè)計(jì)里,很多地方都需要使用到時(shí)間的概念,比如:使用定時(shí)器做一些輪詢檢測、精準(zhǔn)的延時(shí)函數(shù)、串口斷幀檢測、定時(shí)器發(fā)送、提供心跳包等等。
定時(shí)器在CPU內(nèi)部的實(shí)現(xiàn)原理:
定時(shí)器,是一種能夠?qū)?nèi)部時(shí)鐘信號或外部輸入信號進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到設(shè)定要求時(shí),向CPU提出中斷處理請求,從而實(shí)現(xiàn)定時(shí)或者計(jì)數(shù)功能的外設(shè)。
定時(shí)器的最基本工作原理是進(jìn)行計(jì)數(shù)。不管是定時(shí)器還是計(jì)數(shù)器,本質(zhì)上都是計(jì)數(shù)器,可以進(jìn)行加1(減1)計(jì)數(shù),每出現(xiàn)一個(gè)計(jì)數(shù)信號,計(jì)數(shù)器就會自動加1(自動減1),當(dāng)計(jì)數(shù)值從0變成最大值(或從最大值變成0)溢出時(shí),定時(shí)就會向CPU提出中斷請求。
CC2530一共帶了5個(gè)定時(shí)器,其中定時(shí)器1是一個(gè)16位的定時(shí)器,屬于CC2530中功能最全的一個(gè)定時(shí),在應(yīng)用開發(fā)中可以優(yōu)先使用。
根據(jù)文檔的介紹定時(shí)器1的工作模式有三種:
第一個(gè)模式是自由運(yùn)行模式:計(jì)數(shù)器從0x0000開始,在每個(gè)活動 時(shí)鐘邊沿增加1,當(dāng)計(jì)數(shù)器達(dá)到0xFFFF時(shí)溢出,計(jì)數(shù)器重新載入0x0000并開始新一輪的遞增計(jì)數(shù)。該模式的計(jì)數(shù)周期是固定值0xFFFF,當(dāng)達(dá)到最終計(jì)數(shù) 值0xFFFF時(shí),標(biāo)志位T1IF和OVFIF被設(shè)置。
第2個(gè)模式是模模式:計(jì)數(shù)器從0x0000開始,在每個(gè)活動時(shí)鐘邊 沿增加1,當(dāng)計(jì)數(shù)器達(dá)到T1CC0寄存器保存的值時(shí) 溢出,計(jì)數(shù)器又將從0x0000開始新一輪的遞增計(jì)數(shù), 模模式的計(jì)數(shù)周期可由用戶自行設(shè)定。
第3個(gè)模式是正計(jì)數(shù)/倒計(jì)數(shù)模式:計(jì)數(shù)器反復(fù)從0x0000開始,正計(jì)數(shù)到TICC0保存的最終計(jì)數(shù)值,然后再倒計(jì)數(shù)回0x0000,當(dāng)達(dá)到最終計(jì)數(shù)值時(shí),標(biāo)志位T1IF和OVFIF被設(shè)置。
復(fù)制代碼
2. 時(shí)鐘源
CC2530一共有兩個(gè)可選的時(shí)鐘源,分別是內(nèi)部和外部。
1、內(nèi)部RC震蕩器(32KHz、16MHz)
2、外部石英晶振(32.768KHz、32MHz)
一般在無線收發(fā)中采用外部石英晶振,因?yàn)橥獠渴⒕д癖容^穩(wěn)定,不受CPU內(nèi)部溫度影響。
3. 時(shí)鐘源的切換
用于判斷時(shí)鐘源是否切換成功
4. 定時(shí)器中斷
定時(shí)器有3種情況能產(chǎn)生中斷請求(幾乎所有單片機(jī)都是這樣的事件分類):
1. 計(jì)數(shù)器到達(dá)設(shè)定的計(jì)數(shù)值
2. 產(chǎn)生輸入捕獲事件
3. 產(chǎn)生輸出比較事件
第二章 相關(guān)寄存器
第三章: 示例代碼
定時(shí)器1共有5對T1CCxH和T1CCxL寄存器,分別對應(yīng)通道0到通道4。在使用定時(shí)器1的定時(shí)功能時(shí),使用T1CC0H和T1CC0L兩個(gè)寄存器存放最大計(jì)數(shù)值的高8位和低8位。
下面編寫定時(shí)器1的使用示例代碼,開啟了定時(shí)器中斷。分別定時(shí)1秒和10秒,在中斷服務(wù)函數(shù)里進(jìn)行判斷,完成LED燈控制。
#include
//定義LED燈的端口
#define LED1 P1_2
#define LED2 P1_3
/*
函數(shù)功能:LED燈IO口初始化
硬件連接:LED1-->P1_2 , LED2-->P1_3
*/
void LED_Init(void)
{
P1DIR |=0x3<<2; //配置P1_2、P1_3為輸出模式
LED1 = 1;
LED2 = 1;
}
/*延時(shí)200毫秒*/
void delay200ms(void) //誤差 -0.125us
{
unsigned char a,b,c;
for(c=95;c>0;c--)
for(b=181;b>0;b--)
for(a=14;a>0;a--);
}
/*===============定時(shí)器1初始化函數(shù)==================*/
void Init_Timer1()
{
T1CC0L = 0xd4; //設(shè)置最大計(jì)數(shù)值的低8位
T1CC0H = 0x30; //設(shè)置最大計(jì)數(shù)值的高8位
T1CCTL0 |= 0x04; //開啟通道0的輸出比較模式
T1IE = 1; //使能定時(shí)器1中斷
T1OVFIM = 1; //使能定時(shí)器1溢出中斷
EA = 1; //使能總中斷
T1CTL = 0x0e; //分頻系數(shù)是128,模模式
}
unsigned char count = 0;
/*================定時(shí)器1服務(wù)函數(shù)====================*/
#pragma vector = T1_VECTOR
__interrupt void Timer1_Sevice()
{
T1STAT &= ~0x01; //清除定時(shí)器1通道0中斷標(biāo)志
count++;
if(count%10 == 0) //定時(shí)1秒到
{
LED1 = !LED1;
}
if(count == 100) //定時(shí)10秒到
{
LED2 = !LED2;
count = 0;
}
}
/*主函數(shù)*/
void main(void)
{
LED_Init();//初始化LED燈控制IO口
Init_Timer1();
while(1)
{
}
}
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6063文章
44915瀏覽量
646824 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3287瀏覽量
117199 -
CC2530
+關(guān)注
關(guān)注
19文章
221瀏覽量
58734 -
時(shí)鐘源
+關(guān)注
關(guān)注
0文章
97瀏覽量
16235
發(fā)布評論請先 登錄
【技術(shù)精選】嵌入式STM32原創(chuàng)征文活動精選文章
基于CC2530芯片_zigbee基礎(chǔ)實(shí)驗(yàn)
基于CC2530的ZigBee協(xié)調(diào)器節(jié)點(diǎn)設(shè)計(jì)

如何使用ZigBee TI ZStack CC2530 2.5搭建開發(fā)環(huán)境

基于zigbee CC2530和環(huán)境光傳感器實(shí)現(xiàn)照度計(jì)的設(shè)計(jì)

cc2530 睡眠定時(shí)器串口顯示

CC2530定時(shí)器3

CC2530定時(shí)器1使能

cc2530學(xué)習(xí)筆記一

基于CC2530的ZigBee通信網(wǎng)的應(yīng)用設(shè)計(jì).pdf
CC2530查詢方式使用定時(shí)器
CC2530(zigbee)入門開發(fā): 安裝IAR開發(fā)環(huán)境

基于CC2530的ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì)

評論