[STM32F4] 引脚保持高低电平

[复制链接]
922|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,到地;可以正常工作;
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 指令试下;
shimx 发表于 2016-10-30 22:31 | 显示全部楼层
你这样做,是在说他的库有问题了,库函数置高有问题?
shimx 发表于 2016-10-30 22:33 | 显示全部楼层
如果一个引脚悬空,没有上拉,用表能测量出高电平吗
 楼主| jiaxw 发表于 2016-10-30 22:36 | 显示全部楼层
我要崩溃了,犯得错误让我想自杀啊。我没有调用GPIO_Init啊啊啊啊啊。谢各位帮助了,自己太不细心了
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");
}
 楼主| jiaxw 发表于 2016-10-30 22:40 | 显示全部楼层
嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

825

主题

9762

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部