⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evmdm6437_gpio.c

📁 evmdm6437_gpio的函数原型!!!!!!!!!!!!!!!
💻 C
字号:
/*
 *  Copyright 2006 by Spectrum Digital Incorporated.
 *  All rights reserved. Property of Spectrum Digital Incorporated.
 */

/*
 *  GPIO implementation
 *
 */

#include "evmdm6437_gpio.h"

static GPIO_Handle Gpio_Handle[4] = {
    ( GPIO_Handle )&GPIO_MODULE_01,
    ( GPIO_Handle )&GPIO_MODULE_23,
    ( GPIO_Handle )&GPIO_MODULE_45,
    ( GPIO_Handle )&GPIO_MODULE_6
};

/* ------------------------------------------------------------------------ *
 *                                                                          *
 *  _GPIO_init( )                                                           *
 *                                                                          *
 * ------------------------------------------------------------------------ */
Int16 EVMDM6437_GPIO_init( )
{
    GPIO_PCR = 1;                           // Free GPIO from emulation
    return 0;
}

/* ------------------------------------------------------------------------ *
 *                                                                          *
 *  _GPIO_setDir( number, direction )                                       *
 *                                                                          *
 *      number    <- GPIO#                                                  *
 *      direction <- 0:OUT 1:IN                                             *
 *                                                                          *
 * ------------------------------------------------------------------------ */
Int16 EVMDM6437_GPIO_setDir( Uint16 number, Uint8 direction )
{
    Uint32 bank_id = ( number >> 5 );
    Uint32 pin_id  = ( 1 << ( number & 0x1f ) );
    GPIO_Handle gpio_handle = Gpio_Handle[bank_id];

    if ( ( direction & 1 ) == GPIO_OUT )
        gpio_handle->regs->DIR &= ~pin_id;  // Set to OUTPUT
    else
        gpio_handle->regs->DIR |= pin_id;   // Set to INPUT

    return 0;
}

/* ------------------------------------------------------------------------ *
 *                                                                          *
 *  _GPIO_setOutput( number, output )                                       *
 *                                                                          *
 *      number  <- GPIO#                                                    *
 *      value   <- 0:LOW 1:HIGH                                             *
 *                                                                          *
 * ------------------------------------------------------------------------ */
Int16 EVMDM6437_GPIO_setOutput( Uint16 number, Uint8 output )
{
    Uint32 bank_id = ( number >> 5 );
    Uint32 pin_id  = ( 1 << ( number & 0x1f ) );
    GPIO_Handle gpio_handle = Gpio_Handle[bank_id];

    if ( ( output & 1 ) == 0 )
        gpio_handle->regs->CLR_DATA = pin_id;  // Set to LOW
    else
        gpio_handle->regs->SET_DATA = pin_id;  // Set to HIGH

    return 0;
}

/* ------------------------------------------------------------------------ *
 *                                                                          *
 *  _GPIO_getInput( number )                                                *
 *                                                                          *
 *      number      <- GPIO#                                                *
 *                                                                          *
 *      Returns:    0:LOW                                                   *
 *                  1:HIGH                                                  *
 *                                                                          *
 * ------------------------------------------------------------------------ */
Int16 EVMDM6437_GPIO_getInput( Uint16 number )
{
    Uint32 input;
    Uint32 bank_id = ( number >> 5 );
    Uint32 pin_id  = ( number & 0x1f );
    GPIO_Handle gpio_handle = Gpio_Handle[bank_id];

    input = gpio_handle->regs->IN_DATA;
    input = ( input >> pin_id ) & 1;

    return input;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -