📄 controlio.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 + -