?? bbu_dd_gpioadl.c
字號:
/*******************************************************************************
* COPYRIGHT (C) 中國普天研究院 *
********************************************************************************
* 源文件名: BBU_DD_GpioAdl.c *
* 功能描述:API Function Description for GPIO in TMS320C6414 and TMS320C6416 *
* 編寫者:Wangshiqiang *
* 版本:1.0.0 *
* 編制日期:07/14/2004 *
* 說明: *
* 修改歷史: *
* *
*******************************************************************************/
#include "BBU_DD_GpioCsl.h"
#include "BBU_DD_Post.h"
/******************************************************************************\
* GPIO Static Global Variable Definitions
\******************************************************************************/
#pragma DATA_SECTION(hCpbGpio,".gvariable");
GPIO_Handle *hCpbGpio;
#pragma DATA_SECTION(led1PinMask,".gvariable");
Uint32 led1PinMask;
#pragma DATA_SECTION(led2PinMask,".gvariable");
Uint32 led2PinMask;
#pragma DATA_SECTION(led3PinMask,".gvariable");
Uint32 led3PinMask;
#pragma DATA_SECTION(led4PinMask,".gvariable");
Uint32 led4PinMask;
#pragma DATA_SECTION(gpioPortHandle,".gvariable");
static GPIO_Handle gpioPortHandle = GPIO_DEVICE_ENTRY;
/* GPIO Device config structures for CPB POST */
#pragma DATA_SECTION(gpioConfig,".gvariable");
static GPIO_Config gpioConfig = {
/* GPGC GPEN GPDIR GPVAL */
0x00000000, 0x0000FEF8, 0x00001E18, 0x00001E18,
/* GPHM GPLM GPPOL */
0x00000000, 0x00000000, 0x00000000};
/*----------------------------------------------------------------------------*/
/******************************************************************************\
* GPIO API function declarations
\******************************************************************************/
CSLAPI void GPIO_resetAll(GPIO_Handle *hGpio);
CSLAPI GPIO_Handle *GPIO_open(void);
CSLAPI void GPIO_config(GPIO_Handle *hGpio, GPIO_Config *config);
CSLAPI void GPIO_getConfig(GPIO_Handle *hGpio, GPIO_Config *config);
CSLAPI void GPIO_close(GPIO_Handle *hGpio);
CSLAPI GPIO_Handle *GPIO_init(void);
CSLAPI Uint32 GPIO_getDspId(GPIO_Handle *hGpio);
CSLAPI void GPIO_setLedOn(GPIO_Handle *hGpio,Uint32 pinMask);
CSLAPI void GPIO_setLedOff(GPIO_Handle *hGpio,Uint32 pinMask);
CSLAPI void GPIO_setDspReady(GPIO_Handle *hGpio,Uint32 val);
/******************************************************************************\
* GPIO API Function Declarations
\******************************************************************************/
/*******************************************************************************
* 函數名稱: GPIO_resetAll *
* 函數描述: Resets the GPIO Port *
* 相關文檔: *
* 參數描述: *
* 參數名 類型 輸入/輸出 描述 *
* -------- ---- --------- ----------- *
* hGpio GPIO_Handle* in Handle for GPIO Device *
* *
* 返回值: 無 *
* 說明: *
*******************************************************************************/
CSLAPI void GPIO_resetAll(GPIO_Handle *hGpio)
{
Uint32 gie;
gie = IRQ_globalDisable();
GPIO_RSETH(hGpio,GPGC,GPIO_GPGC_DEFAULT);
GPIO_RSETH(hGpio,GPDIR,GPIO_GPDIR_DEFAULT);
GPIO_RSETH(hGpio,GPPOL,GPIO_GPPOL_DEFAULT);
GPIO_RSETH(hGpio,GPHM,GPIO_GPHM_DEFAULT);
GPIO_RSETH(hGpio,GPLM,GPIO_GPLM_DEFAULT);
GPIO_RSETH(hGpio,GPEN,GPIO_GPEN_DEFAULT);
GPIO_RSETH(hGpio,GPDH,0xFFFFFFFF);
GPIO_RSETH(hGpio,GPDL,0xFFFFFFFF);
GPIO_RSETH(hGpio,GPVAL,GPIO_GPVAL_DEFAULT);
IRQ_globalRestore(gie);
}
/*----------------------------------------------------------------------------*/
/*******************************************************************************
* 函數名稱: GPIO_open *
* 函數描述: Before a GPIO device can be used, it must first be opened *
* by this function. *
* 相關文檔: *
* 參數描述: 無 *
* *
* 返回值: hGpio *
* 說明: *
*******************************************************************************/
GPIO_Handle *GPIO_open(void)
{
Uint32 gie;
GPIO_Handle *hGpio;
hGpio = GPIO_HINV;
gie = IRQ_globalDisable();
if (gpioPortHandle.allocated == FALSE)
{
hGpio = &gpioPortHandle;
gpioPortHandle.allocated = TRUE;
GPIO_resetAll(hGpio);
}
IRQ_globalRestore(gie);
return hGpio;
}
/*----------------------------------------------------------------------------*/
/*******************************************************************************
* 函數名稱: GPIO_config *
* 函數描述: Setup the GPIO using the configuration structure *
* 相關文檔: *
* 參數描述: *
* 參數名 類型 輸入/輸出 描述 *
* -------- ---- --------- ----------- *
* hGpio GPIO_Handle* in GPIO Handle for GPIO *
* config GPIO_Config* in Configuration structure for GPIO*
* *
* 返回值: void *
* 說明: *
*******************************************************************************/
CSLAPI void GPIO_config(GPIO_Handle *hGpio,GPIO_Config *config)
{
Uint32 gie;
register int x0,x1,x2,x3,x4,x5,x6;
volatile Uint32 *base = (volatile Uint32 *)(hGpio->baseAddr);
gie = IRQ_globalDisable();
x0 = config->gpgc;
x1 = config->gpen;
x2 = config->gpdir;
x3 = config->gpval;
x4 = config->gphm;
x5 = config->gplm;
x6 = config->gppol;
base[GPIO_GPGC_OFFSET] = x0;
base[GPIO_GPEN_OFFSET] = x1;
base[GPIO_GPDIR_OFFSET]= x2;
base[GPIO_GPVAL_OFFSET]= x3;
base[GPIO_GPHM_OFFSET] = x4;
base[GPIO_GPLM_OFFSET] = x5;
base[GPIO_GPPOL_OFFSET]= x6;
IRQ_globalRestore(gie);
}
/*----------------------------------------------------------------------------*/
/*******************************************************************************
* 函數名稱: GPIO_getConfig *
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -