void bcm_gpio_cfgpin(unsigned int gpio, unsigned int config) { volatile unsigned int* GPFSELx; GPFSELx = (volatile void *)(io_addr+gpio/10*4); iowrite32(~(7<<(gpio%10*3)) & ioread32(GPFSELx),GPFSELx); iowrite32((config<<(gpio%10*3))|ioread32(GPFSELx),GPFSELx); } void gpio_set_usr(unsigned gpio, int value) { volatile unsigned int* GPSETx; volatile unsigned int* GPCLRx; GPSETx = (volatile void *)(io_addr+0x1C+gpio/32*4); GPCLRx = (volatile void *)(io_addr+0x28+gpio/32*4); if(value) iowrite32(1<<(gpio%32),GPSETx); else iowrite32(1<<(gpio%32),GPCLRx); }
时间: 2024-04-02 12:31:12 浏览: 163
GPIO_INT.zip_GPIO INT_lpc2368_lpc2368 interrupt
这段代码是用来控制树莓派GPIO口的,第一个函数 bcm_gpio_cfgpin 用来设置 GPIO 口的功能,第二个函数 gpio_set_usr 用来设置 GPIO 口的输出状态。其中,bcm_gpio_cfgpin 函数中的参数 gpio 是要设置的 GPIO 口编号,config 是要设置的功能,例如输入、输出、PWM 等;gpio_set_usr 函数中的参数 gpio 是要控制的 GPIO 口编号,value 是要设置的输出状态,1 表示输出高电平,0 表示输出低电平。
阅读全文