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

📄 drv_dsp280x_gpio.c

📁 SVPWM算法的DSP源码已通过硬件验证
💻 C
📖 第 1 页 / 共 2 页
字号:
//
// 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 + -