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(針腳所在分區,想查看的針腳所在分區)

 

 

 

 已使能針腳,在打鈎時,表示高電平,未打鈎時表示低電平

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM