OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4744|回复: 18

STM32F103 PB4无法检测到低电平

[复制链接]

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
发表于 2018-8-14 20:02:45 | 显示全部楼层 |阅读模式
3金钱
单片机型号:STM32F103T8U6
我现在用PB4配置为浮空输入,接AD7190的数字输出引脚,作为ADC采样的输入引脚。用示波器检测此引脚有高低电平,并且数据正确,但是我在程序里做低电平判断却检测不到,这是什么原因。我已经将PB4配置为普通I/O:
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);          //ĬèÏÎaJTAGòy½Å£¬DèòaéèÖÃÎaÆÕí¨I/O
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);       


做判断的如下:
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4) == 0)
{
   LED();
}


不会进入LED()的执行,也就是检测不到低电平。但是示波器测出来是有低电平出现的

最佳答案

查看完整内容[请看2#楼]

经过尝试这个问题解决了,将AD7190的CS脚拉低才行。 在AD7190手册上有下面这么一句话,转换成功后DOUT脚会自动拉低,但是前提是CS脚先拉低
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-14 20:02:46 | 显示全部楼层
本帖最后由 午夜狼嚎 于 2018-8-16 10:17 编辑

经过尝试这个问题解决了,将AD7190的CS脚拉低才行。
在AD7190手册上有下面这么一句话,转换成功后DOUT脚会自动拉低,但是前提是CS脚先拉低 QQ截图20180816101324.png
C:\Users\独狼ZR\Desktop\QQ截图20180816101324.png

回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-8-14 20:18:17 | 显示全部楼层
看代码是没问题。没这种板子。帮顶!!
回复

使用道具 举报

7

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
385
金钱
385
注册时间
2018-7-19
在线时间
126 小时
发表于 2018-8-15 08:05:44 | 显示全部楼层
配置成普通IO,工作模式也要配置
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-15 08:55:23 | 显示全部楼层
peng1554 发表于 2018-8-14 20:18
看代码是没问题。没这种板子。帮顶!!

谢谢!
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-15 08:55:46 | 显示全部楼层
坐看风 发表于 2018-8-15 08:05
配置成普通IO,工作模式也要配置

配置了的,浮空输入
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2018-8-15 09:44:14 | 显示全部楼层
//位带操作,实现51类似的GPIO控制功能
//具体实现思想,参考<<CM3权威指南>>第五章(87页~92页).
//IO口操作宏定义
#define BITBAND(addr, bitnum)    ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr)           *((volatile unsigned long  *)(addr))
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))
#define BIT_ADM(addr,bitnum)     MEM_ADDR(BITBAND(((u32)&(addr)),(bitnum)))  


RCC->APB2ENR |= 1<< 0;                       //开启辅助功能时钟  
BIT_ADM(AFIO->MAPR,24) = 1;               //取消JNTRST信号,使能PB4做普通IO接口  
回复

使用道具 举报

7

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
385
金钱
385
注册时间
2018-7-19
在线时间
126 小时
发表于 2018-8-15 09:47:57 | 显示全部楼层
午夜狼嚎 发表于 2018-8-15 08:55
配置了的,浮空输入

作为示波器显示的应该是电压信号吧,你试试当做普通IO口配置并手动把引脚置高低电平试试
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-15 10:09:58 | 显示全部楼层
likunxue 发表于 2018-8-15 09:44
//位带操作,实现51类似的GPIO控制功能
//具体实现思想,参考第五章(87页~92页).
//IO口操作宏定义

这个也试过了,一开始取消JNTRST信号后忘开了,导致程序都下不了了,搞了好久才解开。但是这样还是不行
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-15 10:14:04 | 显示全部楼层
坐看风 发表于 2018-8-15 09:47
作为示波器显示的应该是电压信号吧,你试试当做普通IO口配置并手动把引脚置高低电平试试

试过了,手动是可以的。现在是这样,我加个适当的延时,用时序去读采到的数据,能读回来,用的就是GPIO_ReadInputData去读。但是在AD7190转换过程中,输出引脚(就是接PB4的那个)是默认高电平,当转换完成后,此引脚会被拉低,以表示数据可读,现在就是做这个判断,当检测到低电平时,去读数据,但就是检测不到。
回复

使用道具 举报

0

主题

113

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3321
金钱
3321
注册时间
2017-12-14
在线时间
406 小时
发表于 2018-8-15 10:20:06 | 显示全部楼层
设为上位输入或者下拉输入,包你可以
回复

使用道具 举报

7

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
385
金钱
385
注册时间
2018-7-19
在线时间
126 小时
发表于 2018-8-15 10:32:41 | 显示全部楼层
午夜狼嚎 发表于 2018-8-15 10:14
试过了,手动是可以的。现在是这样,我加个适当的延时,用时序去读采到的数据,能读回来,用的就是GPIO_R ...

这会不会和你设置的浮空有关,毕竟浮空输入信号是未知的
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-15 14:08:05 | 显示全部楼层
feichangkunge 发表于 2018-8-15 10:20
设为上位输入或者下拉输入,包你可以

不可以
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-15 14:08:26 | 显示全部楼层
feichangkunge 发表于 2018-8-15 10:20
设为上位输入或者下拉输入,包你可以

不可以的~
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-15 14:08:44 | 显示全部楼层
feichangkunge 发表于 2018-8-15 10:20
设为上位输入或者下拉输入,包你可以

不可以的~
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-15 14:08:54 | 显示全部楼层
feichangkunge 发表于 2018-8-15 10:20
设为上位输入或者下拉输入,包你可以

不可以的~
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-15 14:09:43 | 显示全部楼层
坐看风 发表于 2018-8-15 10:32
这会不会和你设置的浮空有关,毕竟浮空输入信号是未知的

设为上啦,下拉也不行
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2018-8-16 14:16:52 | 显示全部楼层
搞一半天不是设置出错,是你的目标芯片的问题呀!
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-16 14:27:57 | 显示全部楼层
likunxue 发表于 2018-8-16 14:16
搞一半天不是设置出错,是你的目标芯片的问题呀!

是的,对芯片配置理解不够透彻,所以出现问题
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 15:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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