打着雨伞请教(之3),关于GPIO口在设置为输入状态下是否需要设置速度的问题
以下代码是从万历板载DEMO例程中挖出来的(请注意红色部分): /******************************************************************************* * Function Name : GPIO_Configuration * Description : Configures the different GPIO ports. * Input : None * Output : None * Return : None *******************************************************************************/ void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Configure PC.00 (ADC Channel10) as analog input -------------------------*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOC, &GPIO_InitStructure); // for LCD display -- segment /* Configure PE.00 -- PE.15 as Output push-pull : SEG0~15 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); // for LCD display -- com /* Configure PC.08 -- PC.11 as Output push-pull : COM1~4 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); // for 4 LEDs /* Configure PC.04 -- PC.07 as Output push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); // for KEY2 & KEY3 (PD.3/4) and JoyStick(PD.11~15) /* Configure PD.03, PD.04, PD.11 -- PD.15 as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &GPIO_InitStructure); // for usb.cs /* PD.08 used as USB pull-up --> EK-STM32F */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOD, &GPIO_InitStructure); // for JoyStick /* Configure the JoyStick IOs */ /* Key (up + down + left + right */ GPIO_InitStructure.GPIO_Pin = JOY_UP | JOY_DOWN |JOY_LEFT | JOY_RIGHT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOD, &GPIO_InitStructure); }
从《STM32系列 RAM Cortex-M3微控制器 原理与实践》一书上(第110,表3.11、表3.12)得知,速率仅仅是针对输出模式而言的,而对于输入模式来说,没速率设置一说。 匠人的问题:为什么例程中在把“JOY_UP | JOY_DOWN |JOY_LEFT | JOY_RIGHT”这四个IO口设置为输入上拉模式时,还要设置速率?到底是例程错了,还是书错了,还是匠人错了? |