STM32 cubeMX + keil5 HAL库 GPIO高低点平控制
设备型号: STM32F103C6F6
每个GPIO针脚都所属一个分区(GPIOA、GPIOB、GPIOC、GPIOD),每个分区下有16个针脚,所以第二个参数是0-15
上图是cubeMX配置界面, 例如PC13(P=针脚,C=GPIOC,3=位置3)针脚,属于GPIOC区,位置13(上图核心板自带LED),通过控制高低点平,控制LED灯开关。再比如PD0,属于GPIOD区, 0位置
核心板自带LED标记:
PWR: 电源指示
PC13:板载LED针脚位置,GPIOC区,13位置
HAL 库高低点平相关API
GPIO_PinState:
typedef enum
{
GPIO_PIN_RESET = 0u,//低电平
GPIO_PIN_SET//高电平
} GPIO_PinState;
读取指定针脚高低点平:
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
参数一: GPIO所在分区,一般分为GPIOA、GPIOB、GPIOC、GPIOD等
参数二: 针脚位置 0-15
返回 GPIO_PinState 枚举: GPIO_PIN_RESET 低电平, GPIO_PIN_SET 高电平
设置指定针脚高低点平:
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
参数一: GPIO所在分区
参数二: 针脚位置 0-15
参数三: 置高/低点平(GPIO_PIN_RESET / GPIO_PIN_SET)
例如,设置PA12为高电平,前提需要在cubeMX中配置PA12 GPIO Output,或代码中配置 GPIO Output:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET);
针脚位置,要使用cubeMX生成代码时,在stm32f1xx_hal_gpio.h中声明的针脚定义:
#define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */ #define GPIO_PIN_1 ((uint16_t)0x0002) /* Pin 1 selected */ #define GPIO_PIN_2 ((uint16_t)0x0004) /* Pin 2 selected */ #define GPIO_PIN_3 ((uint16_t)0x0008) /* Pin 3 selected */ #define GPIO_PIN_4 ((uint16_t)0x0010) /* Pin 4 selected */ #define GPIO_PIN_5 ((uint16_t)0x0020) /* Pin 5 selected */ #define GPIO_PIN_6 ((uint16_t)0x0040) /* Pin 6 selected */ #define GPIO_PIN_7 ((uint16_t)0x0080) /* Pin 7 selected */ #define GPIO_PIN_8 ((uint16_t)0x0100) /* Pin 8 selected */ #define GPIO_PIN_9 ((uint16_t)0x0200) /* Pin 9 selected */ #define GPIO_PIN_10 ((uint16_t)0x0400) /* Pin 10 selected */ #define GPIO_PIN_11 ((uint16_t)0x0800) /* Pin 11 selected */ #define GPIO_PIN_12 ((uint16_t)0x1000) /* Pin 12 selected */ #define GPIO_PIN_13 ((uint16_t)0x2000) /* Pin 13 selected */ #define GPIO_PIN_14 ((uint16_t)0x4000) /* Pin 14 selected */ #define GPIO_PIN_15 ((uint16_t)0x8000) /* Pin 15 selected */ #define GPIO_PIN_All ((uint16_t)0xFFFF) /* All pins selected */
kiel5 仿真中,查看高低点平:
设置Debug参数:
设置CPU 和Driver 的Dialog DLL, Dialog DLL分别为: DARMSTM.DLL,TARMSTM.DLL,参数为: -pSTM32F103RC
2. 开始调试:
Debug -> Start/Stop Debug Session(Ctrl + F5)
跳过断点执行,具体Debug 操作请自行百度。
查看针脚高低点平状态:
一定要按照上图配置好Dialog DLL,和参数,否则没有General Purpose I/O菜单!!!
Peripherals -> General Purpose I/O -> GPIOC(针脚所在分区,想查看的针脚所在分区)
已使能针脚,在打钩时,表示高电平,未打钩时表示低电平