基于普中的STM32开发板原理图:
void LED_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct; //定义GPIO配置的结构体
__HAL_RCC_GPIOC_CLK_ENABLE(); //使能GPIOC的时钟
HAL_GPIO_WritePin(GPIOC, LED, GPIO_PIN_SET); //像GPIOC的LED引脚写数据
GPIO_InitStruct.Pin = LED; //选中的GPIO的引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //选择输出方式为推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL; //没有上拉或下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; //选择低速传输
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); //将结构体的配置给GPIOC
}
GPIO结构体的成员
typedef struct
{
uint32_t Pin; //引脚
uint32_t Mode; //模式
uint32_t Pull; //上拉或者下拉
uint32_t Speed; //输出速度
} GPIO_InitTypeDef;
Pin的所有可选项:
GPIO_PIN_0
GPIO_PIN_1
GPIO_PIN_2
GPIO_PIN_3
GPIO_PIN_4
GPIO_PIN_5
GPIO_PIN_6
GPIO_PIN_7
GPIO_PIN_8
GPIO_PIN_9
GPIO_PIN_10
GPIO_PIN_11
GPIO_PIN_12
GPIO_PIN_13
GPIO_PIN_14
GPIO_PIN_15
GPIO_PIN_All
Mode的所有可选项:
GPIO_MODE_INPUT //浮空输入
GPIO_MODE_OUTPUT_PP //推挽输出
GPIO_MODE_OUTPUT_OD //开漏输出
GPIO_MODE_AF_PP //复用推完输出
GPIO_MODE_AF_OD //复用开漏输出
GPIO_MODE_AF_INPUT //与GPIO_MODE_INPUT相同
GPIO_MODE_ANALOG //模拟输入
GPIO_MODE_IT_RISING //具有上升边缘触发检测的外部中断模式
GPIO_MODE_IT_FALLING //具有下降边缘触发检测的外部中断模式
GPIO_MODE_IT_RISING_FALLING //具有上升/下降边缘触发检测的外部中断模式
GPIO_MODE_EVT_RISING //具有上升边缘触发检测的外部事件模式
GPIO_MODE_EVT_FALLING //具有下降边缘触发检测的外部事件模式
GPIO_MODE_EVT_RISING_FALLING //具有上升/下降边缘触发检测的外部事件模式
中断与事件的理解:比如一老师在教室里给学生们上课。课堂上的学生可能做出各种行为动作,比方做笔记、打哈气、翻书包、讲小话等, 我们把这些行为统称为事件,其中有些行为老师往往只是视而不见,继续他的上课;而有些行为可能导致老师的上课中止, 比方讲小话,并对学生的相关行为予以警告、批评或纠正等,然后继续上课。我们把老师因为学生的某些行为而中止授课, 并产生后续动作,之后接着上课的这个过程理解为中断或中断响应。我们把可能导致老师上课中断的学生行为理解为中断事件。
https://blog.csdn.net/tanyjin/article/details/53359883
Pull的所有可选项:
GPIO_NOPULL //不上拉也不下拉模式
GPIO_PULLUP //上拉模式
GPIO_PULLDOWN //下拉模式
Speed的所有可选项:
GPIO_SPEED_FREQ_LOW //低速
GPIO_SPEED_FREQ_MEDIUM //中速
GPIO_SPEED_FREQ_HIGH //高速
HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); //将我们在1函数初始化之后的引脚恢复成默认的状态, 即各个寄存器复位时的值。
HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//读取GPIO的状态,输出为GPIO_PIN_SET(高电平)或者GPIO_PIN_RESET(低电平)
HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//将管脚值锁定,当管脚电平变化时保持锁定时的值
HAL_GPIO_TogglePin(GPIOx,GPIO_Pin);//电平翻转函数(将高电平翻转为低电平,将低电平翻转为高电平)