OpenEdv-开源电子网

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

GPIO 的奇怪反映

[复制链接]

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-5-3
在线时间
16 小时
发表于 2016-5-5 10:53:26 | 显示全部楼层 |阅读模式
2金钱
对STM32F429的GPIOD 的pin_11 pin_12 操作出现奇怪现象,将GPIO_PIN_11设置为输出,GPIO_PIN_12设置为输入,
对GPIO_PIN_11进行 电平的反转操作,GPIO_PIN_11 输出波形正常,在GPIO_PIN_12上测的同频率,幅值一般的波形
波形程序如下:[mw_shl_code=applescript,true]        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
       
        GPIO_InitStruct.GPIO_Mode =  GPIO_Mode_OUT;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;       
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11;
        GPIO_Init(GPIOD, &GPIO_InitStruct);
       
        GPIO_InitStruct.GPIO_Mode =  GPIO_Mode_IN;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;       
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;
        GPIO_Init(GPIOD, &GPIO_InitStruct);
       
        while(1){
                GPIO_SetBits(GPIOD,GPIO_Pin_11);
                delay=0xFFFFFF;
                while(delay--);
                GPIO_ResetBits(GPIOD,GPIO_Pin_11);
                delay=0xFFFFFF;
                while(delay--);
        }[/mw_shl_code]这现象是为什么呢?



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-5-3
在线时间
16 小时
 楼主| 发表于 2016-5-5 10:58:07 | 显示全部楼层
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-5-3
在线时间
16 小时
 楼主| 发表于 2016-5-5 15:35:52 | 显示全部楼层
不能上传图片 不知道是为什么啊。。
回复

使用道具 举报

24

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2014-4-8
在线时间
160 小时
发表于 2016-5-5 20:36:15 | 显示全部楼层
看看你的走线什么的
回复

使用道具 举报

24

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2014-4-8
在线时间
160 小时
发表于 2016-5-5 20:36:32 | 显示全部楼层
xinxian 发表于 2016-5-5 20:36
看看你的走线什么的

不知道我理解的对不对,你要是能传图就最好了
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-5-3
在线时间
16 小时
 楼主| 发表于 2016-5-6 10:22:29 | 显示全部楼层
图片 补上
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-5-3
在线时间
16 小时
 楼主| 发表于 2016-5-6 10:23:20 | 显示全部楼层
图片 补上
回复

使用道具 举报

7

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
745
金钱
745
注册时间
2016-1-20
在线时间
78 小时
发表于 2016-5-7 10:37:58 | 显示全部楼层
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);


GPIO_InitStruct.GPIO_Mode =  GPIO_Mode_IN;
GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;   
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;  
GPIO_Init(GPIOD, &GPIO_InitStruct);

  
GPIO_InitStruct.GPIO_Mode =  GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;   
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11;  
GPIO_Init(GPIOD, &GPIO_InitStruct);
   
while(1){
    GPIO_SetBits(GPIOD,GPIO_Pin_11);
    delay=0xFFFFFF;
    while(delay--);
    GPIO_ResetBits(GPIOD,GPIO_Pin_11);
    delay=0xFFFFFF;
    while(delay--);
}

试试这样写,在这个程序之前不要对GPIO_InitStruct); 进行任何赋值!

回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-7 10:46:41 | 显示全部楼层
PD12是不是让你丫的设置为悬空输入了?

那太正常了,百度:耦合

两个线离得太近就有寄生电容,电容两端的电压不能突变,所以一端变化另一端也跟上了

上拉一下就行了
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 02:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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