表 4-11 P_IOB_GPIO_INPUT(0x88200070)
位 b31~b14 b13~b8 b7~b0
讀/寫 - R/W -
預設值 - 0 -
名稱 - IOB_INPUT -
IOB_INPUT b13~b8 IOB5~IOB0 的輸入資料
嵌入式微處理器 SPCE3200 原理及應用
© Sunplus Technology Co., Ltd. PAGE 165 V1.1 - Agu 29, 2007
4.1.5 基本操作
設置 IOA0、IOA1 為輸入埠,讀取 IOA0、IOA1 的輸入資料,參考程式段如下:
unsigned int a; // 定義一個變數
*P_IOA_GPIO_SETUP = 0x03030000; // 設置 IOA0、IOA1 為輸入埠 a = *P_IOA_GPIO_INPUT; // 讀取 IOA0、IOA1 的埠值 a &= 0x00000003; // 得到 IOA0、IOA1 的值
設置 IOA0、IOA1 為輸出使能,輸出高電平,參考程式段如下:
*P_IOA_GPIO_SETUP = 0x00000300; // IOA0、IOA1 輸出使能
*P_IOA_GPIO_SETUP |= 0x00000003; // IOA0、IOA1 輸出高電平
設置 IOA1 為上升沿外部中斷,查詢該中斷發生,參考程式段如下:
*P_INT_MASK_CTRL2 &= ~C_INT_GPIO_DIS; // 使能 IRQ 中斷
*P_IOA_GPIO_INT = C_IOA1_INTRISE_EN // 使能 IOA1 上升沿外部中斷 | C_IOA1_INTRISE_FLAG;
while(1) {
if(*P_IOA_GPIO_INT & C_IOA1_INTRISE_FLAG) // 判斷中斷是否發生 {
*P_IOA_GPIO_INT |= C_IOA1_INTRISE_FLAG; // 清除中斷旗標位元 }
}
4.2 計時器——TIMER
4.2.1 概述
SPCE3200 內嵌 6 個 16 位 CCP(Compare、Capture、PWM,比較、擷取、PWM 輸出)
計時器:Timer0、Timer1、Timer2、Timer3、Timer4 和 Timer5。6 個計時器的功能結構完 全相同,2 個時鐘源可供選擇 27MHz/(M+1)或 32768Hz 即時時鐘。
4.2.2 特性
Timer0~Timer5 這 6 個計時器均可以編程設置工作方式及時鐘源。可以編程設置為 normal 模式,即定時計數模式;CMP 模式,即比較模式;CAP 模式,即擷取模式;PWM 模式。每 個計時器也可以單獨設置時鐘源,選擇時鐘源 27MHz/(M+1)或 32768Hz 即時時鐘。
4.2.3 插腳描述
當計時器工作在比較輸出模式、擷取輸入模式和 PWM 輸出模式時,均需要透過晶片管腳輸
入、輸出資料,表 4-12列出了這些管腳:
嵌入式微處理器 SPCE3200 原理及應用
© Sunplus Technology Co., Ltd. PAGE 166 V1.1 - Agu 29, 2007
表 4-12 計時器 CCP 管腳描述
插腳名稱 插腳號 插腳屬性 插腳功能
USBDET 156 I/O 作為 Timer_CCP0 的輸入輸出 UART_RX 40 I/O 作為Timer_CCP1 的輸入輸出 UART_TX 39 I/O 作為Timer_CCP2 的輸入輸出 JTAG_TRSTN 153 I/O 作為Timer_CCP3 的輸入輸出 IOA0 41 I/O 作為Timer_CCP4 的輸入輸出 IOA1 42 I/O 作為Timer_CCP5 的輸入輸出
4.2.4 結構
計時器 Timer 的結構如圖 4-3所示:由於 6 個計時器的結構完全相同,以 Timer0 介紹計時器 的結構。時鐘源可以透過編程選擇其一,16 位計數器在選擇的頻率下從計數初值計數,控制 邏輯控制計時器 Timer 的使能、中斷使能等,當工作在 CCP 模式下,CCP 暫存器單元作為 計算 PWM 占空比、比較輸出或擷取輸入的存儲單元。
32768Hz 時 鐘 源
比較邏輯
16位計數器
邊沿邏輯 計數初值
PWM控制邏輯 CCP寄存器單元 PLLV/(M+1)
CCP IO IRQ
IRQ
控制邏輯 IRQ
圖 4-3 Timer 的結構
4.2.5 暫存器描述
由於 6 個計時器的結構、使用方法完全相同,這裏以 Timer0 為例介紹。共有 9 個暫存器單 元與計時器 Timer0 有關,參考表 4-13:
表 4-13 Timer0 相關的暫存器
暫存器中文名稱 暫存器英文名稱 位址
TIMER 時鐘選擇暫存器 P_TIMER_CLK_SEL 0x882100E4 TIMER 介面選擇暫存器 P_TIMER_INTERFACE_SEL 0x88200010
嵌入式微處理器 SPCE3200 原理及應用
© Sunplus Technology Co., Ltd. PAGE 167 V1.1 - Agu 29, 2007
暫存器中文名稱 暫存器英文名稱 位址
TIMER0 時鐘配置暫存器 P_TIMER0_CLK_CONF 0x8821006C TIMER0 控制暫存器 P_TIMER0_MODE_CTRL 0x88160000 TIMER0 CCP 控制暫存器 P_TIMER0_CCP_CTRL 0x88160004 TIMER0 計數初值資料暫存器 P_TIMER0_PRELOAD_DATA 0x88160008 TIMER0 計數暫存器 P_TIMER0_COUNT_DATA 0x88160010 TIMER0 CCP 計數初值資料暫存器 P_TIMER0_CCP_DATA 0x8816000C