多余的就不说了,都明白,为了方便操作,我们常常会用到类似于LED1 = 1来点亮一个灯,此处LED1就是一个脚位,它当然不是系统自带,一般都是我们宏定义一个脚位。 昨天刚接触IAR这个编程器,想用类似的方法来操作,但是类似51内核操作(keil中写法) sbit LED1 PA0 ; STVD 中的 _Bool PA0_OUT @PA_ODR:0; 这是头有点大,一方面想着操作能方便点,一方面又不想折腾太多时间。
经过一番折腾,最后还是选择通过位操作结合宏定义来操作,具体如下:
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 */ #define PA0OUTSET (GPIOA->ODR |= GPIO_PIN_0)//PA0 =1 #define PA0OUTCLR (GPIOA->ODR &= (~GPIO_PIN_0))//PA0 =0 #define PB0INVAL (GPIOB->IDR & (GPIO_PIN_0))//用于作为输入时用,即PA0输入值 #define P_K1 PB0INVAL//宏定义PK1的IO位PB0
#define LED1_EN PA0OUTSET//点亮LED1 #define LED1_DIS PA0OUTCLR //熄灭LED1
IAR 编程器 STM8S 脚位的位定义,布布扣,bubuko.com
原文:http://blog.csdn.net/chuangwu2009/article/details/25364933