📄 drv_dsp280x_gpio.c
字号:
//
// Copyright (c) 2007, 北京动力源科技股份有限公司
// All rights reserved.
//
// 项目名称: EPS_Controller
// 文件名称: Drv_dsp280x_GPIO.c
//
// 版 本: Ver 1.01
//
// 完成日期: 2009年9月
// 作 者: Zhang Tingting
//
// 修订日期: 2009年12月
// 修 订 者: Zhang Tingting
//
// 编辑工具:UEStudio(TAB should be set to 4)
//
// 编译工具:Code Composer Studio V3.3
//--------------------------------------------------------------------------------
// Include files
//--------------------------------------------------------------------------------
#include "DSP280x_Device.h"
#include "DSP280x_Examples.h"
#include "Drv_dsp280x_GPIO.h"
//--------------------------------------------------------------------------------
//
//--------------------------------------------------------------------------------
void Gpio_Qual_period(void)
{
EALLOW;
/*整体设置:
GpioCtrlRegs.GPACTRL.all = 0xFFFFFFFF;
GpioCtrlRegs.GPBCTRL.all = 0xFF;
*/
//每8位设置
GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 0xFF;
GpioCtrlRegs.GPACTRL.bit.QUALPRD1 = 0xFF;
GpioCtrlRegs.GPACTRL.bit.QUALPRD2 = 0xFF;
GpioCtrlRegs.GPACTRL.bit.QUALPRD3 = 0xFF;
GpioCtrlRegs.GPBCTRL.bit.QUALPRD0 = 0xFF;
EDIS;
}
//************************************************************************
//GPIO函数说明:
//第一项:上拉是否打开选项;
// 设置为PUD_ON,上拉打开;
// 设置为PUD_OFF,上拉关闭;
//第二项:端口方向选项;
// 设置为GPIO_Output,GPIO设为输出;
// 设置为GPIO_Input,GPIO设为输入;
//第三项:对输入端口选择输入鉴定类型:
// 当端口为输入时,设置为Input_SYSCLKOUT,只与SYSCLKOUT同步
// 当端口为输入时,设置为Input_SYSCLKOUT_3,采样窗口为三倍采样宽
// 当端口为输入时,设置为Input_SYSCLKOUT_6,采样窗口为六倍采样宽
// 当端口为输入时,设置为Input_ASYNCHRONISM,异步输入
// 当端口为输出时,设置为Output_non,对输入设置的参数无效
//第四项:当端口为输出时,设置端口初始值
//************************************************************************
void Gpio0_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio ) //方向是否为输入
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO0 = 0; // SYSCLKOUT
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO0 = 1; // 3 samples
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO0 = 2; // 6 samples
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO0 = 3; // Asynch input
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO0 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO0 = PUD_Gpio; // 0:启用引脚上的内部上拉电阻;1:禁用引脚上的内部上拉电阻
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0 = GPIO0 将引脚配置为IO
GpioCtrlRegs.GPADIR.bit.GPIO0 = DIR_Gpio; // 0:输入引脚;1:输出引脚
EDIS;
}
void Gpio1_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO1 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO1 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO1 = DIR_Gpio;
EDIS;
}
void Gpio2_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO2 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO2 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO2 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO2 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO2 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO2 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO2 = DIR_Gpio;
EDIS;
}
void Gpio3_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO3 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO3 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO3 = DIR_Gpio;
EDIS;
}
void Gpio4_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO4 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO4 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO4 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO4 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO4 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO4 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO4 = DIR_Gpio;
EDIS;
}
void Gpio5_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO5 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO5 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO5 = DIR_Gpio;
EDIS;
}
void Gpio6_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO6 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO6 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO6 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO6 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO6 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO6 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO6 = DIR_Gpio;
EDIS;
}
void Gpio7_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO7 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO7 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO7 = DIR_Gpio;
EDIS;
}
void Gpio8_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO8 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO8 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO8 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO8 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO8 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO8 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO8 = DIR_Gpio;
EDIS;
}
void Gpio9_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO9 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO9 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO9 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO9 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO9 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO9 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO9 = DIR_Gpio;
EDIS;
}
void Gpio10_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO10 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO10 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO10 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO10 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO10 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO10 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO10 = DIR_Gpio;
EDIS;
}
void Gpio11_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO11 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO11 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO11 = DIR_Gpio;
EDIS;
}
void Gpio12_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO12 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO12 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO12 = DIR_Gpio;
EDIS;
}
void Gpio13_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO13 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO13 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO13 = DIR_Gpio;
EDIS;
}
void Gpio14_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO14 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO14 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO14 = DIR_Gpio;
EDIS;
}
void Gpio15_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3;
break;
default:break;
}
}
else //设定为输出端口
{
GpioDataRegs.GPADAT.bit.GPIO15 = Output_Data;
}
GpioCtrlRegs.GPAPUD.bit.GPIO15 = PUD_Gpio;
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO15 = DIR_Gpio;
EDIS;
}
void Gpio16_setup(char PUD_Gpio,char DIR_Gpio,char SELECT_Input,char Output_Data)
{
EALLOW;
if( !DIR_Gpio )
{
switch( SELECT_Input )
{
case 0: GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 0;
break;
case 1: GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 1;
break;
case 2: GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 2;
break;
case 3: GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3;
break;
default:break;
}
}
else //设定为输出端口
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -