打印
[STM32F1]

STM32 F103 VET6 PA0、PA1、PA2、PA3引脚 配置为有上拉输入,不工作

[复制链接]
3682|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
QQ826220679|  楼主 | 2016-10-22 22:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 QQ826220679 于 2016-10-22 22:05 编辑

  • STM32 F103 VET6单片机PA0、PA1、PA2、PA3、PC4、PC5、PB0、PB1引脚 配置为有上拉 输入模式 ,工作异常!

  • 同样的配置,PC0、PC1、PC2、PC3 却工作正常!

  • 代码如下:void IN_Init(void)
  • {
  •         GPIO_InitTypeDef  GPIO_InitStructure;
  •         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE);        //使能PA,PB,PC,PD,PE端口时钟
  •        
  •         //IN1
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                        //IN1-->PC.1端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOC, &GPIO_InitStructure);                                //根据设定参数初始化GPIOC.1
  •        
  •         //IN2
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                        //IN2-->PC.0端口配置(v1.0原理图与 IN1 调换)
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOC, &GPIO_InitStructure);                                //根据设定参数初始化GPIOC.0

  •         //IN3
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                        //IN3-->PC.4端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOC, &GPIO_InitStructure);                                //根据设定参数初始化GPIOC.3
  •        
  •         //IN4
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                        //IN4-->PC.3端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOC, &GPIO_InitStructure);                                //根据设定参数初始化GPIOC.2
  •        
  •        
  •        
  •         //IN5
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                        //IN5-->PA.1端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOA, &GPIO_InitStructure);                                //根据设定参数初始化GPIOA.1
  •        
  •         //IN6
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                        //IN6-->PA.0端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOA, &GPIO_InitStructure);                                //根据设定参数初始化GPIOA.0
  •        
  •         //IN7
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                        //IN7-->PA.3端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOA, &GPIO_InitStructure);                                //根据设定参数初始化GPIOA.3
  •        
  •         //IN8
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                        //IN8-->PA.2端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOA, &GPIO_InitStructure);                                //根据设定参数初始化GPIOA.2
  •        
  •        
  •        
  •         //IN9               
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                        //IN9-->PC.5端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOC, &GPIO_InitStructure);                                //根据设定参数初始化GPIOD.5
  •        
  •         //IN10============================================================================
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                        //IN10-->PC.4端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOC, &GPIO_InitStructure);                                //根据设定参数初始化GPIOD.4
  •        
  •         //IN11============================================================================
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                        //IN11-->PB.1端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOB, &GPIO_InitStructure);                                //根据设定参数初始化GPIOB.1
  •        
  •         //IN12============================================================================
  •         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;           //IN12-->PB.0端口配置
  •         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;       //上拉输入
  •         GPIO_Init(GPIOB, &GPIO_InitStructure);              //根据设定参数初始化GPIOB.0
  • }
  • void IN_16(void)
  • {

  •                 //IN1
  •                 if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0) == Bit_RESET) // = 0
  •                 {
  •                         GPIO_SetBits(GPIOD,GPIO_Pin_14);           //PD.14 输出高 OUT2 = 1;
  •                 }
  •                 else
  •                 {
  •                         GPIO_ResetBits(GPIOD,GPIO_Pin_14);         //PD.14 输出低 OUT2 = 0;
  •                 }

  •                 //IN2
  •                 if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1) == Bit_RESET) // = 0 // = 1
  •                 {
  •                         GPIO_SetBits(GPIOC,GPIO_Pin_7);                    //PC.7 输出高 OUT1 = 1;
  •                 }
  •                 else //if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_10) == Bit_SET) // =1;
  •                 {
  •                         GPIO_ResetBits(GPIOC,GPIO_Pin_7);          //PC.7  输出低 OUT1 = 0;
  •                 }
  •                
  •                 //IN3
  •                 if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_3) == Bit_RESET) // = 0
  •                 {
  •                         GPIO_SetBits(GPIOD,GPIO_Pin_15);           //PD.15 输出高 OUT3 = 1;
  •                 }
  •                 else
  •                 {
  •                         GPIO_ResetBits(GPIOD,GPIO_Pin_15);         //PD.15 输出低 OUT3 = 0;
  •                 }
  •                
  •                 //IN4
  •                 if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_2) == Bit_RESET) // = 0
  •                 {
  •                         GPIO_SetBits(GPIOD,GPIO_Pin_12);           //PD.12 输出高 OUT4 = 1;
  •                 }
  •                 else
  •                 {
  •                         GPIO_ResetBits(GPIOD,GPIO_Pin_12);         //PD.12 输出低 OUT4 = 0;
  •                 }
  •                
  •                
  •                 //IN1-IN4 工作正常!
  •                
  •                
  •                
  •                
  •                 //IN5
  •                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == Bit_RESET) // = 0
  •                 {
  •                         //GPIO_SetBits(GPIOD,GPIO_Pin_13);           //PD.12 输出高 OUT5 = 1;
  •                 }
  •                 else
  •                 {
  •                         //GPIO_ResetBits(GPIOD,GPIO_Pin_13);         //PD.12 输出低 OUT5 = 0;
  •                 }
  •                
  •                 //IN6
  •                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET) // = 0
  •                 {
  •                         //GPIO_SetBits(GPIOD,GPIO_Pin_9);            //PD.9  输出高 OUT6 = 1;
  •                 }
  •                 else
  •                 {
  •                         //GPIO_ResetBits(GPIOD,GPIO_Pin_9);          //PD.9  输出低 OUT6 = 0;
  •                 }
  •                
  •                 //IN7
  •                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3) == Bit_RESET) // = 0
  •                 {
  •                         //GPIO_SetBits(GPIOD,GPIO_Pin_11);           //PD.11 输出高 OUT7 = 1;
  •                 }
  •                 else
  •                 {
  •                         //GPIO_ResetBits(GPIOD,GPIO_Pin_11);         //PD.11 输出低 OUT7 = 0;
  •                 }
  •                
  •                 //IN8
  •                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == Bit_RESET) // = 0
  •                 {
  •                         GPIO_SetBits(GPIOD,GPIO_Pin_10);           //PD.10 输出高 OUT8 = 1;
  •                 }
  •                 else
  •                 {
  •                         GPIO_ResetBits(GPIOD,GPIO_Pin_10);         //PD.10 输出低 OUT8 = 0;
  •                 }
  •                
  •                
  •                
  •                
  •                
  •                
  •                
  •                 //IN9
  •                 if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5) == Bit_RESET) // = 0
  •                 {
  •                         GPIO_SetBits(GPIOD,GPIO_Pin_13);           //PD.12 输出高 OUT5 = 1;
  •                 }
  •                 else
  •                 {
  •                         GPIO_ResetBits(GPIOD,GPIO_Pin_13);         //PD.12 输出低 OUT5 = 0;
  •                 }
  •                
  •                 //IN10
  •                 if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_4) == Bit_RESET) // = 0
  •                 {
  •                         GPIO_SetBits(GPIOD,GPIO_Pin_9);            //PD.9  输出高 OUT6 = 1;
  •                 }
  •                 else
  •                 {
  •                         GPIO_ResetBits(GPIOD,GPIO_Pin_9);          //PD.9  输出低 OUT6 = 0;
  •                 }
  •                
  •                 //IN11
  •                 if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == Bit_RESET) // = 0
  •                 {
  •                         GPIO_SetBits(GPIOD,GPIO_Pin_11);           //PD.11 输出高 OUT7 = 1;
  •                 }
  •                 else
  •                 {
  •                         GPIO_ResetBits(GPIOD,GPIO_Pin_11);         //PD.11 输出低 OUT7 = 0;
  •                 }
  •                
  •                 //IN12
  •                 if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == Bit_RESET) // = 0
  •                 {
  •                         GPIO_SetBits(GPIOD,GPIO_Pin_10);           //PD.10 输出高 OUT8 = 1;
  •                 }
  •                 else
  •                 {
  •                         GPIO_ResetBits(GPIOD,GPIO_Pin_10);         //PD.10 输出低 OUT8 = 0;
  •                 }
  •                
  •                
  • //  IN5 - IN12   工作不正常,按下输入按钮后,该输出高电平的端口,只有几毫伏的输出。
  •                
  • }

  •        

  •         



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

本版积分规则

个人签名:本人做过315,433MHz无线收发。0.2%交流电流表和电压表,工频耐压仪。

13

主题

170

帖子

1

粉丝