蓝桥杯嵌入式之模块驱动

一、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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值