拿到开发板,第一件事就是开发环境,这里省掉,因为用的是KEIL,第二件事就是学习GPIO口,会简单的操作,在开发板上有板载按键和LED灯,第一步就以实现按键对LED灯的控制为目标进行。
1、先从原理图开始:
LED:
KEY:
LED:连接MCU 44 45 46 47脚,按键:连接MCU 19 52 68 69.
2.点灯LED3照片/代码:
LED初化:
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
FL_GPIO_OUTPUT_PUSHPULL;
FL_GPIO_ResetOutputPin(LED3_GPIO, LED3_PIN);
GPIO_InitStruct.pin = LED3_PIN;
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
FL_GPIO_Init(LED3_GPIO, &GPIO_InitStruct);
LED宏定义:
#define LED3_GPIO GPIOD
#define LED3_PIN FL_GPIO_PIN_12
#define LED0_ON FL_GPIO_ResetOutputPin(LED0_GPIO, LED0_PIN)
#define LED0_OFF FL_GPIO_SetOutputPin(LED0_GPIO, LED0_PIN)
#define LED0_TOG FL_GPIO_ToggleOutputPin(LED0_GPIO, LED0_PIN)
点亮LED:
LED3_ON;
3、两种让LED闪烁:
初始化:
FL_GPIO_ResetOutputPin(LED3_GPIO, LED3_PIN);
FL_GPIO_ResetOutputPin(LED2_GPIO, LED2_PIN);
FL_GPIO_ResetOutputPin(LED1_GPIO, LED1_PIN);
FL_GPIO_ResetOutputPin(LED0_GPIO, LED0_PIN);
GPIO_InitStruct.pin = LED3_PIN | LED2_PIN | LED1_PIN | LED0_PIN ;
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
FL_GPIO_Init(LED3_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.pin = LED2_PIN ;
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
FL_GPIO_Init(LED2_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.pin = LED1_PIN ;
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
FL_GPIO_Init(LED1_GPIO, &GPIO_InitStruct);
GPIO_InitStruct.pin = LED0_PIN ;
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
FL_GPIO_Init(LED0_GPIO, &GPIO_InitStruct);
定义:
#define LED0_GPIO GPIOC
#define LED0_PIN FL_GPIO_PIN_0
#define LED3_GPIO GPIOD
#define LED3_PIN FL_GPIO_PIN_12
#define LED2_GPIO GPIOB
#define LED2_PIN FL_GPIO_PIN_15
#define LED1_GPIO GPIOC
#define LED1_PIN FL_GPIO_PIN_1
#define LED0_ON FL_GPIO_ResetOutputPin(LED0_GPIO, LED0_PIN)
#define LED0_OFF FL_GPIO_SetOutputPin(LED0_GPIO, LED0_PIN)
#define LED0_TOG FL_GPIO_ToggleOutputPin(LED0_GPIO, LED0_PIN)
#define LED1_ON FL_GPIO_ResetOutputPin(LED1_GPIO, LED1_PIN)
#define LED1_OFF FL_GPIO_SetOutputPin(LED1_GPIO, LED1_PIN)
#define LED1_TOG FL_GPIO_ToggleOutputPin(LED1_GPIO, LED1_PIN)
#define LED2_ON FL_GPIO_ResetOutputPin(LED2_GPIO, LED2_PIN)
#define LED2_OFF FL_GPIO_SetOutputPin(LED2_GPIO, LED2_PIN)
#define LED2_TOG FL_GPIO_ToggleOutputPin(LED2_GPIO, LED2_PIN)
#define LED3_ON FL_GPIO_ResetOutputPin(LED3_GPIO, LED3_PIN)
#define LED3_OFF FL_GPIO_SetOutputPin(LED3_GPIO, LED3_PIN)
#define LED3_TOG FL_GPIO_ToggleOutputPin(LED3_GPIO, LED3_PIN)
一种是用延时函数,然后开关.
LED3_ON;
FL_DelayMs(100);
LED3_OFF;
FL_DelayMs(100);
一种是用LED0_TOG
LED0_TOG;
LED3_TOG;
4、按键PD9按下点亮LED1(PC1)。
代码:
按键初始化:
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
FL_GPIO_ResetOutputPin(GPIOD, FL_GPIO_PIN_9);
GPIO_InitStruct.pin = FL_GPIO_PIN_9;
GPIO_InitStruct.mode = FL_GPIO_MODE_INPUT;
GPIO_InitStruct.pull = FL_ENABLE;
FL_GPIO_Init(GPIOD, &GPIO_InitStruct);
执行程序:
if(FL_GPIO_GetInputPin(GPIOD,FL_GPIO_PIN_9)==0)
LED1_ON;
else
LED1_OFF;
FL_DelayMs(200);
5、视频:
LED3_TOG;
FL_DelayMs(100);
if(FL_GPIO_GetInputPin(GPIOD,FL_GPIO_PIN_9)==0)
LED1_ON;
else
LED1_OFF;
FL_DelayMs(100);
上面的代码执行是这样的,LED3闪烁,按按PD9按下就亮LED1,松开就关掉LED。