[問題] 新手stm32f4

看板Electronics作者 (fire in the hell)時間6月前 (2024/06/10 20:20), 編輯推噓1(1015)
留言16則, 5人參與, 6月前最新討論串1/1
各位好 目前用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://www.ptt.cc/bbs/Electronics/M.1718022002.A.89B.html

06/10 21:18, 6月前 , 1F
為什麼用Delay
06/10 21:18, 1F

06/10 21:43, 6月前 , 2F
閃爍
06/10 21:43, 2F

06/10 21:44, 6月前 , 3F
另兩個是固定亮
06/10 21:44, 3F

06/11 20:06, 6月前 , 4F
感覺是線路接錯
06/11 20:06, 4F

06/12 08:50, 6月前 , 5F
都有開pullup?
06/12 08:50, 5F

06/12 20:34, 6月前 , 6F
有看原理圖 應該是沒接錯
06/12 20:34, 6F

06/12 20:35, 6月前 , 7F
kup-> pull up. k0 k1->pull down
06/12 20:35, 7F

06/12 22:12, 6月前 , 8F
多了一個()set?? 複製的問題??
06/12 22:12, 8F

06/12 22:15, 6月前 , 9F
然後前面是kup 後面是k0 k1 這看起來很怪內,再者建議寫
06/12 22:15, 9F

06/12 22:15, 6月前 , 10F
個掃描按鍵副程式,現在空間都很夠,用空間換速度,多開
06/12 22:15, 10F

06/12 22:15, 6月前 , 11F
關計時器中斷就行
06/12 22:15, 11F

06/12 22:17, 6月前 , 12F
因為我記得hal read pin,原本前面應該是放portx,後面
06/12 22:17, 12F

06/12 22:17, 6月前 , 13F
放port pin
06/12 22:17, 13F

06/13 13:45, 6月前 , 14F
沒schematic隔空抓藥很難,看環境能不能有單步執行下
06/13 13:45, 14F

06/13 13:45, 6月前 , 15F
去debug吧?
06/13 13:45, 15F

06/14 07:13, 6月前 , 16F
()set 是reset換set後就執行elseif的選項了
06/14 07:13, 16F
文章代碼(AID): #1cPkzoYR (Electronics)