OpenEdv-开源电子网

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

十万火急 STM32F103VET6引脚上电瞬间输出一个低电平 跪求原子哥解决

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-10-14
在线时间
6 小时
发表于 2016-5-26 09:33:51 | 显示全部楼层 |阅读模式
1金钱
STM32F103VET6引脚驱动光耦,光耦驱动继电器,引脚初始配置为高电平,但是在板子上电的一瞬间会输出一个低电平造成光耦导通继电器一瞬间吸合断开。
参照香主的做法,先配置引脚输出电平,再配置引脚输出模式,还是存在同样的问题。
请高手告知如何解决!!
GPIO初始化代码如下
  GPIO_SetBits(GPIOA,GPIO_Pin_8);                          //³õʼ»¯¶Ë¿ÚÊä³ö1
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    //ʹÄÜGPIO¶ÔÓ¦GPIOµÄClockʱÖÓ
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;     //ÉèÖÃÏàÓ¦µÄ¶Ë¿Ú
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //ÉèÖÃΪ ÍÆÍì(Push-Pull)Êä³ö                 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;   //×î´óÊä³öËÙ¶ÈΪ10MHz
  GPIO_Init(GPIOA, &GPIO_InitStructure);                  //µ÷ÓÃGPIO³õʼ»¯º¯Êý  

20160526093215.png

最佳答案

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

问题已经解决 将三极管基级电容增加为10uF 相当于添加一个上电延时下图为添加不同电容 光耦两端信号采集图 图一为添加一个0.1uF电容图二为添加10uF的电容 从图中可以看出光耦输出脚状态要比输入状态提前20ms
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-10-14
在线时间
6 小时
 楼主| 发表于 2016-5-26 09:33:52 | 显示全部楼层
问题已经解决  将三极管基级电容增加为10uF  相当于添加一个上电延时下图为添加不同电容  光耦两端信号采集图 图一为添加一个0.1uF电容图二为添加10uF的电容
从图中可以看出光耦输出脚状态要比输入状态提前20ms



IMG_1188.JPG
IMG_1189.JPG
IMG_1190.JPG
IMG_1191.JPG
IMG_1192.JPG
回复

使用道具 举报

13

主题

612

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1928
金钱
1928
注册时间
2014-10-6
在线时间
625 小时
发表于 2016-5-26 09:44:20 | 显示全部楼层
你在GPIO时钟打开之前的操作GPIO有意义吗?把GPIO_SetBits(GPIOA,GPIO_Pin_8); 放在GPIO_Init(GPIOA, &GPIO_InitStructure); 后面,再把三极管的B极那个电容换成10K电阻试试看!
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-10-14
在线时间
6 小时
 楼主| 发表于 2016-5-26 09:53:22 | 显示全部楼层
烟酒不沾 发表于 2016-5-26 09:44
你在GPIO时钟打开之前的操作GPIO有意义吗?把GPIO_SetBits(GPIOA,GPIO_Pin_8); 放在GPIO_Init(GPIOA,  ...

十分感谢您的回答  把GPIO_SetBits(GPIOA,GPIO_Pin_8); 放在GPIO_Init(GPIOA, &GPIO_InitStructure); 后面 仍然没有解决问题,上电一瞬间的低电平依然存在信号
回复

使用道具 举报

7

主题

185

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2724
金钱
2724
注册时间
2015-12-27
在线时间
468 小时
发表于 2016-5-26 09:54:46 | 显示全部楼层
你看下datasheet这个引脚在上电时默认引脚电平是高还是低?
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-10-14
在线时间
6 小时
 楼主| 发表于 2016-5-26 09:58:26 | 显示全部楼层
钩月黄昏 发表于 2016-5-26 09:54
你看下datasheet这个引脚在上电时默认引脚电平是高还是低?

上电时默认为浮空输入状态   
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3759
金钱
3759
注册时间
2015-4-26
在线时间
761 小时
发表于 2016-5-26 09:59:15 | 显示全部楼层
硬件加上拉,软件改开漏,就没有问题了
我有故事,你有酒吗
回复

使用道具 举报

7

主题

185

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2724
金钱
2724
注册时间
2015-12-27
在线时间
468 小时
发表于 2016-5-26 10:00:00 | 显示全部楼层
levon 发表于 2016-5-26 09:53
十分感谢您的回答  把GPIO_SetBits(GPIOA,GPIO_Pin_8); 放在GPIO_Init(GPIOA, &GPIO_InitStructure); 后 ...

把那个电容换成电阻也没用?
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-10-14
在线时间
6 小时
 楼主| 发表于 2016-5-26 10:01:31 | 显示全部楼层
钩月黄昏 发表于 2016-5-26 10:00
把那个电容换成电阻也没用?

没用  这个信号是前端STM32引脚过来的
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-26 10:01:47 | 显示全部楼层
烟酒不沾 发表于 2016-5-26 09:44
你在GPIO时钟打开之前的操作GPIO有意义吗?把GPIO_SetBits(GPIOA,GPIO_Pin_8); 放在GPIO_Init(GPIOA,  ...

有意义,事前启用它在RCC的时钟。

GPIO_Init是用来设置引脚输入输出模式的
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-26 10:09:24 | 显示全部楼层
将DO_OUT下拉试试,再把基极电阻改小一点儿

rr.png


还不行的话再把下拉电阻改到4.7k
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-10-14
在线时间
6 小时
 楼主| 发表于 2016-5-26 10:10:36 | 显示全部楼层
来俩不甜的 发表于 2016-5-26 09:59
硬件加上拉,软件改开漏,就没有问题了

改为开漏输出之后还是不行  
回复

使用道具 举报

29

主题

487

帖子

0

精华

高级会员

Rank: 4

积分
804
金钱
804
注册时间
2016-4-7
在线时间
123 小时
发表于 2016-5-26 10:14:16 | 显示全部楼层
你是用灌电流的吧,吧电路修改成拉电流看看,
回复

使用道具 举报

16

主题

203

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1832
金钱
1832
注册时间
2015-7-5
在线时间
473 小时
发表于 2016-5-26 10:14:59 | 显示全部楼层
上电过程太慢了,以致继电器都有时间反应
回复

使用道具 举报

15

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2017-2-21
在线时间
159 小时
发表于 2017-6-15 23:07:01 | 显示全部楼层
我也遇到一样的问题了。。就是单片机上电的一瞬间,继电器闭合然后断开,,但是初始化的的时候设置引脚的高低电平都不能消除此反应,配置为高电平的时候继电器的闭合断开的时间增加了,我还是没有看懂,,为什么集电极加个大一点的电容就可以解决这个问题,继电器的驱动和你的硬件是一样的,,难道是硬件设计的不对吗
回复

使用道具 举报

29

主题

312

帖子

0

精华

高级会员

Rank: 4

积分
747
金钱
747
注册时间
2016-5-21
在线时间
199 小时
发表于 2017-6-16 08:48:47 | 显示全部楼层
usb123 发表于 2017-6-15 23:07
我也遇到一样的问题了。。就是单片机上电的一瞬间,继电器闭合然后断开,,但是初始化的的时候设置引脚的高 ...

以前看过一个资料,要控制继电器的线包供电,开机时继电器是不供电的,等单片机上电复位好里的时候再给继电器供电,防止单片机引脚在上电复位过程中电平问题
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2019-4-29
在线时间
5 小时
发表于 2019-8-30 13:28:53 | 显示全部楼层
我的输出为高电平使用的为C8T6,引脚用的为PA6、7,不知道程序可以解决不呢?哪位大神指教一下
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-3-21
在线时间
2 小时
发表于 2024-4-28 21:47:53 | 显示全部楼层
感谢楼主,我也遇到了同样的问题,继电器偶发上电闭合还不会断开,增加电容吸收波动后解决了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-5-15 10:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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