HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); GPIOx为要读取的IO口组号 GPIO_PIN为引脚号 PinState是枚举类型 typedef enum { GPIO_PIN_RESET = 0u, //低电平 GPIO_PIN_SET // 高电平 } GPIO_PinState; 无返回值 反转电平 HAL_GPIO_TogglePin(GPIO_TypeDef ...
uint16_t GPIO_Pin, GPIO_PinState PinState); GPIOx为要读取的IO口组号 GPIO_PIN为引脚号 Pi...
上图中,pinctrl-names里定义了2种状态:default、sleep。 第0种状态用到的引脚在pinctrl-0中定义,它是state_0_node_a,位于pincontroller节点中。 第1种状态用到的引脚在pinctrl-1中定义,它是state_1_node_a,位于pincontroller节点中。 当这个设备处于default状态时,pinctrl子系统会自动根据上述信息把所用引脚复用...
pin state 有关的信息是通过 pin map 收集,相关的数据结构如下: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 struct pinctrl_map { //device的名称 const char *dev_name; //pin state的名称 const char *name; //该map的类型 enum pinctrl_map_type type; //pin controller device的名字 const ...
GPIO_Pin:表示在某组端口中的某一个引脚; PinState:表示对这个IO控制输出的状态, 是一个枚举类型,包含两个成员:GPIO_PIN_RESET、GPIO_PIN_SET。 因为低电平亮灯,所以定义ON对应GPIO_PIN_RESET, OFF对应GPIO_PIN_SET 1. 2. 3. 4. 5. 3、对GPIO的读取函数: ...
在确定了pin map各个字段的格式后,pinctrl driver会进一步在dts文件中维护pin state及其对应的mapping table。当pinctrl core进行初始化时,它会读取并解析dts文件,进而生成pin map。Gpio的使用和配置 通过pinctrl和gpio驱动提供的接口申请、释放、设置gpio方向,并通过sysfs接口操作gpio引脚。 每个GPIO控制器都由一个...
1)pin state 对于一个"client device",如UART设备,它有多个“状态”:default、sleep等,那么对应的引脚也有这些状态。 比如,默认状态下,UART设备正常工作,那么所用的引脚就要复用为UART功能; 休眠状态下,为了省电,可以把这些引脚复用为GPIO功能;或者直接把它们配置输出高电平。
第1种状态用到的引脚在pinctrl-1中定义,它是state_1_node_a,位于pincontroller节点中。 当这个设备处于default状态时,pinctrl子系统会自动根据上述信息把所用引脚复用为uart0功能。 当这这个设备处于sleep状态时,pinctrl子系统会自动根据上述信息把所用引脚配置为高电平。
pin state 根据前面的描述,pinctrl driver 抽象出来了一些离散的对象:pin(pin group)、function、configuration,并实现了这些对象的控制和配置方式。然后我们回到某一个具体的 device 上(如 lpuart,usdhc)。一个设备在某一状态下(如工作状态、休眠状态、等等),所使用的pin(pin group)、pin(pin group)的 function 和...
void (*pin_dbg_show) (struct pinctrl_dev *pctldev, struct seq_file *s, unsigned offset); //用于将device tree中的pin state信息转换为pin map int (*dt_node_to_map) (struct pinctrl_dev *pctldev, struct device_node *np_config, struct pinctrl_map **map, unsigned *num_maps); ...