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...
*/staticvoidICACHE_FLASH_ATTRkey_intr_handler(void){uint32 gpio_status=GPIO_REG_READ(GPIO_STATUS_ADDRESS);//读取GPIO寄存器状态,获取中断信息uint8 level=0;GPIO_REG_WRITE(GPIO_STATUS_ADDRESS,gpio_status);//清楚中断信息if(gpio_status&(BIT(15))){//判断是否是gpio15if(GPIO_INPUT_GET(15)){/...
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); ...
0x0 input_reg寄存器值(这里无效) 2 GPIO子系统 GPIO子系统,顾名思义,就是管理GPIO功能的一个系统,其作用是初始化配置GPIO(这一点是不是和之前寄存器配置时使用的PAD寄存器的功能有点像),并提供对外的API接口。使用GPIO子系统后,就不需要自己操作寄存器,通过调用GPIO子系统提供的API函数即可实现对GPIO的控制。
获取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() 函数直接操作映射后的地址: ...
(); 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的初始化...