void bcm_gpio_cfgpin(unsigned int gpio, unsigned int config)
时间: 2023-12-23 13:01:58 浏览: 68
这个函数用于配置Broadcom SoC芯片上的GPIO引脚的功能模式和电气特性。该函数的参数gpio表示GPIO引脚编号,config表示引脚的配置信息。具体来说,config参数包含以下几个位域:
- bit 0-2: 引脚功能模式,0表示普通输入,1表示普通输出,2表示专用功能1,3表示专用功能2,以此类推。
- bit 3-4: 引脚驱动能力,0表示2mA,1表示4mA,2表示6mA,3表示8mA。
- bit 5: 引脚上拉电阻,0表示禁用,1表示启用。
- bit 6: 引脚下拉电阻,0表示禁用,1表示启用。
- bit 7: 引脚中断触发方式,0表示边沿触发,1表示电平触发。
- bit 8: 引脚中断触发边沿,0表示上升沿/高电平触发,1表示下降沿/低电平触发。
例如,要将GPIO引脚23配置为普通输出、8mA驱动、禁用上拉电阻、启用下拉电阻、边沿触发、下降沿触发,则可以将config参数设置为0x5c。
在这个驱动程序中,bcm_gpio_cfgpin函数用于配置LED引脚的功能模式和电气特性,以便控制LED的亮灭。
相关问题
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); }
这段代码是用来控制树莓派GPIO口的,第一个函数 bcm_gpio_cfgpin 用来设置 GPIO 口的功能,第二个函数 gpio_set_usr 用来设置 GPIO 口的输出状态。其中,bcm_gpio_cfgpin 函数中的参数 gpio 是要设置的 GPIO 口编号,config 是要设置的功能,例如输入、输出、PWM 等;gpio_set_usr 函数中的参数 gpio 是要控制的 GPIO 口编号,value 是要设置的输出状态,1 表示输出高电平,0 表示输出低电平。
阅读全文