N-MOS管导通,使输出低电平,I/O端口的电平就是低电平,若控制输出为1 高电平,则P-MOS管导通N-MOS管关闭,使输出高电平,I/O端口的电平就是高电平, 外部上拉和下拉的作用是控制在没有输出时IO口电平此时施密特触发器是打开的,即输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态。
voidHAL_GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_Init);voidHAL_GPIO_DeInit(GPIO_TypeDef*GPIOx,uint32_t GPIO_Pin);GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin,GPIO_PinState PinState);voidHAL_GPIO...
__HAL_RCC_GPIOA_CLK_ENABLE();//使能GPIOA时钟/*Configure GPIO pin Output Level*/HAL_GPIO_WritePin(GPIOA, DONG_OUT_1_Pin|DONG_OUT_2_Pin, GPIO_PIN_RESET);//设置上电电平为低/*Configure GPIO pins : PAPin PAPin*/GPIO_InitStruct.Pin= DONG_OUT_1_Pin|DONG_OUT_2_Pin;//两个GPIO_PINGP...
可以通过HAL库获取GPIO引脚的输入状态。以下是一个读取按钮状态的例子: ```c //读取按钮状态 if(HAL_GPIO_ReadPin(Button_GPIO_PORT,Button_PIN)==GPIO_PIN_SET){ //按钮被按下 }else{ //按钮未被按下 } ``` 04中断控制 通过HAL库可以方便地配置GPIO中断,并实现相应的中断处理函数。以下是一个简单的中...
使用HAL库的优点在于不用手动添加初始化的代码了,CubeMX会根据软件设置自动生成。 自动生成的HAL库GPIO初始化代码: 复制代码 复制代码 static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /GPIO Ports Clock Enable/ HAL_RCC_GPIOH_CLK_ENABLE();HAL_RCC_GPIOD_CLK_ENABLE(); ...
HAL库GPIO输入模式操作详解与结构介绍 接下来,我们生成代码即可 打开工程之后,我们发现上一节配置的输出IO和这一节的输入IO是放在一起的,cubemx生成代码的规则是把同一类外设统一放在相应的模块初始化代码中,宏定义统一放在main.h中如果能够接受这个布局的话是没有问题的,如果不能还是比较麻烦的 ...
在单片机的世界中,作为一个与外部沟通最重要的外设,显然是GPIO。 本文以stm32F1xx系列为重点,带你深入浅出地了解GPIO外设及其HAL库使用。 在stm32中一个完整的GPIO配置步骤应是如下 1.使能时钟 2.设置工作模式 …
但如果某一个IO口启用了复用功能(不论输入还是输出),虽然HAL库提供的GPIO读函数依然有效,但禁止使用HAL库提供的写函数修改IO口电平状态,同时也不建议读取IO口电平状态。 GPIO的结构: GPIO的结构 GPIO的结构大同小异。就输入电压而言,可以分为两类,一类是支持5V容忍度的IO,一类是不支持5V容忍度的IO。所谓的5V...
在使用HAL库进行GPIO控制前,需要对GPIO进行初始化配置。以下是一个典型的GPIO初始化的代码片段: ```c GPIO_InitTypeDefGPIO_InitStruct={0}; //GPIO时钟使能 __HAL_RCC_GPIOC_CLK_ENABLE(); //GPIO配置 GPIO_InitStruct.Pin=LED_PIN; GPIO_InitStruct.Mode=GP...
但如果某一个IO口启用了复用功能(不论输入还是输出),虽然HAL库提供的GPIO读函数依然有效,但禁止使用HAL库提供的写函数修改IO口电平状态,同时也不建议读取IO口电平状态。 GPIO的结构: GPIO的结构 GPIO的结构大同小异。就输入电压而言,可以分为两类,一类是支持5V容忍度的IO,一类是不支持5V容忍度的IO。所谓的5V...