本菜鸟一开始遇到了一个问题

2019-07-21 02:40发布

我刚刚开始学习STM32F407,就遇到了一个麻烦。我发现PA1作为GPIO输入特别不稳定。我先使能时钟,初始化IO口,我把其他IO口的输出作为PA1的输入,用LED来指示PA1接收到的是高电平还是低电平。。结果LED根本不受控制,乱闪。。我索性拔了导线,把PA1悬空,还是乱闪。最后我把PA1连到3.3V的VCC或GND上,LED还是有闪烁。其它的IO口暂时没发现这种现象,请问是我的设置问题吗?

以下是主程序
[mw_shl_code=c,true]#include "sys.h" #include "delay.h" #include "led.h" #include "usart.h" int main(void) { LED_Init(); delay_init(168); while(1) { if(PAin(1)) { LED0=0; delay_ms(50); } else { LED0=1; delay_ms(50); } } } [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-21 03:41
PA1受了LAN8720A的REF_CLK的影响,所以,不建议用PA1做输入引脚用。
mack13013
2楼-- · 2019-07-21 06:29
delay_ms(50)放到if()else()外面。

PAin(1)初始化了吗?

 给你个初始化参考:

RCC ->AHB1ENR |= 1 << 0;                                                                      //使能PA时钟

GPIO_Set(GPIOA, IN1, GPIO_MODE_IN, 0, 0, GPIO_PUPD_PD);                  //PA1输入,下拉
xawthunder
3楼-- · 2019-07-21 07:06
回复【2楼】mack13013:
---------------------------------
不好意思额,还是不行。。我用了您的寄存器版本的和我的库函数的,都是一样的。还有,我用万用表测了下PA1的电压,一直是1.6V,是不是不正常啊?
lycreturn
4楼-- · 2019-07-21 08:08
回复【3楼】xawthunder:
---------------------------------
应该是没初始化 A1 为输入,参考下按键输入例程,如何配置IO为输入
Theone
5楼-- · 2019-07-21 13:43
 精彩回答 2  元偷偷看……
newseason
6楼-- · 2019-07-21 17:03
 精彩回答 2  元偷偷看……

一周热门 更多>