IAR编译STM8S 自带的库函数都知道,IO口中有个每局定义如下:
typedef enum
{
GPIO_PIN_0 = ((u8)0x01), /*!< Pin 0 selected */
GPIO_PIN_1 = ((u8)0x02), /*!< Pin 1 selected */
GPIO_PIN_2 = ((u8)0x04), /*!< Pin 2 selected */
GPIO_PIN_3 = ((u8)0x08), /*!< Pin 3 selected */
GPIO_PIN_4 = ((u8)0x10), /*!< Pin 4 selected */
GPIO_PIN_5 = ((u8)0x20), /*!< Pin 5 selected */
GPIO_PIN_6 = ((u8)0x40), /*!< Pin 6 selected */
GPIO_PIN_7 = ((u8)0x80), /*!< Pin 7 selected */
GPIO_PIN_LNIB = ((u8)0x0F), /*!< Low nibble pins selected */
GPIO_PIN_HNIB = ((u8)0xF0), /*!< High nibble pins selected */
GPIO_PIN_ALL = ((u8)0xFF) /*!< All pins selected */
}GPIO_Pin_TypeDef;
然后在调用 GPIO_Pin_TypeDef 时,如果传递更多的参数时会提示一下红色字体,虽然不会有什么影响,但看着也别扭
如函数 void GPIO_WriteBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, BitAction GPIO_BitVal)
操作void GPIO_WriteBit(GPIOA, GPIO_PIN_0 , BitAction GPIO_BitVal) //不会提示报警
操作void GPIO_WriteBit(GPIOA, GPIO_PIN_0|PIO_PIN_1 , BitAction GPIO_BitVal) //会提示报警
Warning[Pe188]: enumerated type mixed with another type C:\Program Files\IAR Systems\Embedded Workbench 6.0\stm8\examples\ST-LINK\复件 STM8S105C6-Board\Project\Discover\src\main.c 215
因此我宏定义如下,再次传递多个参数时,就没有出现警告的提示了。
#define GPIO_PIN_0 ((u8)0x01) /*!< Pin 0 selected */
#define GPIO_PIN_1 ((u8)0x02) /*!< Pin 1 selected */
#define GPIO_PIN_2 ((u8)0x04) /*!< Pin 2 selected */
#define GPIO_PIN_3 ((u8)0x08) /*!< Pin 3 selected */
#define GPIO_PIN_4 ((u8)0x10) /*!< Pin 4 selected */
#define GPIO_PIN_5 ((u8)0x20) /*!< Pin 5 selected */
#define GPIO_PIN_6 ((u8)0x40) /*!< Pin 6 selected */
#define GPIO_PIN_7 ((u8)0x80) /*!< Pin 7 selected */
#define GPIO_PIN_LNIB ((u8)0x0F)
#define GPIO_PIN_HNIB ((u8)0xF0)
#define GPIO_PIN_ALL ((u8)0xFF)
IAR编译STM8S 中的脚位操作对库函数的一点修改