uint32 gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS); // read interrupt status uint8 level = 0; GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status); // clear interrupt mask if (gpio_status & (BIT(12))) // judeg whether interrupt source is gpio12 { if (GPIO_INPUT_GET(12)...
GPIO 引脚的状态intbase;//chip的基地址u16 ngpio;//GPIO 引脚数量constchar*const*names;boolcan_sleep;boolirq_not_threaded;#ifIS_ENABLED(CONFIG_GPIO_GENERIC)// bgpio使能unsignedlong(*read_reg)(void__iomem *reg);void(*write_reg)(void__iomem *reg,unsignedlongdata);unsignedlong(*pin2mask)(str...
assert 0<=reg_addr<=8192,"reg_addr must be less than 8192,which is 2 pagesize" assert 0<=value<=0xFFFFFFFF,"value must be less than 0xFFFFFFFF,which is 4 bytes" self.m_mmap.seek(reg_addr) BytesToWrite = struct.pack('L',value) self.m_mmap.write(BytesToWrite) return 1. 2. ...
1.直接上菜 voidgpio0_intr_handler() { uint32 gpio_status= GPIO_REG_READ(GPIO_STATUS_ADDRESS);//读取GPIO状态寄存器,获取中断信息GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);//清除中断信息if(gpio_status & (BIT(0)))//GPIO0产生的中断{if(!GPIO_INPUT_GET(0))//GPIO0是低电平 GP...
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status); //GPIO_STATUS_ADDRESS: 中断状态寄存器地址 //GPIO_STATUS_W1TC_ADDRESS: 清中断寄存器地址 四、应用场景 4.1 点亮LED灯 Step 1) 配置MTDI为GPIO模式 PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12); ...
(); write_data(dat); check_status(); write_cmd1(cmd); } void write_cmd3(uchar data1,uchar data2,uchar cmd)//发送参数并发指令再发送数据 { check_status(); write_data(data1); check_status(); write_data(data2); check_status(); write_cmd1(cmd); } void init()//LCD12864的初始化...
以上主要结合《S3C2410X 32-BIT RISC MICROPROCESSOR USER'S MANUAL》分析了$(LINUX_KERNEL_INCLUDE)/asm-arm/arch/s3c2410.h中所定义的对2410GPIO进行 操作的几个宏,除了文中提及的几个宏,除此还有read_gpio_bit(x)、read_gpio_reg(x) 、write_gpio_reg(x, v)等,实现方法和上述类似,在此不再一一赘述!
获取reg属性中GPIOI_MODER、GPIOI_OTYPER、GPIOI_OSPEEDR、GPIOI_PUPDR和GPIOI_BSRR这些寄存器的地址,并且初始化它们,这些寄存器用于设置PI0这个PIN的复用功能、上下拉、速度等。 在2里面将PI0这个PIN设置为通用输出功能,因此需要设置PI0这个GPIO相关的寄存器,也就是设置GPIOI_MODER寄存器。 在2里面将PI0这个PIN设...
#define GPIO8_REGBASE (0x20A0000) #define GPIO8_A6 ((volatile unsigned int)(base_addr1 + 6)) //指针unsigned int为4字节,指针加1,字节加4 base_addr1 = ioremap(GPIO8_REGBASE, 0x14) 通过readl() 或者 writel() 函数直接操作映射后的地址: ...
;//使能定时器}/***按键中断服务函数,高电平触发*/staticvoidICACHE_FLASH_ATTRkey_intr_handler(void){uint32gpio_status=GPIO_REG_READ(GPIO_STATUS_ADDRESS);//读取GPIO寄存器状态,获取中断信息uint8level=0;GPIO_REG_WRITE(GPIO_STATUS_ADDRESS,gpio_status);//清楚中断信息if(gpio_status&(BIT(15))){/...