第四章-CC2530基礎開發(fā)_第1頁
第四章-CC2530基礎開發(fā)_第2頁
第四章-CC2530基礎開發(fā)_第3頁
第四章-CC2530基礎開發(fā)_第4頁
第四章-CC2530基礎開發(fā)_第5頁
已閱讀5頁,還剩227頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

-1-第四章CC2530基礎(jīchǔ)開發(fā)共二百三十二頁-2-本章(běnzhānɡ)目標掌握I/O的使用理解存儲器以及(yǐjí)映射的關系掌握ADC的使用方法掌握串口和DMA的使用方法掌握定時器的使用共二百三十二頁-3-本章(běnzhānɡ)目標掌握I/O的使用理解存儲器以及映射的關系(guānxì)掌握ADC的使用方法掌握串口和DMA的使用方法掌握定時器的使用共二百三十二頁-4-高性能、低功耗的8051微控制器內(nèi)核。適應2.4GHzIEEE802.15.4的RF收發(fā)器。極高的接收靈敏度和抗干擾性。32KB/64KB/128KB/256KB閃存。8KBSRAM,具備各種供電方式下的數(shù)據(jù)保持能力。強大的DMA功能。只需極少的外接元件,即可形成一個簡單應用(yìngyòng)系統(tǒng)。只需一個晶振,即可滿足網(wǎng)狀型網(wǎng)絡系統(tǒng)的需要。4.1概述(ɡàishù)CC2530芯片特征共二百三十二頁-5-低功耗,主動模式RX(CPU空閑):24mA;主動模式TX在1dB(CPU空閑):29mA;供電模式1(4us喚醒):0.2mA;供電模式2(睡眠定時器運行):1uA;供電模式3(外部中斷):0.4uA;寬電源電壓范圍(2V-3.6V)。硬件支持CSMA/CA。支持數(shù)字化的接收信號強度指示器/鏈路質量指示(RSSI/LQI)。具有8路輸入(shūrù)8位~14位ADC。高級加密標準AES協(xié)處理器。具有看門狗和2個支持多種串行通信協(xié)議的USART。1個通用的16位定時器和2個8位定時器,1個IEEE802.15.4MAC定時器。21個通用I/O引腳。4.1概述(ɡàishù)CC2530芯片特征共二百三十二頁-6-4.2CC2530結構(jiégòu)框架共二百三十二頁-7-CC2530包含一個“增強型”工業(yè)標準的8位8051微控制器內(nèi)核,運行時鐘32MHz,具有8倍的標準8051內(nèi)核的性能增強型8051內(nèi)核使用標準的8051指令(zhǐlìng)集,并且每個指令(zhǐlìng)周期是一個時鐘周期,而標準的8051每個指令周期是12個時鐘周期,因此增強型8051消除了總線狀態(tài)的浪費,指令執(zhí)行比標準的8051更快4.2.1CC2530CPU共二百三十二頁-8-內(nèi)核代碼(dàimǎ):CC2530的“增強型8051”內(nèi)核的“目標代碼”兼容“標準8051”內(nèi)核的“目標代碼”,即CC2530的8051內(nèi)核的“目標代碼”可以使用“標準8051”的編譯器或匯編器進行編譯。微控制器:由于CC2530的“增強型8051”內(nèi)核使用了不同于“標準8051”的指令時鐘,因此“增強型8051”在編譯時與“標準8051”代碼編譯時略有不同,例如“標準8051”的微控制器包含的“外設單元寄存器”的指令代碼在CC2530的“增強型8051”不能正確運行。4.2.1CC2530CPUCC2530的“增強型8051內(nèi)核”與“標準的8051微控制器”相比,除了速度改進之外,使用時要注意(zhùyì)以下兩點:共二百三十二頁-9-4.2.2CC2530存儲器及映射(yìngshè)

CC2530物理(wùlǐ)存儲器CC2530存儲空間映射存儲器仲裁共二百三十二頁-10-4.2.2CC2530存儲器及映射(yìngshè)物理(wùlǐ)存儲器SRAM上電時,SRAM的內(nèi)容未定義,在供電的情況下,SRAM的內(nèi)容被保留FLASH片上閃存存儲器,主要為了保存程序和常量數(shù)據(jù)。FLASH由一組2KB的頁面組成

信息頁面信息頁面是一個2KB的只讀區(qū)域,它的主要作用是存儲全球唯一的IEEE地址

共二百三十二頁-11-4.2.2CC2530存儲器及映射(yìngshè)物理(wùlǐ)存儲器SFR控制8051CPU內(nèi)核或外設的一些功能

XREG

是SFR的擴展寄存器,比如射頻寄存器,訪問速度比SFR要慢

共二百三十二頁-12-4.2.2CC2530存儲器及映射(yìngshè)存儲空間CODE程序存儲器,只讀存儲空間,用于存放程序代碼和一些(yīxiē)常量,有16根地址總線,尋址范圍為0x0000~0xFFFF共64KB

DATA數(shù)據(jù)存儲器,可讀/寫的數(shù)據(jù)存儲空間,用于存放程序運行過程中的數(shù)據(jù)。有8根地址總線,因此尋址空間為0x00~0xFF,共256個字節(jié)

XDATA外部數(shù)據(jù)存儲器,可讀/寫的數(shù)據(jù)存儲空間,主要用于DMA尋址。有16根地址總線,尋址空間是0x0000~0xFFFF共64KB

SFR特殊功能寄存器,可讀/寫的寄存器存儲空間,共有128字節(jié)。對于地址是被8整除的SFR寄存器,每一位還可以單獨尋址

共二百三十二頁-13-4.2.2CC2530存儲器及映射(yìngshè)物理(wùlǐ)存儲器與存儲空間的關系存儲空間只是4種不同的尋址方式概念,并不代表物理具體上的存儲設備,只是存儲空間的概念;而FLASH、SRAM、EEPROM等是具體的物理存儲設備。他們兩者之間的關系是通過映射來聯(lián)系起來的。例如FLASH或者EEPROM都可以作為物理存儲媒介映射到CODE上。共二百三十二頁-14-4.2.2CC2530存儲器及映射(yìngshè)映射(yìngshè)映射就是將CC2530的物理存儲器映射到其存儲空間上,有兩個作用:

方便DMA訪問存儲設備

可在CODE區(qū)執(zhí)行FLASH或SRAM中的代碼

共二百三十二頁-15-4.2.2CC2530存儲器及映射(yìngshè)映射(yìngshè)的兩種形式CODE存儲器映射

XDATA存儲器映射共二百三十二頁-16-4.2.2CC2530存儲器及映射(yìngshè)CODE存儲器映射(yìngshè)CODE存儲器映射具有兩個功能:一是將FLASH映射至CODE存儲空間;二是執(zhí)行來自SRAM的代碼(將SRAM映射至CODE存儲空間)

共二百三十二頁-17-4.2.2CC2530存儲器及映射(yìngshè)FLASH映射(yìngshè)CODE的尋址空間為64KB,而對于CC2530F256設備來說FLASH的存儲空間為256KB?首先要解決存儲空間不對稱的問題

CC2530將FLASH存儲器分為幾個bank,每個bank的大小是32KB。對于CC2530F256設備來說,它有8個bank,分別為bank0~bank7。通過操作寄存器FMAP.MAP[2:0]來控制將哪個編號的bank映射到CODE區(qū)域

只針對CC2530F32這款芯片,因為這款芯片的的FLASH只有32KB雖然這里有bank0區(qū)域,但是映射的時候bank0總映射的根部的低32KB區(qū)域共二百三十二頁-18-4.2.2CC2530存儲器及映射(yìngshè)SRAM映射(yìngshè)為了便于在SRAM中執(zhí)行代碼,可以將SRAM映射到CODE存儲空間的0x8000~(0x8000+SRAM_SIZE-1)的區(qū)域

雖然程序從SRAM中運行代碼,但是并不代表程序是從SRAM中啟動的。程序仍舊是從CODE的普通區(qū)域0x0000開始執(zhí)行,當程序執(zhí)行到0x8000時,將執(zhí)行SRAM中的代碼

共二百三十二頁-19-4.2.2CC2530存儲器及映射(yìngshè)SRAM映射(yìngshè)為了方便DMA控制器能訪問所有的物理存儲空間,CC2530把所有的物理存儲器以及寄存器都映射到XDATA上,包括CODE和SFR部分存儲空間

。共二百三十二頁-20-4.2.2CC2530存儲器及映射(yìngshè)XDATA包含了所有物理存儲器的映射,包括(bāokuò)8KB的SRAM存儲器、XREG、SFR、信息頁面和FLASH存儲器

SRAM映射的地址范圍是0x0000到SRAM_SIZE-1。其中SRAM較高的256字節(jié)映射到DATA存儲空間8位地址區(qū)域,即地址范圍從SRAM_SIZE-256到SRAM_SIZE-1

XREG區(qū)域映射到1KB地址區(qū)域0x6000-0x63FF

SFR寄存器映射到地址區(qū)域0x7080-0x70FF。128個條目的硬件寄存器區(qū)域是通過這一存儲空間訪問的。閃存信息頁面2KB映射到地址區(qū)域0x7800-0x7FFF。這是一個只讀區(qū)域,包含有關設備的各種信息信息頁面映射到地址區(qū)域0x7800~0x7FFF

XBANK為CODE存儲空間的bank0~7區(qū)域的映射,其地址仍然是0x8000~0xFFFF。可以配置存儲器控制寄存器MEMCTR.XBANK[2:0](詳見存儲器仲裁)決定選擇映射bank0~bank7之間的哪個區(qū)域,比如MEMCTR.XBANK=001,則映射bank1區(qū)域共二百三十二頁-21-4.2.2CC2530存儲器及映射(yìngshè)存儲器仲裁(zhòngcái)

主要功能是解決CPU與DMA訪問所有物理存儲器(除了CPU內(nèi)部寄存器)之間的沖突問題。當CPU和DMA之間發(fā)生沖突時,“存儲器仲裁”停止CPU或DMA的總線

存儲器仲裁主要有兩個寄存器:存儲器仲裁控制寄存器MEMCTR和閃存區(qū)映射寄存器FMAP,這兩個寄存器用于控制存儲器子系統(tǒng)的各個方面共二百三十二頁-22-4.2.2CC2530存儲器及映射(yìngshè)存儲器仲裁(zhòngcái)控制寄存器MEMCTR

MEMCTR.XMAP必須設置以使得程序從SRAM執(zhí)行;MEMCTR.XBANK決定XDATA的高32KB映射CODE存儲空間的哪個bank區(qū)域

位名稱復位R/W描述7:4--0000R0保留3XMAP0R/WXDATA映射到代碼,當設置了這一位,SRAMXDATA區(qū)域從0x0000到(SRAM_SIZE)映射到CODE區(qū)域的(0x8000+SRAM_SIZE-1)這使得程序代碼從RAM執(zhí)行。0:SRAM映射到CODE功能禁用1:SRAM映射到CODE功能使能2:0XBANK000R/WXDATA區(qū)選擇,控制物理閃存存儲器的哪個代碼區(qū)域映射到XDATA區(qū)域(0x8000-0xFFFF)。當設置為0,映射到根底部。有效設置取決于設備的閃存大小。寫一個無效設置被忽略,即不會更新XBANK[2:0]32KB版本只能是0(即總是映射到根底部)64KB版本:0-1128KB版本:0-3256KB版本:0-7共二百三十二頁-23-4.2.2CC2530存儲器及映射(yìngshè)閃存區(qū)映射(yìngshè)寄存器FMAP

閃存區(qū)映射寄存器FMAP控制物理32KB代碼區(qū)映射到CODE存儲空間的程序地址區(qū)域0x8000-0xFFFF

位名稱復位R/W描述7:3--00000R0保留2:0MAP[2:0]001R/W閃存區(qū)域映射,控制物理閃存存儲器的哪個代碼映射到XDATA區(qū)域(0x8000-0xFFFF)。當設置為0,映射到根部區(qū)。有效設置取決于設備的閃存大小。寫一個無效設置被忽略,即不會更新MAP[2:0]32KB版本只能是0(即總是映射到根底部)64KB版本:0-1128KB版本:0-3256KB版本:0-7即最底部的32KB區(qū)域(0x0000~0x7FFF)共二百三十二頁-24-4.3CC2530編程基礎(jīchǔ)CC2530軟件開發(fā)平臺使用IARIAR對CC2530編程操作提供了良好的C語言支持

CC2530編程包括頭文件、運行庫以及(yǐjí)中斷編程等

共二百三十二頁-25-4.3.1寄存器和匯編(huìbiān)指令CC2530的CPU寄存器與標準的8051的CPU寄存器相同(xiānɡtónɡ),都包括8組寄存器R0~R7、程序狀態(tài)字PSW、累加器ACC、B寄存器和堆棧指針SP等CC2530的CPU指令與標準的8051的指令集相同

共二百三十二頁-26-4.3.2編程基礎(jīchǔ)CC2530編程的風格(fēnggé)基本上與普通的基于8051的C語言編程相同

頭文件初始化函數(shù)主函數(shù)其他中斷函數(shù)

共二百三十二頁-27-4.3.2編程基礎(jīchǔ)頭文件

在C語言中頭文件以“XXX.h”的格式存在,其中“XXX”為文件名,在頭文件中一般定義程序(chéngxù)需要的變量或函數(shù)的聲明等。一般頭文件在源程序(chéngxù)的一開始使用“包含命令”將頭文件包含在源程序(chéngxù)中,以便源程序(chéngxù)調(diào)用頭文件中的變量等。頭文件“包含命令”使用“#include”命令

共二百三十二頁-28-4.3.2編程基礎(jīchǔ)頭文件

在一個工程里面還會有其他的頭文件,比如要控制(kòngzhì)CC2530開發(fā)板的LED,一般由用戶新建一個頭文件,此頭文件可以由用戶命名,例如“LED.h”

在用戶編寫的頭文件中,也需要將“ioCC2530.h”包含在內(nèi),那么在主函數(shù)文件中只需要包含“LED.h”文件即可共二百三十二頁-29-4.3.2編程基礎(jīchǔ)初始化函數(shù)(hánshù)

在一個項目工程中為了增強程序的可移植性和可維護性,一般將一些初始化配置信息編寫成一個函數(shù),稱作初始化函數(shù)。在一個工程中可以有多個初始化函數(shù)

共二百三十二頁-30-4.3.2編程基礎(jīchǔ)主函數(shù)(hánshù)

與常規(guī)的C語言程序一樣,IAR下的CC2530程序依然將main()函數(shù)設定為程序的入口函數(shù),也稱主函數(shù)。當程序比較大時,在主函數(shù)內(nèi)一般不直接編寫與程序相關的業(yè)務算法,而是調(diào)用其他子函數(shù)(如用庫函數(shù)、戶編寫的硬件初始化函數(shù)和業(yè)務算法或其他功能函數(shù)等)來實現(xiàn)整個程序的邏輯,使主函數(shù)看起來簡單明了并且易于程序的維護

共二百三十二頁-31-4.3.2編程基礎(jīchǔ)其他(qítā)子函數(shù)

在一個程序中,為了程序的可維護性,除了初始化函數(shù)之外,還需要將某個業(yè)務算法或功能封裝成一個函數(shù),稱為子函數(shù)

共二百三十二頁-32-4.3.2編程基礎(jīchǔ)中斷(zhōngduàn)函數(shù)

當需要中斷處理時,需要編寫中斷處理函數(shù),中斷處理函數(shù)是當有中斷發(fā)生時,需要處理的事件共二百三十二頁-33-4.3.2中斷(zhōngduàn)的使用CC2530的中斷系統(tǒng)是為了讓CPU對內(nèi)部或外部的突發(fā)事件及時地作出響應,并執(zhí)行相應的中斷程序。中斷由中斷源引起,中斷源由相應的寄存器來控制。當需要使用中斷時,需配置(pèizhì)相應的中斷寄存器來開啟中斷,當中斷發(fā)生時將跳入中斷服務函數(shù)中執(zhí)行此中斷所需要處理的事件。共二百三十二頁-34-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)源與中斷(zhōngduàn)向量

CC2530有18個中斷源,每個中斷源都可以產(chǎn)生中斷請求,中斷請求可以通過設置中斷使能SFR寄存器的中斷使能位IEN0、IEN1或IEN2使能或禁止中斷。共二百三十二頁-35-4.3.3中斷(zhōngduàn)的使用中斷號碼描述中斷名稱中斷向量中斷屏蔽中斷標志0RFTXRFIO下溢或RXFIFO溢出RFERR03HIEN0.RFERRIETCON.RFERRIF1ADC轉換結束ADC0BHIEN0.ADCIETCON.ADCIF2USART0RX完成URX013HIEN0.URX0IETCON.URX0IF3USART1RX完成URX11BHIEN0.URX1IETCON.URX1IF4AES加密/解密完成ENC23HIEN0.ENCIES0CON.ENCIF5睡眠計時器比較ST2BHIEN0.STIEIRCON.STIF6端口2輸入/USBP2INT33HIEN2.P2IEIRCON2.P2IF7USART0TX完成UTX03BHIEN2.UTX0IEIRCON2.UTX0IF8DMA傳送完成DMA43HIEN1.DMAIEIRCON.DMAIF9定時器1(16位)捕獲/比較/溢出T14BHIEN1.T1IEIRCON.T1IF10定時器2T253HIEN1.T2IEIRCON.T2IF11定時器3(8位)捕獲/比較/溢出T35BHIEN1.T3IEIRCON.T3IF12定時器4(8位)捕獲/比較/溢出T463HIEN1.T4IEIRCON.T4IF13端口0輸入P0INT6BHIEN1.P0IEIRCON.P0IF14USART1TX完成UTX173HIEN2.UTXIEIRCON2.UTX1IF15端口1輸入P1INT7BHIEN2.P1IEIRCON2.P1IF16RF通用中斷RF83HIEN2.RFIES1CON.RFIF17看門狗定時器溢出WDT8BHIEN2.WDTIEIRCON.WDTIF共二百三十二頁-36-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)源與中斷(zhōngduàn)向量

當相應的中斷源使能并發(fā)生時,中斷標志位將自動置1,然后程序跳往中斷服務程序的入口地址執(zhí)行中斷服務程序。待中斷服務程序處理完畢后,由硬件清除中斷標志位

中斷服務程序的入口地址即中斷向量,CC2530的18個中斷源對應了18個中斷向量,中斷向量定義在頭文件“ioCC2530.h”中共二百三十二頁-37-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)優(yōu)先級

中斷優(yōu)先級將決定中斷響應的先后順序,在CC2530中分為六個中斷優(yōu)先組,即IPG0~IPG5,每一組中斷優(yōu)先組中有三個中斷源

組中斷IPG0RFERRRFDMAIPG1ADCT1P2INTIPG2URX0T2UTX0IPG3URX1T3UTX1IPG4ENCT4P1INTIPG5STP0INTWDT共二百三十二頁-38-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)優(yōu)先級

中斷優(yōu)先組的優(yōu)先級設定由寄存器IP0和IP1來設置。CC2530的優(yōu)先級有4級,即0~3級,其中0級的優(yōu)先級最低,3級的優(yōu)先級最高。

IP1_XIP0_X優(yōu)先級000(優(yōu)先級別最低)011102113(優(yōu)先級別最高)其中X為六個中斷優(yōu)先組IPG0~IPG5中的任何一個

設置IPG0優(yōu)先級最高IP1_IPG0=1;IP0_IPG0=1;共二百三十二頁-39-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)優(yōu)先級

如果同時收到相同優(yōu)先級或同一優(yōu)先級組中的中斷請求時,將采用輪流檢測順序來判斷中斷優(yōu)先級別的響應

共二百三十二頁-40-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)優(yōu)先級

中斷向量編號中斷名稱優(yōu)先級排序0RFERR輪流探測順序為自上向下優(yōu)先級依次降低16RF8DMA1ADC9T12URX010T23URX111T34ENC12T45ST13P0INT6P2INT7UTX014UTX115P1INT17WDT例如:在中斷優(yōu)先級組IPG0中的中斷RFERR、RF和DMA的中斷優(yōu)先級是相同的,如果同時使用這三個中斷,就需要使用輪流探測順序來判斷哪一優(yōu)先級最高。由輪流探測順序表查得RFERR中斷優(yōu)先級最高,RF中斷次之,DMA中斷與其他兩個中斷相比中斷優(yōu)先級最低

共二百三十二頁-41-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)處理過程

中斷發(fā)生時,CC2530硬件自動完成以下處理中斷申請:中斷源向CPU發(fā)出中斷請求信號(中斷申請一般需要在程序初始化中配置相應的中斷寄存器開啟中斷)

中斷響應:CPU檢測中斷申請,把主程序中斷的地址保存到堆棧,轉入中斷向量入口地址

中斷處理:按照中斷向量中設定好的地址,轉入相應的中斷服務程序

中斷返回:中斷服務程序執(zhí)行完畢后,CPU執(zhí)行中斷返回指令,把堆棧中保存的數(shù)據(jù)從堆棧彈出,返回原來程序

共二百三十二頁-42-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)編程

中斷編程的一般過程如下:中斷設置:根據(jù)外設的不同,具體的設置是不同的,一般至少包含啟用中斷

中斷函數(shù)編寫;這是中斷編程的主要工作,需要注意的是,中斷函數(shù)盡可能的減少耗時或不進行耗時操作

以CC2530的外部中斷為例

//P0中斷標志清0P0IFG|=0x00;//P0.4有上拉、下拉能力

P0INP&=~0X30;//P0.4和P0.5中斷使能

P0IEN|=0x30;//P0.4和P0.5,下降沿觸發(fā)

PICTL|=0X01;//開中斷

EA=1;//端口0中斷使能

IEN1|=0X20;共二百三十二頁-43-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)編程

中斷編程的一般過程如下:CC2530所使用的編譯器為IAR,在IAR編譯器中用關鍵字__interrupt來定義一個中斷函數(shù)。使用#progmavector來提供中斷函數(shù)的入口地址,并且中斷函數(shù)沒有返回值,沒有函數(shù)參數(shù)

#pragmavector=P0INT_VECTOR__interruptvoidP0_ISR

(void){//中斷程序代碼}共二百三十二頁-44-4.3.3中斷(zhōngduàn)的使用中斷(zhōngduàn)編程

在中斷函數(shù)編寫中,當程序進入中斷服務程序之后,需要執(zhí)行以下幾個步驟

:將對應的中斷關掉(不是必須的,需要根據(jù)具體情況來處理);如果需要判斷具體的中斷源,則根據(jù)中斷標志位進行判斷(例如所有I/O中斷共用1個中斷向量,需要通過中斷標志區(qū)分是哪個引腳引起的中斷)清中斷標志(不是必須的,CC2530中中斷發(fā)生后由硬件自動清中斷標志位)處理中斷事件,此過程要盡可能的少耗時最后如果在第一步中關閉了相應的中斷源,需要在退出中斷服務程序之前打開對應的中斷//中斷函數(shù)入口地址#pragmavector=P0INT_VECTOR//定義一個中斷函數(shù)

__interruptvoidP0_ISR(void){//關端口P0.4、P0.5中斷

P0IEN&=~0x30;//判斷中斷發(fā)生

if(P0IFG>0)

{//清中斷標志P0IFG=0;/**中斷事件的處理**/...........................}//開中斷

P0IEN|=0x30;}共二百三十二頁-45-4.4I/OCC2530包括3個8位輸入(shūrù)/輸出(I/O)端口,分別是P0、P1和P2。其中P0和P1有8個引腳,P2有5個引腳,共21個數(shù)字I/O引腳

,具有以下功能:通用I/O外設I/O外部(wàibù)中斷源輸入口弱上拉輸入或推拉輸出共二百三十二頁-46-4.4.1通用(tōngyòng)I/O用作通用I/O時,引腳可以組成3個8位端口,端口0、端口1和端口2,三個端口分別用P0、P1和P2來表示(biǎoshì)所有的端口均可以通過SFR寄存器P0、P1和P2進行位尋址和字節(jié)尋址

每個端口引腳都可以單獨設置為通用I/O或外部設備I/O

其中P1.0和P1.1具備20mA的輸出驅動能力,其他所有的端口只具備4mA的輸出驅動能力

共二百三十二頁-47-4.4.1通用(tōngyòng)I/O通用I/O配置寄存器(其中x表示0,1,2)功能寄存器PxSEL方向(fāngxiàng)寄存器PxDIR工作模式寄存器PxINP共二百三十二頁-48-4.4.1通用(tōngyòng)I/O配置寄存器PxSEL(其中(qízhōng)x表示0,1,2)寄存器PxSEL用來設置端口的每個引腳為通用I/O或者是外部設備I/O(復位之后,所有的數(shù)字輸入、輸出引腳都設置為通用輸入引腳)以P0SEL為例講解位名稱復位R/W描述7:0SELP0[7:0]0x00R/WP0.7~P0.0功能選擇0:通用I/O1:外設I/O//P0.4和P0.5設置為普通的I/O口P0SEL&=~0x30;//P0.4和P0.5設置為外設的I/O口P0SEL|=0x30;共二百三十二頁-49-4.4.1通用(tōngyòng)I/O配置寄存器PxDIR(其中x表示0,1,2)如果(rúguǒ)需要改變端口引腳方向,需要使用寄存器PxDIR來設置每個端口引腳的輸入和輸出

以P0DIR為例講解//P0.4和P0.5設為輸入P0DIR&=~0x30;//P0.4和P0.5設置為輸出低電平P0_4=0;P0_5=0;//P1.0和P1.1設置為輸出P1DIR|=0x03;//P1.0和P1.1設置為輸出高電平P1_0=1;P1_1=1;位名稱復位R/W描述7:0DIRP0[7:0]0x00R/WP0.7~P0.0的I/O方向選擇0:輸入1:輸出共二百三十二頁-50-4.4.1通用(tōngyòng)I/O配置寄存器PxINP(其中x表示0,1,2)復位之后,所有的端口均設置為帶上拉的輸入。用作輸入時,通用I/O端口引腳可以設置為上拉、下拉或三態(tài)操作模式。其中P1.0和P1.1端口沒有上拉和下拉功能(gōngnéng)。上拉、下拉或三態(tài)操作模式寄存器由PxINP設置以P0INP為例講解//P0.4和P0.5設置為三態(tài)P0INP|=0x30;//P2.0和P2.1設置上拉狀態(tài)P2INP&=~0x03;位名稱復位R/W描述7:0MDP0[7:0]0x00R/WP0.7~P0.0的I/O輸入模式功能選擇0:上拉/下拉1:三態(tài)共二百三十二頁-51-4.4.1通用(tōngyòng)I/O注意(zhùyì)寄存器P2INP可以配置P0、P1和P2端口為上拉或下拉。//P0端口為上拉輸入P2INP|=0x80;位名稱復位R/W描述7PDUP20R/W端口2上拉/下拉選擇,對所有的端口2引腳設置為上拉/下拉輸入0:上拉1:下拉6PDUP10R/W端口1上拉/下拉選擇,對所有的端口1引腳設置為上拉/下拉輸入0:上拉1:下拉5PDUP00R/W端口0上拉/下拉選擇,對所有的端口0引腳設置為上拉/下拉輸入0:上拉1:下拉4:0MDP2[4:0]00000R/WP2.4~P2.0的I/O輸入模式功能選擇0:上拉/下拉1:三態(tài)共二百三十二頁-52-4.4.1通用(tōngyòng)I/O任務(rènwu)描述4.D.1,通過掃描方式實現(xiàn)按鍵觸發(fā)LED亮滅。利用按鍵SW5和按鍵SW6控制LED1和LED2。當按下SW5時,LED1狀態(tài)改變;當按下SW6時,LED2狀態(tài)改變

按鍵SW5由P0.4控制,按鍵SW6由P0.5控制;LED1和LED2分別由P1.0和P1.1控制

按鍵的初始化:將P0.4和P0.5設為普通I/O口,并且設置為輸入狀態(tài)

LED初始化:將P1.0和P1.1設置為輸出且將LED1和LED2關閉采用按鍵檢測的方法來控制LED狀態(tài)的改變:當檢測到SW5按下時,LED1狀態(tài)改變;當檢測到SW6按下時,LED2狀態(tài)改變

共二百三十二頁-53-4.4.1通用(tōngyòng)I/O#include<ioCC2530.h>#defineuintunsignedint#defineucharunsignedchar/*LED狀態(tài)*///0代表打開#defineON0//1代表關閉#defineOFF1//定義控制(kòngzhì)燈的端口//定義LED1為P11口控制#defineLED1P1_0 //定義LED2為P10口控制#defineLED2P1_1 #defineSW6P0_4#defineSW5P0_5//函數(shù)聲明//延時函數(shù)voidDelay(uint); //初始化P0口voidInitial(void);//初始化按鍵voidInitKey(void);//掃描按鍵,讀鍵值ucharKeyScan(void);宏定義以及函數(shù)的初始化共二百三十二頁-54-/*按鍵初始化函數(shù)*/voidInitKey(void){//P0.4,P0.5設為通用I/O輸出

P0SEL&=~0x30;//按鍵在P04,P05設為輸入(shūrù)

P0DIR&=~0x30;//P0.4,P0.5為三態(tài)

P0INP|=0x30;}/*LED初始化*/voidInitial(void){//P10、P11定義為輸出P1DIR|=0x03;//關LED1LED1=OFF;//關LED2LED2=OFF;}4.4.1通用(tōngyòng)I/O按鍵初始化函數(shù)和LED初始化函數(shù)共二百三十二頁-55-4.4.1通用(tōngyòng)I/O/*****************************延時1.5us*****************************/voidDelay(uintn){ uinttt; for(tt=0;tt<n;tt++);

for(tt=0;tt<n;tt++); for(tt=0;tt<n;tt++); for(tt=0;tt<n;tt++); for(tt=0;tt<n;tt++);}延時函數(shù)CC2530執(zhí)行一條(yītiáo)語句的時間是0.3us共二百三十二頁-56-4.4.1通用(tōngyòng)I/O/******************************************按鍵掃描*****************************************/ucharKeyScan(void){//檢測(jiǎncè)SW6是否為低電平,低電平有效

if(SW6==0){Delay(100);//檢測到按鍵

if(SW6==0){//直到松開按鍵

while(!SW6);//返回值為1return(1);}}

//檢測SW5是否為低電平,低電平有效

if(SW5==0){Delay(100);//檢測到按鍵

if(SW5==0){//檢測到按鍵

while(!SW5);//返回值為2return(2);}}return(0);}去抖操作共二百三十二頁-57-4.4.1通用(tōngyòng)I/O/**********************************main()函數(shù)*********************************/voidmain(void){//按鍵標志位ucharKeyvalue=0;Delay(10);//調(diào)用(diàoyòng)初始化函數(shù)Initial();InitKey();while(1){//給按鍵標志位賦值

Keyvalue=KeyScan();//如果按鍵為SW6if(Keyvalue==1)

{//LED切換狀態(tài)

LED1=!LED1;//清除鍵值

Keyvalue=0;}//檢測按鍵為SW5if(Keyvalue==2){//LED2切換狀態(tài)

LED2=!LED2;//清除鍵值

Keyvalue=0;}

Delay(10); }}

共二百三十二頁-58-4.4.2通用(tōngyòng)I/O中斷在設置I/O口的中斷時必須要將其設置為輸入狀態(tài),通過外部信號的上升或下降沿觸發(fā)中斷。通用I/O的所有的外部中斷共用一個中斷向量,根據(jù)中斷標志位來判斷是哪個引腳發(fā)生(fāshēng)中斷

通用I/O中斷寄存器有三類:中斷使能寄存器、中斷狀態(tài)標志寄存器和中斷控制寄存器中斷使能寄存器包括IENx和PxIEN(其中x代表0、1、2),其功能是使I/O口進行中斷使能中斷狀態(tài)標志寄存器包括PxIFG,其功能是當發(fā)生中斷時,I/O口所對應的中斷狀態(tài)標志將自動置1。中斷控制寄存器為PICTL,其功能是控制I/O口的中斷觸發(fā)方式。共二百三十二頁-59-4.4.2通用(tōngyòng)I/O中斷中斷使能寄存器IENx(其中x為0,1,2)

IENx寄存器包括三個八位寄存器:IEN0、IEN1和IEN2。IENx中斷主要(zhǔyào)是配置總中斷和P0~2端口的使能

IEN1.P0IE:P0端口中斷使能。IEN2.P1IE:P1端口中斷使能。IEN2.P2IE:P2端口中斷使能。共二百三十二頁-60-4.4.2通用(tōngyòng)I/O中斷IEN0寄存器的第7位可以(kěyǐ)控制CC2530所有中斷的使能。IEN0的其他位控制定時器、串口、RF等外設功能中斷

位名稱復位R/W描述7EA0R/W禁止所有中斷0:無中斷被確認1:通過設置對應的使能位將每個中斷源分別使能和禁止6--0R0保留5STIE0R/W睡眠定時器中斷使能0:中斷禁止1:中斷使能4ENCIE0R/WAES加密/解密中斷使能0:中斷禁止1:中斷使能3URX1IE0R/WUSART1RX中斷使能0:中斷禁止1:中斷使能2URX0IE0R/WUSART0RX中斷使能0:中斷禁止1:中斷使能1ADCIE0R/WADC中斷使能0:中斷禁止1:中斷使能0RFERRIE0R/WRFTX/RXFIFO中斷使能0:中斷禁止1:中斷使能共二百三十二頁-61-4.4.2通用(tōngyòng)I/O中斷IEN1寄存器的第5位控制(kòngzhì)P0口的中斷,當設置IEN1.P0IE時,將設置P0端口所有引腳的中斷使能,即P0.0~P0.7引腳全部中斷使能

位名稱復位R/W描述7:6--00R0保留5P0IE0R/W端口0中斷使能0:中斷禁止1:中斷使能4T4IE0R/W定時器4中斷使能0:中斷禁止1:中斷使能3T3IE0R/W定時器3中斷使能0:中斷禁止1:中斷使能2T2IE0R/W定時器2中斷使能0:中斷禁止1:中斷使能1T1IE0R/W定時器1中斷使能0:中斷禁止1:中斷使能0DMAIE0R/WDMA中斷使能0:中斷禁止1:中斷使能//端口0中斷使能IEN1|=0x20;共二百三十二頁-62-4.4.2通用(tōngyòng)I/O中斷IEN2寄存器的第4位和第1位分別控制(kòngzhì)P1端口和P2端口的中斷,當設置IEN2.P1IE和IEN2.P2IE時,將設置P1端口和P2端口所有引腳的中斷使能,即P1.0~P1.7引腳和P2.0~P2.4引腳全部中斷使能

位名稱復位R/W描述7:6--00R0保留5WDTIE0R/W看門狗定時器中斷使能0:中斷禁止1:中斷使能4P1IE0R/W端口1中斷使能0:中斷禁止1:中斷使能3UTX1IE0R/WUSART1TX中斷使能0:中斷禁止1:中斷使能2UTX0IE0R/WUSART2TX中斷使能0:中斷禁止1:中斷使能1P2IE0R/W端口2中斷使能0:中斷禁止1:中斷使能0RFIE0R/WRF一般中斷使能0:中斷禁止1:中斷使能//端口1中斷使能IEN2|=0x10;//端口0中斷使能IEN2|=0x02;共二百三十二頁-63-4.4.2通用(tōngyòng)I/O中斷中斷使能寄存器PxIEN(其中(qízhōng)x為0,1,2)PxIEN寄存器是設置端口的某一個引腳中斷使能,PxIEN有三個寄存器P0IEN、P1IEN和P2IEN

以P0IEN為例講解位名稱復位R/W描述7:0P0IEN[7:0]0x00R/W端口0P0.7~P0.0中斷使能0:中斷禁止1:中斷使能//P0.4、P0.5中斷使能P0IEN|=0x30;共二百三十二頁-64-4.4.2通用(tōngyòng)I/O中斷中斷狀態(tài)標志寄存器PxIFG

(其中x為0,1,2)PxIFG寄存器是中斷狀態(tài)標志寄存器,由于CC2530的外部中斷共用一個中斷向量,因此需要判斷是哪個引腳發(fā)生中斷,通過判斷PxIFG寄存中的中斷狀態(tài)標志位可以(kěyǐ)判斷哪個引腳發(fā)生中斷。PxIFG寄存器有三個,分別是P0IFG、P1IFG和P2IFG以P0IFG為例講解//判斷端口0是否有中斷標志發(fā)生if(P0IFG>0){...}位名稱復位R/W描述7:0P0IF[7:0]0x00R/W端口0P0.7~P0.0中斷狀態(tài)標志0:未發(fā)生中斷1:發(fā)生中斷共二百三十二頁-65-4.4.2通用(tōngyòng)I/O中斷中斷控制寄存器PICTL

(其中x為0,1,2)I/O口發(fā)生中斷除了配置中斷使能之外,還需要配置中斷觸發(fā)方式。中斷觸發(fā)方式可由端口中斷控制寄存器PICTL設置。I/O中斷觸發(fā)方式分為輸入(shūrù)的上升沿觸發(fā)和輸入(shūrù)的下降沿觸發(fā)//P0.4和P0.5為下降沿觸發(fā)中斷PICTL|=0x01;位名稱復位R/W描述7PADSC00R0控制I/O引腳在輸出模式下的驅動能力,選擇輸出驅動能力來補償引腳DVDD的低I/O電壓(為了確保在較低的電壓下的驅動能力和較高電壓下的驅動能力相同)。0:最小驅動能力增強,DVDD1/2等于或大于2.6V1:最大驅動能力增強,DVDD1/2小于2.6V6:4--000R0保留3P2ICON0R/W端口2的P2.4~P2.0輸入模式下的中斷配置,該位為所有端口2的輸入P2.4~P2.0選擇中斷請求條件0:輸入的上升沿引起中斷1:輸入的下降沿引起中斷2P1ICONH0R/W端口1的P1.7~P1.4輸入模式下的中斷配置,該位為所有端口1的輸入P1.7~P1.4選擇中斷請求條件0:輸入的上升沿引起中斷1:輸入的下降沿引起中斷1P1ICONL0R/W端口1的P1.4~P1.0輸入模式下的中斷配置,該位為所有端口1的輸入P1.4~P1.0選擇中斷請求條件0:輸入的上升沿引起中斷1:輸入的下降沿引起中斷0P0ICON0R/W端口0的P0.7~P0.0輸入模式下的中斷配置,該位為所有端口0的輸入P0.7~P0.0選擇中斷請求條件0:輸入的上升沿引起中斷1:輸入的下降沿引起中斷共二百三十二頁-66-4.4.2通用(tōngyòng)I/O中斷中斷配置為了使能任一中斷,應該采取(cǎiqǔ)以下步驟:設置需要發(fā)生中斷的I/O口為輸入方式。清除中斷標志,即將需要設置中斷的引腳所對應的寄存器PxIFG狀態(tài)標志位置0。設置具體的I/O引腳中斷使能,即設置中斷的引腳所對應的寄存器PxIEN的中斷使能位為1。設置I/O口的中斷觸發(fā)方式。設置寄存器IEN1和IEN2中對應引腳的端口的中斷使能位為1。設置IEN0中的EA位為1使能全局中斷。編寫中斷服務程序。共二百三十二頁-67-4.4.2通用(tōngyòng)I/O中斷LED初始化:關閉四個LED。外部中斷初始化:清空P0中斷標志位,開啟(kāiqǐ)P0口中斷以及總中斷。中斷處理函數(shù)的編寫。下述內(nèi)容用于實現(xiàn)任務描述4.D.2,通過外部中斷改變LED1亮滅。利用按鍵SW5和SW6觸發(fā)P0.4和P0.5下降沿發(fā)生中斷控制LED1的亮滅。即當按下SW5或者SW6時,LED1燈的狀態(tài)發(fā)生改變,解決問題的步驟如下:共二百三十二頁-68-4.4.1通用(tōngyòng)I/O#include<ioCC2530.h>#defineuintunsignedint#defineLED1P1_0#defineLED2P1_1#defineLED3P1_2#defineLED4P1_3

/*****************************LED初始化****************************/voidInitLED(void){//P1為普通I/O口

P1SEL=0x00;//P1.0P1.1P1.2P1.3輸出(shūchū)

P1DIR=0x0F;//關閉LED1LED1=1;

//關閉LED2LED2=1;//關閉LED3LED3=1;//關閉LED4LED4=1;

}頭文件及宏定義共二百三十二頁-69-4.4.1通用(tōngyòng)I/O/*io及外部中斷初始化*/voidInitIO(void){

//P0中斷標志清0P0IFG|=0x00;//P0.4有上拉、下拉能力(nénglì)

P0INP&=~0X30;//P0.4和P0.5中斷使能

P0IEN|=0x30;//P0.4和P0.5,下降沿觸發(fā)

PICTL|=0X01;//開中斷

EA=1;//端口0中斷使能

IEN1|=0X20;

};共二百三十二頁-70-4.4.1通用(tōngyòng)I/O/*********************************main()函數(shù)*********************************/voidmain(void){//LED初始化

InitLED();//IO及外部中斷(zhōngduàn)初始化

InitIO();//等待中斷

Delay(100);while(1);}共二百三十二頁-71-4.4.1通用(tōngyòng)I/O/********************************中斷服務子程序********************************/#pragmavector=P0INT_VECTOR__interruptvoidP0_ISR(void){//關中斷P0IEN&=~0x30;//判斷按鍵(ànjiàn)中斷

if(P0IFG>0){//清中斷標志

P0IFG=0;//LED1改變狀態(tài)

LED1=!LED1;}//開中斷

P0IEN|=0x30;}共二百三十二頁-72-4.4.3外設I/O外設I/O是I/O的第二功能,當I/O配置為外設I/O時,可以通過軟件配置連接到ADC、串口、定時器和調(diào)試接口等。當設置為外設I/O時,需要將對應的寄存器位PxSEL置1,每個外設單元對應兩組可以選擇的I/O引腳,即“外設位置1”和“外設位置2”,如表4-26所示。例如(lìrú)USART在SPI模式下,“外設位置1”為P0.2~P0.5,“外設位置2”為P1.2~P1.5

外設功能P0P1P2765432107654321043210ADCA7A6A5A4A3A2A1A0TUSART0(SPI)CSSM0M1M0M1CSSUSART0(UART)RTCTTXRXTXRXRTCT共二百三十二頁-73-USART1(SPI)M1M0CSSM1M0CSSUSART1(UART)RXTXRTCTRXTXRTCTTIMEIMER31010TIMER4101032KHzxoscQ1Q2DEBUGDCDD共二百三十二頁-74-4.4.3外設I/O外設I/O位置的選擇(xuǎnzé)使用寄存器PERCFG來控制,PERCFG是外設控制寄存器,用來選擇外設使用哪一個I/O端口

位名稱復位R/W描述7--0R0保留6T1CFG0R/W定時器1I/O控制0:外設位置11:外設位置25T3CFG0R/W定時器3I/O控制0:外設位置11:外設位置24T4CFG0R/W定時器4I/O控制0:外設位置11:外設位置23:2--0R0保留1U1CFG0R/WUSART1I/O控制0:外設位置11:外設位置20U0CFG0R/WUSART0I/O控制0:外設位置11:外設位置2//設置(shèzhì)USART0為外設位置1PERCFG|=0x00;共二百三十二頁-75-4.4.3外設I/O如果I/O映射有沖突,可以(kěyǐ)在有沖突的組合之間設置優(yōu)先級。優(yōu)先級的設置是通過寄存器P2SEL和P2DIR來設置

位名稱復位R/W描述7--0R0保留6PRI3P10R/W端口1外設優(yōu)先級控制,當模塊被指派到相同的引腳的時候,確定哪個優(yōu)先0:USART0優(yōu)先1:USART1優(yōu)先5PRI2P10R/W端口1外設優(yōu)先級控制,當PERCFG分配USART1和定時器3到相同引腳的時候,確定優(yōu)先次序0:USART1優(yōu)先1:定時器3優(yōu)先4PRI1P10R/W端口1外設優(yōu)先級控制。當PECFG分配定時器1和定時器4到相同引腳的時候,確定優(yōu)先次序0:定時器1優(yōu)先1:定時器4優(yōu)先3PRI0P10R/W端口1外設優(yōu)先級控制,當PERCFG分配USART0和定時器1到相同引腳的時候,確定優(yōu)先次序0:USART0優(yōu)先1:定時器1優(yōu)先2:0端口2功能選擇(詳見4.3.1節(jié))P2SEL設置(shèzhì)共二百三十二頁-76-4.4.3外設I/O如果I/O映射有沖突,可以(kěyǐ)在有沖突的組合之間設置優(yōu)先級。優(yōu)先級的設置是通過寄存器P2SEL和P2DIR來設置

P2DIR設置(shèzhì)位名稱復位R/W描述7:6PRIP000R/W端口0外設優(yōu)先級控制。當PERCFG分配給一些外設到相同引腳的時候,這些位將確定優(yōu)先級詳細優(yōu)先級列表00第1優(yōu)先級:USART0第2優(yōu)先級:USART1第3優(yōu)先級:定時器101第1優(yōu)先級:USART1第2優(yōu)先級:USART0第3優(yōu)先級:定時器110第1優(yōu)先級:定時器1通道0-1第2優(yōu)先級:USART1第3優(yōu)先級:USART0第4優(yōu)先級:定時器1通道2-311第1優(yōu)先級:定時器1通道2-3第2優(yōu)先級:USART0第3優(yōu)先級:USART1第4優(yōu)先級:定時器1通道0-15--0R0保留4:0端口2方向選擇(詳見4.3.1節(jié))共二百三十二頁-77-4.4.3外設I/OADC

整個P0口可作為ADC使用,因此可以使用多達8個ADC輸入引腳。此時P0引腳必須配置為ADC輸入。APCFG寄存器(ADC模擬外設I/O配置寄存器)可以配置P0的某個引腳為一個(yīɡè)ADC輸入,且相應的位必須設置為1位名稱復位R/W描述7:0APCFG[7:0]0x00R/W模擬外設I/O配置,APCFG[7:0]選擇P0.7~P0.0作為模擬I/O0:模擬I/O禁止1:模擬I/O使能//設置(shèzhì)P0.7為ADC輸入PICTL|=0x80;共二百三十二頁-78-4.4.3外設I/O串口

USART0和USART1均有兩種模式,分別是異步UART模式或同步SPI模式,并且每種模式下所對應的外設引腳有兩種,即外設位置1和外設位置2

P2SEL.PRI3P1和P2SEL.PRI0P1為端口1指派外設優(yōu)先順序(shùnxù),當兩者都設置為0時,USART0優(yōu)先共二百三十二頁-79-4.4.3外設I/O定時器1

PERCFG.T1CFG用于設置定時器1是使用外設位置1還是(háishi)外設位置2,定時器1的外設信息對應如下

0:通道(tōngdào)0捕獲/比較引腳。1:通道1捕獲/比較引腳。2:通道2捕獲/比較引腳。3:通道3捕獲/比較引腳。4:通道4捕獲/比較引腳。

共二百三十二頁-80-4.4.3外設I/O定時器

3PERCFG.T3CFG用于設置定時器3是使用(shǐyòng)外設位置1還是外設位置2

0:通道(tōngdào)0比較引腳。1:通道1比較引腳。共二百三十二頁-81-4.4.3外設I/O調(diào)試(diàoshì)接口端口P2.1和P2.2分別用于調(diào)試(diàoshì)數(shù)據(jù)和時鐘信號。即DD調(diào)試數(shù)據(jù)和DC調(diào)試時鐘。當處于調(diào)試模式,調(diào)試接口控制這些引腳的方向,并且在這些引腳上禁用上拉和下拉。共二百三十二頁-82-4.5振蕩器和時鐘(shízhōng)CC2530共有四個振蕩器,它們(tāmen)為系統(tǒng)時鐘提供時鐘源

共二百三十二頁-83-4.5.1振蕩器CC2530的四個振蕩器分別是32MHz外部(wàibù)晶振、16MHz內(nèi)部RC振蕩器、32KHz外部晶振和32KHz內(nèi)部RC振蕩器。其中32MHz晶振和16MHz內(nèi)部RC振蕩器是兩個高頻振蕩器;32KHz晶振和32KHz內(nèi)部RC振蕩器是兩個低頻振蕩器32MHz外部(wàibù)晶振(簡稱32MHz晶振)除了為內(nèi)部時鐘提供時鐘源之外,主要用于RF收發(fā)器。16MHzRC內(nèi)部振蕩器(簡稱16MHzRC振蕩器)也可以為內(nèi)部時鐘提供時鐘源,但是16MHzRC振蕩器不能用于RF收發(fā)器操作。對于一些應用程序來說32MHz晶振的啟動時間較長,設備可以采用先運行16MHzRC振蕩器,直到32MHz晶振穩(wěn)定。32KHz外部晶振(簡稱32KHz晶振)運行在32.768KHz上,為系統(tǒng)需要的時間精度提供一個穩(wěn)定的時鐘信號。32KHZRC內(nèi)部振蕩器(簡稱32KHZRC振蕩器)運行在32.753KHz上,當系統(tǒng)時鐘需要校準時使用此振蕩器,校準只能發(fā)生在系統(tǒng)時鐘工作由16MHzRC震蕩器轉到32MHz晶振的時候。需要注意的是32KHz晶振和32KHzRC振蕩器不能同時使用共二百三十二頁-84-4.5.2系統(tǒng)(xìtǒng)時鐘及寄存器CC2530內(nèi)部有一個內(nèi)部系統(tǒng)時鐘和一個主時鐘。在CC2530中系統(tǒng)時鐘源是從所選的主系統(tǒng)時鐘源獲得的,主時鐘一般由32MHz晶振或16MHzRC振蕩器提供。由于32MHz晶振啟動時間比較長,因此當選用32MHz晶振作為主時鐘源時,內(nèi)部首先選擇16MHzRC振蕩器使系統(tǒng)運轉起來,當32MHz晶振穩(wěn)定(wěndìng)之后才使用32MHz晶振作為主時鐘源

可以通過操作時鐘寄存器選擇使用哪個時鐘源。時鐘寄存器主要有兩個寄存器:時鐘控制命令寄存器CLKCONCMD和時鐘控制狀態(tài)寄存器CLKCONSTA

共二百三十二頁-85-4.5.2系統(tǒng)(xìtǒng)時鐘及寄存器CLKONCMD時鐘控制(kòngzhì)命令寄存器

位名稱復位R/W描述7OSC32K1R/W32KHz時鐘振蕩器選擇。設置該位只能發(fā)起一個時鐘源改變。要改變該位,必須選擇16MHzRCOSC作為系統(tǒng)時鐘。0:32KHzXOSC1:32KHzRCOSC6OSC1R/W系統(tǒng)時鐘源選擇。設置該位只能發(fā)起一個時鐘源改變。0:32MHzXOSC1:16MHzRCOSC5:3TICKSPD001R/W定時器標記輸出設置。不能高于通過OSC位設置的系統(tǒng)時鐘設置。000:32MHz001:16MHz010:8MHz011:4MHz100:2MHz101:1MHz110:500KHz111:250KHz注:CLKCONCMD.TICKSPD可以設置為任意值,但是結果受CLKCONCMD.OSC設置的限制,即如果CLKCONCMD.OSC=1不管TICKSPD是多少,實際的TICKSPD是16MHz2:0CLKSPD001R/W時鐘速度。不能高于通過OSC位設置的系統(tǒng)時鐘設置。標識當前系統(tǒng)時鐘頻率。000:32MHz001:16MHz010:8MHz011:4MHz100:2MHz101:1MHz110:500KHz111:250KHz注:CLKCONCMD.TICKSPD可以設置為任意值,但是結果受CLKCONCMD.OSC設置的限制,即如果CLKCONCMD.OSC=1不管TICKSPD是多少,實際的TICKSPD是16MHz//設置時鐘晶振為32MHZCLKCONCMD&=~0x40;共二百三十二頁-86-4.5.2系統(tǒng)(xìtǒng)時鐘及寄存器CLKCONSTA時鐘控制(kòngzhì)狀態(tài)寄存器

位名稱復位R/W描述7OSC32K1R/W當前選擇的32KHz時鐘源0:32KHz晶振1:32KHzRCOSC6OSC1R/W當前選擇系統(tǒng)時鐘。0:32MHzXOSC1:16MHzRCOSC5:3TICKSPD001R/W當前設定定時器標記輸出000:32MHz001:16MHz010:8MHz011:4MHz100:2MHz101:1MHz110:500KHz111:250KHz2:0CLKSPD001R/W當前時鐘速度000:32MHz001:16MHz010:8MHz011:4MHz100:2MHz101:1MHz110:500KHz111:250KHz//設置當前時鐘為32MHz晶振CLKCONSTA&=~0x40;共二百三十二頁-87-4.5.2系統(tǒng)(xìtǒng)時鐘及寄存器主時鐘源的選擇通過(tōngguò)CLKCONCMD和CLKCONSTA共同操作完成的,比如要改變時鐘源,需要使CLKCONSTA.OSC的設置與CLKCONCMD.OSC的設置相同才可以改變時鐘源。//設置系統(tǒng)時鐘為32MHz晶振CLKCONCMD&=~0x40;CLKCONSTA&=~0x40;共二百三十二頁

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論