首页 > 代码库 > IAR编译STM8S 中的脚位操作对库函数的一点修改

IAR编译STM8S 中的脚位操作对库函数的一点修改

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)