STM32HAL库学习(二)CubeMx按键

首先是找到电路图,按键是高电平按下还是低电平按下

GPIO八种模式


https://blog.csdn.net/hailin0716/article/details/24333951

上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平。而在信号输入为低电平是输入端的电平应该也为低电平。
按键是按下时是高电平时,那无信号输入时要保持低电平,下拉输入

枚举KEYState_TypeDef 定义按键的两种状态

typedef enum{
KEY0_UP,
KEY0_DOWN,
KEY1_UP,
KEY1_DOWN

}KEYState_typedef;

函数有个 KEYState_TypeDef 类型的返回值

KEYState_typedef KEY0_GetState(void)
{
if (HAL_GPIO_ReadPin(KEY0_GPIO_Port,KEY0_Pin)==KEY0_DOWN_LEVEL )
{
HAL_Delay(10);
if (HAL_GPIO_ReadPin (KEY0_GPIO_Port ,KEY0_Pin )==KEY0_DOWN_LEVEL )
{
while(HAL_GPIO_ReadPin (KEY0_GPIO_Port ,KEY0_Pin )== KEY0_DOWN_LEVEL );
return KEY0_DOWN;
}

return KEY0_UP;

}

读取,写入GPIO电平

HAL_GPIO_ReadPin();

HAL_GPIO_WritePin();

将自己的代码放入一个文件夹,在下一次复制修改CubeMx从新生成code时,不会被重置。

将各个外设的驱动单独写.c .h文件,自己写一个system程序,作为主程序,每次重置后就在main中放入my_system的头文件,init和主函数就行,在魔术棒中编译路径中加入自己的文件夹。


猜你喜欢

转载自blog.csdn.net/weixin_37954144/article/details/80992215