多余的就不说了,都明白,为了方便操作,我们常常会用到类似于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