打印
[STM32F4]

stm32f4引脚保持高低电平

[复制链接]
3978|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xmu_stm|  楼主 | 2014-9-22 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于要设置外部器件的使能和方向,所以需要输出稳定的高电平或者低电平,我觉得不难,就按照自己的想法配置了,代码如下,
   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);
  
但是测出来这几个端口都是低电平啊,不知道是哪里出错了,求大家帮忙解决一下,谢谢了
沙发
qq4988| | 2014-9-22 10:57 | 只看该作者
GPIO_PuPd_NOPULL
是不带上拉的吧,你试一下带上拉

使用特权

评论回复
板凳
mmuuss586| | 2014-9-22 13:41 | 只看该作者
qq4988 发表于 2014-9-22 10:57
GPIO_PuPd_NOPULL
是不带上拉的吧,你试一下带上拉

:)
        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,到地;可以正常工作;

使用特权

评论回复
地板
mmuuss586| | 2014-9-22 13:42 | 只看该作者
#define RUN_LED_ON              GPIOA->BSRRL = GPIO_Pin_15
#define RUN_LED_OFF             GPIOA->BSRRH = GPIO_Pin_15
用BSRRL和BSRRH 指令试下;

使用特权

评论回复
5
qq4988| | 2014-9-22 14:12 | 只看该作者
mmuuss586 发表于 2014-9-22 13:42
#define RUN_LED_ON              GPIOA->BSRRL = GPIO_Pin_15
#define RUN_LED_OFF             GPIOA->BSRRH = GPIO_Pin ...

你这样做,是在说他的库有问题了,库函数置高有问题?

如果一个引脚悬空,没有上拉,用表能测量出高电平吗

使用特权

评论回复
6
xmu_stm|  楼主 | 2014-9-22 15:34 | 只看该作者
我要崩溃了,犯得错误让我想自杀啊。我没有调用GPIO_Init啊啊啊啊啊。谢各位帮助了,自己太不细心了

使用特权

评论回复
7
mmuuss586| | 2014-9-22 18:26 | 只看该作者
xmu_stm 发表于 2014-9-22 15:34
我要崩溃了,犯得错误让我想自杀啊。我没有调用GPIO_Init啊啊啊啊啊。谢各位帮助了,自己太不细心了 ...

:D
解决了好,男人不要这么脆弱;

使用特权

评论回复
8
hp549302974| | 2015-12-8 19:14 | 只看该作者
我现在碰到了这个问题。。。我用了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");
}

使用特权

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

本版积分规则

11

主题

32

帖子

0

粉丝