打印
[STM32F4]

引脚保持高低电平

[复制链接]
652|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiaxw|  楼主 | 2016-10-30 22:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于要设置外部器件的使能和方向,所以需要输出稳定的高电平或者低电平,我觉得不难,就按照自己的想法配置了,代码如下,
   RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOE, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;            
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_WriteBit(GPIOE, GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7 , Bit_SET);
  
但是测出来这几个端口都是低电平啊,不知道是哪里出错了
沙发
zhenykun| | 2016-10-30 22:20 | 只看该作者
GPIO_PuPd_NOPULL
是不带上拉的吧

使用特权

评论回复
板凳
zhenykun| | 2016-10-30 22:23 | 只看该作者
对,你试一下带上拉

使用特权

评论回复
地板
yszong| | 2016-10-30 22:25 | 只看该作者
:)
        GPIO_InitStructure.GPIO_Pin =         GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA, &GPIO_InitStructure);        
我的设置,他这样设置一样的;
我负载接电阻串LED,到地;可以正常工作;

使用特权

评论回复
5
dengdc| | 2016-10-30 22:27 | 只看该作者

#define RUN_LED_ON              GPIOA->BSRRL = GPIO_Pin_15
#define RUN_LED_OFF             GPIOA->BSRRH = GPIO_Pin_15
用BSRRL和BSRRH 指令试下;

使用特权

评论回复
6
shimx| | 2016-10-30 22:31 | 只看该作者
你这样做,是在说他的库有问题了,库函数置高有问题?

使用特权

评论回复
7
shimx| | 2016-10-30 22:33 | 只看该作者
如果一个引脚悬空,没有上拉,用表能测量出高电平吗

使用特权

评论回复
8
jiaxw|  楼主 | 2016-10-30 22:36 | 只看该作者
我要崩溃了,犯得错误让我想自杀啊。我没有调用GPIO_Init啊啊啊啊啊。谢各位帮助了,自己太不细心了

使用特权

评论回复
9
liliang9554| | 2016-10-30 22:38 | 只看该作者
我现在碰到了这个问题。。。我用了GPIO_init()函数,也不行!!!!!!!!!
void gpio_init_pd(){
       GPIO_InitTypeDef GPIO_INITSTURE;
        
     //   GPIO_DeInit( GPIOA);
               
          RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //使能GPIOA_H的io引脚时钟。
        
          GPIO_INITSTURE.GPIO_Pin =  gpio_a;      //设定串口的初始化管脚
        
          GPIO_INITSTURE.GPIO_Mode = GPIO_Mode_OUT;//设定管脚的模式,高速,低速,还是其他
        
         GPIO_INITSTURE.GPIO_Speed = GPIO_Speed_100MHz;  //管脚速率速度 ;
         
         GPIO_INITSTURE.GPIO_OType = GPIO_OType_PP; //输出模式
        
         GPIO_INITSTURE.GPIO_PuPd = GPIO_PuPd_NOPULL; //是否内拉高;
        
        GPIO_Init(GPIOA,&GPIO_INITSTURE);   //pin口初始化

        // GPIO_WriteBit(GPIOA,1,Bit_RESET);//set low

     printf("gpid e init \n");
}

使用特权

评论回复
10
jiaxw|  楼主 | 2016-10-30 22:40 | 只看该作者
嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

825

主题

9762

帖子

4

粉丝