LED输出反转
Delay(0xFFFF); GPIO_ToggleBits(LED2_PORT, LED2_PIN); Delay(0xFFFF); } } GPIO读操作---查询按键点亮LED void main(void) { /* Infinite loop */ GPIO_Init(LED1_PORT,LED1_PIN,GPIO_Mode_Out_PP_Low_Fast); //输出低电平-高速10M GPIO_Init(KEY_PORT,KEY_PIN,GPIO_Mode_In_FL_No_IT);...
#define LED1_PIN (GPIO_PIN_3) #define LED2_PIN (GPIO_PIN_2) #define LED3_PIN (GPIO_PIN_1) #define LED4_PIN (GPIO_PIN_0) #define BUTTON_PORT (GPIOC) #define BUTTON_PIN (GPIO_PIN_0) /* Initialize I/Os in Output Mode */ GPIO_Init(LEDS_PORT, (LED1_PIN | LED2_PIN | L...
GPIO_Init这个命令是设置或者说定义管教模式的,上面这条命令的意思就是LED1代表的管教设置为推挽输出模式,初始高电平,高速模式。 注:LED1_PORT和LED1_PIN应该在相关的头文件或者别处已注释,如 #define LED1_PIN GPIO_PIN_5 #define LED1_PORT GPIOB GPIO_WriteLow(LED1_PORT,LED1_PIN); 在LED1这个管脚输...
端口(PORT):独立的外设子模块,包括多个引脚,通过多个硬件寄存器控制引脚。 GPIO 模块由端口 GPIOA、GPIOB、GPIOC 等多个独立的子模块构成。 例如:端口 GPIOA 包括 PA0 ~ PA15 这 16 个引脚,通过 10 个硬件寄存器控制引脚工作。 引脚(PIN):对应微控制器的一个管脚,归属于端口,由端口寄存器的对应位控制。
GPIO->ODR是32位的输出数据寄存器(高16位保留,低16为依次对应某个GPIO口的16个引脚)。对ODR赋值是一次操作16位的,也就是同时设置了16个引脚的输出电平;而GPIO_PIN是指某个端口的具体某一个引脚,是位操作,可以通过设置BSRR或BRR寄存器来设置某一特定引脚的输出电平,而保持其他引脚输出不变,...
#define KEY1_INT_EXTI_PORTSOURCE GPIO_PortSourceGPIOA #define KEY1_INT_EXTI_PINSOURCE GPIO_PinSource0 #define KEY1_INT_EXTI_LINE EXTI_Line0 #define KEY1_INT_EXTI_IRQ EXTI0_IRQn #define KEY1_IRQHandler EXTI0_IRQHandler #define KEY2_INT_GPIO_PORT GPIOC ...
若它的输入参数 PIN 值为0,则表达式的值为假,PIN非0时表达式的值为真。我们知道用于选择GPIO引脚号的宏“GPIO_Pin_x”的值至少有一个数据位为1,这样的输入参数才有意义,若GPIO_InitStruct->GPIO_Pin的值为0,输入参数就无效了。配合“IS_GPIO_PIN”这句表达式,“assert_param”就实现了检查输入参数的功能。
#define digitalToggle(p,i) {p->ODR ^=i;}//输出反转状态 /* 定义控制 IO 的宏 */ #define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,LED1_PIN) #define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_PIN) #define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_PIN) ...
5 #define digitalToggle(p,i) {p->ODR ^=i;}//输出反转状态 6 7 8/* 定义控制IO的宏 */ 9 #define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,LED1_PIN) 10 #define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_PIN) 11 #define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_PIN) ...