蓝桥杯省赛LED配置

一 在产品手册中找到key 和LEd的原理图
key 原理图

image.png



led 原理图

image.png


二 在底层文件夹中的Src和Inc中bsp中创建bsp_led_key.c和 bsp_led_key.h

image.png

image.png


三 在scourse中打开cobmex并通过与原理图配置引脚
key引脚(按键配置为input,其他选项默认 PA0 PB0-2)

image.png


led引脚(led配置为output,在gpio设置中要将默认电平改为高电平,其它不变。注意:不能忽略PD2,默认为低电平,高电平有效 PD2 PC8-15)
1.芯片设置

image.png


2.GPIO设置(shift 多选后,高电平,推挽输出以及NO Pull-up and No Pull-down)

image.png


四 打开test中MDK项目添加文件(注意.h路径是否需要添加)完成后进行以下操作
1.在bsp_led_key.c和main.c中分别添加led_key/bsp_led_key.h后编译

image.png


2.编译成功后在bsp_led_key.h中导入main.h
3.将scourse中gpio.c 中生成的初始化函数复制到test的bsp_led_key.c中

image.png


五 写入其他模块函数
1.led显示函数,想让某一位灯亮就让其为1(在初始化后应该令所有灯都熄灭)

led显示函数

C复制代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

void LED_Disp(uint8_t ucLed)

{

// 对所有位置1,使led灯熄灭 (这一部分应该复制到初始化函数之后,让灯一开始就熄灭)

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8

|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET); // 让PD置1,使数据进入

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);// 让PD置0,关闭

HAL_GPIO_WritePin(GPIOC, ucLed<<8, GPIO_PIN_RESET); //左移8位后令数据进入对应引脚

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);

}

2.按键扫描函数

按键扫描函数

C复制代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

uint8_t Key_Scan(void)

{

uint8_t unKeyval = 0;

if (HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0 )==GPIO_PIN_RESET)

//如果读GPIOB,PIN_0 的值 等于GPIO_PIN_RESET,代表值为 0 ,此时说明按键按下,返回具体数值

unKeyval = 1;

if (HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1 )==GPIO_PIN_RESET)

unKeyval = 2;

if (HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2 )==GPIO_PIN_RESET)

unKeyval = 2;

if (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0 )==GPIO_PIN_RESET)

unKeyval = 2;

return unKeyval;

}

六 写入模块子函数后,记得要在.h文件中做对应声明
七 在main.c中调用led_key模块进行初始化

image.png


八 定义变量已经对子函数进行声名

image.png


九 在while循环中调用子函数

十 写key按键子函数

十一 写入led扫描函数
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值