STM32F469I GPIO 基本的按鈕控制
腳位的部分或LED控制可以參考上一篇
https://charlottehong.blogspot.tw/2017/07/stm32f469i-gpio.html
https://charlottehong.blogspot.tw/2017/07/stm32f469i-gpio.html
按鈕初始化
/* UserDefine functions ------------------------------------------------------*/
void User_LED_Init()
{
// 設定角位(3行都要改)
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);
}
沒有留言:
張貼留言