如果两个灯在一个组则时钟无需增加 初始化时明确引脚可以
gpio_initstruct.Pin = GPIO_PIN_8 | GPIO_PIN_9; //用" | "来同时 这样无需重新初始化
以下为驱动LED.c的代码
cs
#include "led.h"
#include "sys.h"
//①定义初始化结构体
GPIO_InitTypeDef gpio_initstruct;
//②初始化GPIO函数
void led_init(void)
{
//打开时钟
__HAL_RCC_GPIOB_CLK_ENABLE(); //注意看硬件原理图中LED灯的引脚在哪一个组
//调用GPIO初始化函数
gpio_initstruct.Pin = GPIO_PIN_8 | GPIO_PIN_9; //LED1、LED2对应的引脚
gpio_initstruct.Pull = GPIO_PULLUP; //推挽输出
gpio_initstruct.Mode =GPIO_MODE_OUTPUT_PP; //上拉
gpio_initstruct.Speed =GPIO_SPEED_FREQ_HIGH; //高速
HAL_GPIO_Init(GPIOB,&gpio_initstruct);
//关闭LED灯
led1_off();
led2_off();
}
//③点亮LED1的函数
void led1_on(void)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET); //RESET 为高电平
}
//④熄灭LED1的函数
void led1_off(void)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET); //SET 为低电平
}
//⑤翻转LED1状态的函数
void led1_toggle(void)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
}
//③点亮LED2的函数
void led2_on(void)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET); //RESET 为高电平
}
//④熄灭LED2的函数
void led2_off(void)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET); //SET 为低电平
}
//⑤翻转LED2状态的函数
void led2_toggle(void)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
}