作者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/cn.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