本帖最后由 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 工作不正常,按下输入按钮后,该输出高电平的端口,只有几毫伏的输出。
-
- }
-
-
|
|