STM8S103F3P6的GPIO操作
下面是驱动STM8S103F3P6的GPIO操作方法汇总
库函数操作法
以下方法针对官方库函数,基于IAR编写。//包含必要的头文件 #include "stm8s.h" //定义GPIO口的别名。GPIOB和GPIO_PIN_5在官方的头文件中都定义了,可以直接用,省略以下两个定义也行。 #define LED_GPIO_PORT (GPIOB) #define LED_GPIO_PINS (GPIO_PIN_5) //对GPIO初始化。 GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); //常用GPIO操作函数 GPIO_WriteReverse(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins); //GPIO反转函数 GPIO_WriteHigh(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins); //GPIO置1 GPIO_WriteLow(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins); //GPIO置0void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode);
GPIO初始化函数的第三个参数GPIO_Mode有12个参数可选。
typedef enum { GPIO_MODE_IN_FL_NO_IT = (uint8_t)0x00, /*!< 浮空输入,无外部中断 */ GPIO_MODE_IN_PU_NO_IT = (uint8_t)0x40, /*!< 上拉输入,无外部中断 */ GPIO_MODE_IN_FL_IT = (uint8_t)0x20, /*!< 浮空输入,外部中断 */ GPIO_MODE_IN_PU_IT = (uint8_t)0x60, /*!< 上拉输入,外部中断 */ GPIO_MODE_OUT_OD_LOW_FAST = (uint8_t)0xA0, /*!< 开漏输出, 低电平, 10MHz */ GPIO_MODE_OUT_PP_LOW_FAST = (uint8_t)0xE0, /*!< 推挽输出, 低电平, 10MHz */ GPIO_MODE_OUT_OD_LOW_SLOW = (uint8_t)0x80, /*!< 开漏输出, 低电平, 2MHz */ GPIO_MODE_OUT_PP_LOW_SLOW = (uint8_t)0xC0, /*!< 推挽输出, 低电平, 2MHz */ GPIO_MODE_OUT_OD_HIZ_FAST = (uint8_t)0xB0, /*!< 开漏输出, 高阻抗,10MHz */ GPIO_MODE_OUT_PP_HIGH_FAST = (uint8_t)0xF0, /*!< 推挽输出, 高电平, 10MHz */ GPIO_MODE_OUT_OD_HIZ_SLOW = (uint8_t)0x90, /*!< 开漏输出, 高阻抗, 2MHz */ GPIO_MODE_OUT_PP_HIGH_SLOW = (uint8_t)0xD0 /*!< 推挽输出, 高电平, 2MHz */ }GPIO_Mode_TypeDef;