2.LED模块

1.Cube MX配置

2.代码部分

1.创建一个fun.c,fun.h,head.h文件
#include<fun.h>
#include<head.h>
void led_disp(uchar led)
{
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOC,led<<8,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}

头文件处	
uint32_t time100ms;
void setup(void)
{
	time100ms=uwTick;
}
程序段内
static bool led_s;
if(uwTick-time100ms>100)//LED闪烁
{
 if(led_s)led_sta=(led_sta&0xfd)|0x02;
 else     led_sta=(led_sta&0xfd);
 led_dis(led_sta);
 led_s=!led_s;
 time100ms=uwTick;
}
uint8_t led_sta=0;
led_sta=(led_sta&0xfe)|0x01;(第一个与1多的相与,确保只改变第一个灯的状态,其它灯状态不变。
第二个相或,只是第一个灯亮)
led_dis(led_sta);

3.LED闪烁

uint8_t led_sta[10]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

 for(int i=0;i<8;i++)
	{
	    led_dis(led_sta[i]);
		HAL_Delay(100);
	}

4.LED代码扩展

void led_on(uint8_t led)//用之前用led_dis(0x00);初始化一下
{
	 
   HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOC,led,GPIO_PIN_RESET);
  HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
void led_off(uint8_t led)
{
   HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOC,led,GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}


#define led1 GPIO_PIN_8
#define led2 GPIO_PIN_9
#define led3 GPIO_PIN_10
#define led4 GPIO_PIN_11
#define led5 GPIO_PIN_12
#define led6 GPIO_PIN_13
#define led7 GPIO_PIN_14
#define led8 GPIO_PIN_15

void led_on(uint8_t led);
void led_off(uint8_t led);

5.LED操作单一一个灯

uint8_t led_sta;
void led_dis(uint8_t led)
{
     HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
     HAL_GPIO_WritePin(GPIOC,led<<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_chg(uint8_t num,uint8_t sta)
{
  uint8_t pos=0x01<<(num-1);
  led_sta=(led_sta&(~pos))|(pos*sta);
  led_dis(led_sta);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值