設備型號: 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(針腳所在分區,想查看的針腳所在分區)
已使能針腳,在打鈎時,表示高電平,未打鈎時表示低電平