基础知识:
stm32芯片,有7组端口,每组端口最多拥有16个引脚。stm32的每个端口都可以自由编程,但I/O端口寄存器必须按32位字节访问。
1.每个端口都由7个寄存器来控制
2.stm32的I/O端口可以由软件配置成8种模式(输出4种,输入4种)
输出 | 输入 |
推挽输出 | 模拟输入 |
开漏输出 | 浮空输入 |
推挽式复用功能 | 下拉输入 |
开漏式复用功能 | 上拉输入 |
目录
在使用STM32中,可以使用STM32CubeMx软件对stm32芯片进行初始化配置
需要掌握HAL库中的电平输出、电平输入和电平反转函数
电平输出HAL库函数
HAL_GPIO_WritePi(GPIO_TyPeDef* GPIOx,uint16_T GPIO_PIN,GPIO_PINState Pinstate);
/*
GPIOx:目标引脚号的端口号
GPIO_PIN:目标引脚的引脚号
Pinstate:(高电平:GPIO_PIN_SET) ;(低电平:GPIO_PIN_RESET)
*/
电平输入HAL库函数
HAL_GPIO_ReadPin(GPIO_TyPeDef* GPIOx,uint16_T GPIO_PIN);
/*
GPIOx:目标引脚号的端口号
GPIO_PIN:目标引脚的引脚号
*/
电平反转HAL库函数
HAL_GPIO_TogglePin(GPIO_TyPeDef* GPIOx,uint16_T GPIO_PIN);
/*
GPIOx:目标引脚号的端口号
GPIO_PIN:目标引脚的引脚号
*/
按键开发的基础
基础知识:
按键信号识别:一端通过电阻上拉到高电平,另一端则为低电平,在没有按键按下时,输入引脚为高电平,反之为低电平。通过反复的读取按键引脚的电平信号,来判断是否有按键的触发
eg:判断按键(PB3)是否按下
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_3)==GPIO_PIN_RESET){
HAL_Delay(200);//延迟,去抖动
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_3)==GPIO_PIN_RESET){
//写入按键按下的要执行的函数
}
}