野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20777|回复: 12

STM32 GPIO输入问题

[复制链接]
发表于 2014-6-15 21:52:20 | 显示全部楼层 |阅读模式
我选用的芯片是STM32 F103CBT6。

描述:我用GPIO PB3读取一个开关信号,3.3V上拉。动作电位时开关信号为低,没有动作时电位是高。

但是,我debug的时候,发现GPIO的默认输入是低电平,这个时候并没有开关动作。如图1。图中IDR3就是PB3的输入寄存器,它的值为0。另外图中IDR4-7的值都是对的,我把他们做了同样的设置,而且没有开关动作。
1.JPG

下面是GPIO 设置,输入设置为内部上拉,浮空输入也一样。
2.JPG
在测试的时候,发现不关我怎样设置开关,IDR3的值始终未0。不过同样的方法,用PB4-7都没问题。PB3和PB4-7的外围设置一样,都用10K上拉于3.3V,并连接开关信号。
大家有什么想法吗?求教!
回复

使用道具 举报

发表于 2014-6-16 09:25:31 | 显示全部楼层
你看的这个值是不是程序还没有运行到给引脚配置模式的这句话?你全速运行之后再看看这个寄存器的值
回复 支持 反对

使用道具 举报

发表于 2014-6-16 09:51:32 | 显示全部楼层
看看板子有没有复用到这个引脚
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-16 12:58:35 | 显示全部楼层
♂荻夜 发表于 2014-6-16 09:25
你看的这个值是不是程序还没有运行到给引脚配置模式的这句话?你全速运行之后再看看这个寄存器的值

已经运行到了。读到的值都是0。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-16 13:06:23 | 显示全部楼层
子车梨祎 发表于 2014-6-16 09:51
看看板子有没有复用到这个引脚

应该没有。程序中我使用了PA9和PA10作USART,使用了PA13和PA14作SWD。还是用了TIM2定时器,但是定时器的功能只是定时,没有输入和输出。
1111.JPG
我用万用表测量对应的管脚,明明是3.3V,不知道MCU读取的却是低电平,很奇怪啊。
回复 支持 反对

使用道具 举报

发表于 2014-6-16 13:32:39 | 显示全部楼层
txmsszd 发表于 2014-6-16 12:58
已经运行到了。读到的值都是0。

你在程序里有没有读取引脚电平的语句?运行读取这个语句之后再去看寄存器的值。
回复 支持 反对

使用道具 举报

发表于 2014-6-16 15:16:19 | 显示全部楼层
贴多点代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-16 20:30:50 | 显示全部楼层
♂荻夜 发表于 2014-6-16 13:32
你在程序里有没有读取引脚电平的语句?运行读取这个语句之后再去看寄存器的值。

2.JPG
有运行读引脚电平的语句。
上图,其中SENSORX 宏定义为#define SENSORX GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3)
实际测试的时候,发现程序永远进入else if 程序块,这是不应该的,因为这个时候,没有开关动作。他应该读到的是高电平。


谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-16 20:32:18 | 显示全部楼层
三流电工 发表于 2014-6-16 15:16
贴多点代码

上面有我截取的代码。程序永远进入else if块。说明他读到的电平时钟是低。
回复 支持 反对

使用道具 举报

发表于 2014-6-17 09:00:49 | 显示全部楼层
txmsszd 发表于 2014-6-16 20:32
上面有我截取的代码。程序永远进入else if块。说明他读到的电平时钟是低。

你先用示波器测一下那个引脚是不是高电平
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-17 11:06:59 | 显示全部楼层
相津童 发表于 2014-6-17 09:00
你先用示波器测一下那个引脚是不是高电平

是。而且有开关动作时,变为低电平。
回复 支持 反对

使用道具 举报

发表于 2014-6-17 13:32:49 | 显示全部楼层
txmsszd 发表于 2014-6-16 20:30
有运行读引脚电平的语句。
上图,其中SENSORX 宏定义为#define SENSORX GPIO_ReadInputDataBit(GPIOB, ...

查了一下,PB3是JTDO,你确定关了JTAG?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-17 21:43:25 | 显示全部楼层
三流电工 发表于 2014-6-17 13:32
查了一下,PB3是JTDO,你确定关了JTAG?

恩,就是这个问题。已经解决。谢谢楼上诸君。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 19:04 , Processed in 0.031690 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表