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

📄 controlio.c

📁 一个用来实现GPS数据接收和处理分析的程序
💻 C
字号:
#include     <stdio.h>#include     <stdlib.h>#include     "io.h"#include	 "ControlIo.h"/*IO口初始化*/void init_ioport(){	int data;	DWORD_WRITE(GPIO_CFG2 , 0x0000000);	DWORD_WRITE(GPIO_DIR2 , 0x03ff0000);	DWORD_WRITE(GPIO_CFG3 , 0x0000000);	DWORD_WRITE(GPIO_DIR3 , 0x00ff0000);	DWORD_WRITE(GPIO_CFG4 , 0x0000000);	DWORD_WRITE(GPIO_DIR4 , 0x07ff0000);	data = DWORD_READ(GPIO_CFG5);     //config port5 config reg	data = data & 0xfff0ffff ; 	DWORD_WRITE(GPIO_CFG5 , data);	data = DWORD_READ(GPIO_DIR5);     //config port5 dir reg	data = data | 0x3000300; 	DWORD_WRITE(GPIO_DIR5 , data);	DWORD_WRITE(GPIO_CFG6 , 0x0000000);	DWORD_WRITE(GPIO_DIR6 , 0x0ffffffff);}/*********************************************************************************//**************读取特定的位,输入参数为要读取的位,返回该位的值,为1或0.**********************//*********************************************************************************/int redio_bit(int x)                        {  	unsigned int data;  	switch(x)   	{    case 0:     {     data=DWORD_READ(GPIO_DATAIN3);     data=((data&(1<<0))>>0);     return data;     }break;    case 1:     {     data=DWORD_READ(GPIO_DATAIN3);     data=((data&(1<<1))>>1);     return data;     }break;    case 2:     {     data=DWORD_READ(GPIO_DATAIN3);     data=((data&(1<<2))>>2);     return data;     }break;    case 3:     {     data=DWORD_READ(GPIO_DATAIN3);     data=((data&(1<<3))>>3);     return data;     }break;    case 4:     {     data=DWORD_READ(GPIO_DATAIN3);     data=((data&(1<<4))>>4);     return data;     }break;    case 5:     {     data=DWORD_READ(GPIO_DATAIN3);     data=((data&(1<<5))>>5);     return data;     }break;    case 6:     {     data=DWORD_READ(GPIO_DATAIN3);     data=((data&(1<<6))>>6);     return data;     }break;    case 7:     {     data=DWORD_READ(GPIO_DATAIN2);     data=((data&(1<<0))>>0);     return data;     }break;         case 8:     {     data=DWORD_READ(GPIO_DATAIN2);     data=((data&(1<<1))>>1);     return data;     }break;    case 9:     {     data=DWORD_READ(GPIO_DATAIN2);     data=((data&(1<<2))>>2);     return data;     }break;    case 10:     {     data=DWORD_READ(GPIO_DATAIN2);     data=((data&(1<<3))>>3);     return data;     }break;    case 11:     {     data=DWORD_READ(GPIO_DATAIN2);     data=((data&(1<<4))>>4);     return data;     }break;     case 12:     {     data=DWORD_READ(GPIO_DATAIN2);     data=((data&(1<<5))>>5);     return data;     }break;    case 13:	     {	     data=DWORD_READ(GPIO_DATAIN2);	     data=((data&(1<<6))>>6);	     return data;	     }break;    case 14:	     {	     data=DWORD_READ(GPIO_DATAIN2);	     data=((data&(1<<7))>>7);	     return data;	     }break;     case 15:	     {	     data=DWORD_READ(GPIO_DATAIN2);	     data=((data&(1<<8))>>8);	     return data;	     }break;     case 16:	     {	     data=DWORD_READ(GPIO_DATAIN2);	     data=((data&(1<<9))>>9);	     return data;	     }break;     default :  break;   	}}/****************************************************************************************//********* 端口置位函数,入口参数一个,无输出参数,入口参数值为要置位的端口名字。********//****************************************************************************************/void setio_bit(int x){unsigned int data;	switch(x)  { 	  case 0:     {     	data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<0);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;     case 1:     {      data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<1);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;  case 2:     {      data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<2);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;        case 3:     {     	data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<3);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;     case 4:     {      data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<4);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;   case 5:     {      data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<5);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;          case 6:     {     	data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<6);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;      case 7:     {      data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<7);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;   case 8:     {      data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<8);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;         case 9:     {     	data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<9);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;      case 10:     {      data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<10);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;   case 11:     {      data=DWORD_READ(GPIO_DATAIN6);     	data=data | (1<<11);      	DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;      case 12:     {        data=DWORD_READ(GPIO_DATAIN5);     	data=data | (1<<8);      	DWORD_WRITE(GPIO_DATAOUT5 , data);      }break;   case 13:     {      data=DWORD_READ(GPIO_DATAIN5);     	data=data | (1<<9);      	DWORD_WRITE(GPIO_DATAOUT5 , data);      }   break;   default :  break;  } 	  }/****************************************************************************************//********* 端口清零函数,入口参数一个,无输出参数,入口参数值为要清零的端口名字。********//****************************************************************************************/void clrio_bit(int x){unsigned int data;switch(x)  {   case 0:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<0));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;         case 1:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<1));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;      case 2:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<2));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;            case 3:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<3));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;         case 4:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<4));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;      case 5:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<5));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;             case 6:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<6));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;         case 7:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<7));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;      case 8:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<8));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;            case 9:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<9));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;         case 10:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<10));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;      case 11:     {      data=DWORD_READ(GPIO_DATAIN6);      data=data & (~(1<<11));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT6 , data);      }break;     case 12:     {      data=DWORD_READ(GPIO_DATAIN5);      data=data & (~(1<<8));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT5 , data);      }break;      case 13:     {      data=DWORD_READ(GPIO_DATAIN5);      data=data & (~(1<<9));            //clear the bit      DWORD_WRITE(GPIO_DATAOUT5 , data);      }break;                 default :  break; }   }#if 0int main(){    int data;  printf("start test io port!!!!!!\n");  init_ioport();    while(1)  {   /*  setio_bit(RLED_POWER );  setio_bit(GLED_POWER );  setio_bit(E5V_POWER );  sleep(1);  clrio_bit(E5V_POWER );  clrio_bit(GLED_POWER);  clrio_bit(RLED_POWER);  sleep(1);  */  data=redio_bit(LOW_PW12);   printf("LOW_PW12 is %d \n",data);  data=redio_bit(RING);   printf("RING is %d \n",data);  data=redio_bit(FOOT);   printf("FOOT is %d \n",data);  data=redio_bit(DOOR_B);   printf("DOOR_Bis %d \n",data);    sleep(1);  }  return 0;}#endif

⌨️ 快捷键说明

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