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置0
															
														
void 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;