作者gpc92sau (fire in the hell)
看板Electronics
標題[問題] 新手stm32f4
時間Mon Jun 10 20:20:00 2024
各位好
目前用stm32f407vet6的晶片
PA6 PA7 是 LED1 LED2 接vdd
PA0/wk_up 是 kup按鍵 接3.3v
PE4 PE3 是K0 K1 按鍵 接地
程式如下
while (1)
{
/* USER CODE END WHILE */
if(HAL_GPIO_ReadPin(kup_GPIO_Port,kup_Pin)==GPIO_PIN_RESET)
{ ()SET
HAL_GPIO_TogglePin(GPIOA,LED1_Pin);
HAL_Delay(1000);
HAL_GPIO_TogglePin(GPIOA,LED2_Pin);
HAL_Delay(1000);
}
else if(HAL_GPIO_ReadPin(k0_GPIO_Port,k0_Pin)==GPIO_PIN_RESET)
{
HAL_GPIO_WritePin(GPIOA,LED1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,LED2_Pin,GPIO_PIN_SET);
}
else if(HAL_GPIO_ReadPin(k1_GPIO_Port,k1_Pin)==GPIO_PIN_RESET)
{
HAL_GPIO_WritePin(GPIOA,LED2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,LED1_Pin,GPIO_PIN_SET);
}
/* USER CODE BEGIN 3 */
}
KUP =GPIO_PIN_SET 其他兩個按鍵按了還是跑第一個
KUP =GPIO_PINRESET 就變跑else if k0的選項 按其他鍵也沒改變
想請問是哪裡出錯了
還是cubemx 的pull up pull down 設定有問題?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.239.19.208 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1718022002.A.89B.html
1F:→ god145145: 為什麼用Delay 06/10 21:18
2F:→ gpc92sau: 閃爍 06/10 21:43
3F:→ gpc92sau: 另兩個是固定亮 06/10 21:44
4F:→ yuleen123: 感覺是線路接錯 06/11 20:06
5F:推 Archer55b6: 都有開pullup? 06/12 08:50
6F:→ gpc92sau: 有看原理圖 應該是沒接錯 06/12 20:34
7F:→ gpc92sau: kup-> pull up. k0 k1->pull down 06/12 20:35
8F:→ HiJimmy: 多了一個()set?? 複製的問題?? 06/12 22:12
9F:→ HiJimmy: 然後前面是kup 後面是k0 k1 這看起來很怪內,再者建議寫 06/12 22:15
10F:→ HiJimmy: 個掃描按鍵副程式,現在空間都很夠,用空間換速度,多開 06/12 22:15
11F:→ HiJimmy: 關計時器中斷就行 06/12 22:15
12F:→ HiJimmy: 因為我記得hal read pin,原本前面應該是放portx,後面 06/12 22:17
13F:→ HiJimmy: 放port pin 06/12 22:17
14F:→ Archer55b6: 沒schematic隔空抓藥很難,看環境能不能有單步執行下 06/13 13:45
15F:→ Archer55b6: 去debug吧? 06/13 13:45
16F:→ gpc92sau: ()set 是reset換set後就執行elseif的選項了 06/14 07:13