stm32如何判读输入IO口的高低电平

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32如何判读输入IO口的高低电平相关的知识,希望对你有一定的参考价值。

我向STM32的IO输入了一个高电平,想用stm32来检测,但是为什么检测出来的一直是低电平,我用万用表测明明是高电平,这个语句应该是怎么写的
if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_15)==1)
GPIO_SetBits(GPIOB , GPIO_Pin_7);
else
GPIO_ResetBits(GPIOB , GPIO_Pin_7);
这样写不对吗

1.先检查io口初始化内容是不是作输入了
2.检查一下这个io口有没有已经重复初始化了
3.检查这个高电平是否超出了检测范围,看一下stm32芯片的spec
参考技术A 我也刚开始学,你GPIO初始化有没有把GPIO_InitStructure.GPIO_Mode设为输入模式呢。。。。其实我也不懂,你要是解决了请@我一下,让我也学学

stm32-独立按键

时间有点仓促,写的比较粗糙   先写点上去吧

   前面讲过了io口的设置,按键不过是把io口设置成其他的模式,如果按键接的vcc就将相应io口设置成下拉输入模式,接地就上拉输入模式(没按下的时候就要默认高电平)

然后就和51的时候一样处理抖动,读取状态就行了,我也改成没使用商家给的函数,只使用库函数了

  以下为key驱动

 #include "key.h"
void delay_ms(u16 time)
{    
   u16 i=0;  
   while(time--)
   {
      i=8000; //////////....????
      while(i--) ;    
   }
}


void KEY_Init()
{
    GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//é?à-ê?è?
GPIO_Init(GPIOA,&GPIO_InitStructure);

// GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
// GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//é?à-ê?è?
// GPIO_Init(GPIOC,&GPIO_InitStructure);
//
// GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
// GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//??à-ê?è?
// GPIO_Init(GPIOA,&GPIO_InitStructure);

}


u8 KEY_Scan(u8 mode)
{
u8 temp;
    temp=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15);
if(temp==0)
{
delay_ms(10);
temp=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15);
if(temp==0)
{
   return 0;
}
}
return 1;
}

 

以下为main,led和上次一样

#include "led.h"
#include "key.h"
void delayms(u16 time)
{    
   u16 i=0;  
   while(time--)
   {
      i=8000; 
      while(i--) ;    
   }
}
int main()
{
    KEY_Init();
LED_Init();
while(1)
{
if(KEY_Scan(0))
{
   GPIO_SetBits(GPIOA,GPIO_Pin_8);
delayms(500);
}
   else 
{
   GPIO_ResetBits(GPIOA,GPIO_Pin_8);
delayms(500);
}
}
//return 0;
}

以上是关于stm32如何判读输入IO口的高低电平的主要内容,如果未能解决你的问题,请参考以下文章

STM32--GPIO口的八种工作模式

STM32中IO口的8中工作模式

Arduino STM32如何让pa11输出高低电平?

STM32的GPIO口的几种输入输出模式的区别和适用场合,有详细的解说吗

STM32学习笔记

STM32的IO口的8种配置