|
发表于 2009-3-28 12:42:56
|
显示全部楼层
if ((((u8)(GPIO_Mode)) & (u8)0x10) != (u8)0x00) /* High level */
是这句话要求将io口设置为高或低电平
00036 /**
00037 * @brief GPIO modes
00038 *
00039 * Bits definitions:
00040 * - Bit 7: 0 = INPUT mode
00041 * 1 = OUTPUT mode
00042 * 1 = PULL-UP (input) or PUSH-PULL (output)
00043 * - Bit 5: 0 = No external interrupt (input) or No slope control (output)
00044 * 1 = External interrupt (input) or Slow control enabled (output)
00045 * - Bit 4: 0 = Low level (output)
00046 * 1 = High level (output push-pull) or HI-Z (output open-drain)
00047 */
00048 typedef enum
00049 {
00050 GPIO_MODE_IN_FL_NO_IT = (u8)0b00000000, /*!< Input floating, no external interrupt */
00051 GPIO_MODE_IN_PU_NO_IT = (u8)0b01000000, /*!< Input pull-up, no external interrupt */
00052 GPIO_MODE_IN_FL_IT = (u8)0b00100000, /*!< Input floating, external interrupt */
00053 GPIO_MODE_IN_PU_IT = (u8)0b01100000, /*!< Input pull-up, external interrupt */
00054 GPIO_MODE_OUT_OD_LOW_FAST = (u8)0b10000000, /*!< Output open-drain, low level, no slope control */
00055 GPIO_MODE_OUT_PP_LOW_FAST = (u8)0b11000000, /*!< Output push-pull, low level, no slope control */
00056 GPIO_MODE_OUT_OD_LOW_SLOW = (u8)0b10100000, /*!< Output open-drain, low level, slow slope */
00057 GPIO_MODE_OUT_PP_LOW_SLOW = (u8)0b11100000, /*!< Output push-pull, low level, slow slope */
00058 GPIO_MODE_OUT_OD_HIZ_FAST = (u8)0b10010000, /*!< Output open-drain, high-impedance level, no slope control */
00059 GPIO_MODE_OUT_PP_HIGH_FAST = (u8)0b11010000, /*!< Output push-pull, high level, no slope control */
00060 GPIO_MODE_OUT_OD_HIZ_SLOW = (u8)0b10110000, /*!< Output open-drain, high-impedance level, slow slope */
00061 GPIO_MODE_OUT_PP_HIGH_SLOW = (u8)0b11110000 /*!< Output push-pull, high level, slow slope */
00062 }GPIO_Mode_TypeDef;
这里说GPIO_Mode的第4位是用来设置是否输出高电平的。 |
|