s3c2451

    xiaoxiao2021-03-25  45

    #ifndef _S3C2451_GPIO_   #define _S3C2451_GPIO_      #define GPACON  *((volatile int *)0x56000000)   #define GPADATA  *((volatile int *)0x56000004)   #define GPBCON  *((volatile int *)0x56000010)   #define GPBDATA  *((volatile int *)0x56000014)   #define GPFCON  *((volatile int *)0x56000050)   #define GPFDATA  *((volatile int *)0x56000054)   #define BIT(n) (1 << (n))      enum{       GPAIO = 0,       GPBIO,       GPFIO   };      enum{       INPUT = 0,       OUTPUT   };   int GPIO_key();   int GPIO_init(int gpiox,int pin,int dir);   int GPIO_writedata(int gpiox,int pin,int data);      #endif</pre><br>   <br>   <pre></pre>   <pre code_snippet_id="2259825" snippet_file_name="blog_20170312_3_6194001" name="code" class="html">#include"s3c2451_gpio.h"    char temp = 0;    char i = 0;   int GPIO_init(int gpiox,int pin,int dir)   {       if(gpiox == GPBIO)       {           if(dir == INPUT)           {               GPBCON &= ~BIT(pin*2);               GPBCON &= ~BIT(pin*2 + 1);           }           else if(dir == OUTPUT)           {               GPBCON |= BIT(pin*2);               GPBCON &= ~BIT(pin*2 + 1);           }              }       else if(gpiox == GPAIO)       {                       if(dir == OUTPUT)           {               GPACON &= ~BIT(pin);           }                     }       else if(gpiox == GPFIO)       {           if(dir == INPUT)           {               GPFCON &= ~BIT(pin*2);               GPFCON &= ~BIT(pin*2 + 1);           }           else if(dir == OUTPUT)           {               GPFCON |= BIT(pin*2);               GPFCON &= ~BIT(pin*2 + 1);           }                     }       return 0;   }      int GPIO_writedata(int gpiox,int pin,int data)   {       if(gpiox == GPBIO)       {           if(data == 0)               GPBDATA &= ~BIT(pin);           else               GPBDATA |= BIT(pin);       }       else if(gpiox == GPAIO)       {           if(data == 0)               GPADATA &= ~BIT(pin);           else               GPADATA |= BIT(pin);                  }       return 0;   }      int GPIO_key()   {              if((GPFDATA & 0x01)== 0)       {           i++;           if(i%2)           GPIO_writedata(GPBIO,5,0);           else           GPIO_writedata(GPBIO,5,1);       }       else if((GPFDATA & 0x02)== 0)       {           GPIO_writedata(GPBIO,6,temp);                      temp = ~temp;           temp &= 0x01;       }       else if((GPFDATA & 0x04)== 0)       {           GPIO_writedata(GPAIO,25,0);       }       else if((GPFDATA & 0x08)== 0)       {           GPIO_writedata(GPAIO,26,0);       }       return 0;   }  
    转载请注明原文地址: https://ju.6miu.com/read-36668.html

    最新回复(0)