STM32CubeMX GPIO的使用


一、GPIO口配置
1、GPIO的主要配置有輸入和輸出
① 作為普通GPIO輸入:
根據需要配置該引腳為浮空輸入、帶弱上拉輸入或帶弱下拉輸入,同時不要使能該引腳對應的所有復用功能模塊。
② 作為普通GPIO輸出:
根據需要配置該引腳為推挽輸出或開漏輸出,同時不要使能該引腳對應的所有復用功能模塊。
③ 作為普通模擬輸入:
配置該引腳為模擬輸入模式,同時不要使能該引腳對應的所有復用功能模塊。
④ 作為內置外設的輸入:
根據需要配置該引腳為浮空輸入、帶弱上拉輸入或帶弱下拉輸入,同時使能該引腳對應的某個復用功能模塊。
⑤ 作為內置外設的輸出:
根據需要配置該引腳為復用推挽輸出或復用開漏輸出,同時使能該引腳對應的所有復用功能模塊。

以流水彩燈為例子對GPIO進行初始化

使用STM32CubeMX會自動生成初始化代碼

GPIO寄存器詳解
參見《STM32F10X數據手冊》

GPIO基本設置
#define GPIO_MODE_INPUT ((uint32_t)0x00000000) /*!< GPIO輸入模式 */
#define GPIO_MODE_OUTPUT_PP ((uint32_t)0x00000001) /*!< GPIO推挽輸出 */
#define GPIO_MODE_OUTPUT_OD ((uint32_t)0x00000011) /*!< GPIO開漏輸出 */
#define GPIO_MODE_AF_PP ((uint32_t)0x00000002) /*!< GPIO推挽復用 */
#define GPIO_MODE_AF_OD ((uint32_t)0x00000012) /*!< GPIO開漏復用 */
#define GPIO_MODE_AF_INPUT GPIO_MODE_INPUT /*!< */

#define GPIO_MODE_ANALOG ((uint32_t)0x00000003) /*!< 模擬輸入 */

GPIO輸入輸出速度選擇:
#define GPIO_SPEED_FREQ_LOW (GPIO_CRL_MODE0_1) /*!< Low speed */
#define GPIO_SPEED_FREQ_MEDIUM (GPIO_CRL_MODE0_0) /*!< Medium speed */
#define GPIO_SPEED_FREQ_HIGH (GPIO_CRL_MODE0) /*!< High speed */
GPIO輸入輸出狀態選擇:
typedef enum
{
GPIO_PIN_RESET = 0, //低電平
GPIO_PIN_SET //高電平
}GPIO_PinState;
GPIO初始化:
typedef struct
{
uint32_t Pin;

uint32_t Mode;

uint32_t Pull;

uint32_t Speed;
}GPIO_InitTypeDef;

三、主要庫函數有:

void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

 

 

 


免責聲明!

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



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