第十五届蓝桥杯嵌入式突击复习(一)

一、前言:今天是2024/3/25,已经有点自闭了,真的是什么都不会,深夜努力学习,做点心得体会,希望有用。

二、点灯

1、了解开发板

        首先,我们使用的是stm32g431rbt6的开发板,说实话相比于stm32f103zet6,他的功能算少的,所以,实际难度是不大的,我们主要需要的就是对症下药,也就是所谓的应试教育,我们了解一下往届蓝桥杯的嵌入式比赛,主要涉及的有led,key,lcd,pwm输出捕获,所以整体来看还好,想要省赛拿名次就是了解这些,那么让我们进入主题。

2、工具

        我这里使用的是keil5和cubemx混合使用,可以和我一起做。

3、教程

        (1)首先,我们需要打开cubemx,然后自行下载好必要的固件库,点击New Project(新建工程),然后在左上角的Part Number自行搜索stm32g431rb(因为有stm32g431rbtx和stm32g431rblx系列,所以直接搜stm32g431rb就行)双击即可。

        (2)接下来就是我们的重点了,根据原理图得知,led灯是(PC8~PB15),这里我们在查看原理图的时候需要注意,会发现U1有锁存器(PD2),所以我们需要随时进行开关操作,首先进行选择rcc和sys,这里我们默认这样设置就行。

        (3)然后就是我们的灯了,我们选中PC8~PC15和PD2,点击GPIO_OUTPUT(推挽输出),然后点击左侧的GPIO,根据原理图,给予PC8~PC15低电压和PD2高电压即可使led灯进行发光。        旁边的黄色叹号可以不管。

        (4)然后点击上方的Clock Configuration,然后在HCLK的方框中输入72后点击回车。

       (5)接着,就是我们cubemx的最后一步了,选择好自己的文件夹,然后给自己的工程起个名字,然后在IDE那里选择mdk—atm即可,点击code generator,按下图配置,点击右上角生成即可。

        (6)进入keil5,在魔术棒的debug中将ST—link改为dap,否则会有烧录失败的报错。

我们可以先打开gpio.c,我们可以看到我们刚才设置的东西被一键生成了,接下来我们就只需要写逻辑代码就行。在主函数的code begin里写入以下代码

	void led_alloff(void)//将所有的灯先关闭
	{
		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);
	}		

然后我这里选择了两个灯进行闪烁来验证现象,敲入以下代码。

	void led0(void)//灯0亮
	{
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET);
		HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
		HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
	
	}
	void led1(void)//灯1亮
	{
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET);
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
		HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
	
	}

最后在主函数里的while(1)中第一行加入以下代码。

        led_alloff();//作用类似于消隐
		led0();      //灯0亮
		HAL_Delay(1000);//等待1s
        led_alloff();
		led1();
		HAL_Delay(1000);

就可以观察到灯0和灯1以一秒闪烁切换。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值