一、LED驱动
1.头文件
#ifndef __LED_H__
#define __LED_H__
#include "main.h"
void led_disp(u8 uled);
void Led_dispos(u8 pos);
void LED_Disp(u8 dsLED);
void TurnOn_LED(uint8_t _led);
void TurnOff_LED(uint8_t _led);
void Toogle_LED(uint8_t _led);
#endif /*__LED_H__*/
2.源文件
#include "led.h"
void led_disp(u8 uled)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|
GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOC,uled<<8,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
void Led_dispos(u8 pos)
{
switch(pos)
{
case 1:
led_disp(0x01);
break;
case 2:
led_disp(0x02);
break;
case 3:
led_disp(0x04);
break;
case 4:
led_disp(0x08);
break;
case 5:
led_disp(0x10);
break;
case 6:
led_disp(0x20);
break;
case 7:
led_disp(0x40);
break;
case 8:
led_disp(0x80);
break;
default:
led_disp(0x00);
}
}
u32 led = 0xff00;
/*
LED_Disp:全灭LED灯,然后点亮一个LED灯
dsLED:要点亮的LED灯,如dsLED==0x01,点亮LED1
*/
void LED_Disp(u8 dsLED)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
/*
TurnOn_LED:点亮某个LED灯(使用寄存器)
参数:
@_led:要打开的LED灯序号(如第一个为“1”)
*/
void TurnOn_LED(uint8_t _led)
{
led &= ~(0x01<<(7+_led));
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
GPIOC->ODR = (uint32_t)led;
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
/*
TurnOff_LED:熄灭某个LED灯(使用寄存器)
参数:
@_led:要熄灭的LED灯序号(如第一个为“1”)
*/
void TurnOff_LED(uint8_t _led)
{
led |= (0x01<<(7+_led));
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
GPIOC->ODR = (uint32_t)led;
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
}
/*
Toogle_LED:反转某个LED灯(使用寄存器)
参数:
@_led:要反转的LED灯序号(如第一个为“1”)
*/
void Toogle