STM32F469I GPIO 基本的按鈕控制
按鈕初始化
void User_LED_Init()
{
uint16_t pin = GPIO_PIN_4;
GPIO_TypeDef* port = GPIOB;
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(port, &GPIO_InitStruct);
HAL_GPIO_WritePin(port, pin, GPIO_PIN_RESET);
}
與前一章節一樣需要設置 Set port and pin 內的參數三行,這裡設置的事 PB8 也就是 Arduino腳位的 D15 的腳位置。
偵測按鈕
這個直接在放主程式main的 while 回圈內就可以
D15放空或接5V會讓D2 D3亮,D15接地則滅。
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8) == PB_RESET)
{
HAL_GPIO_WritePin(ArD2_GPIO_PORT, ArD2_PIN, GPIO_PIN_SET);
HAL_GPIO_WritePin(ArD3_GPIO_PORT, ArD3_PIN, GPIO_PIN_SET);
}
else if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8) == PB_SET)
{
HAL_GPIO_WritePin(ArD2_GPIO_PORT, ArD2_PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(ArD3_GPIO_PORT, ArD3_PIN, GPIO_PIN_RESET);
}