STM32G4 蓝桥杯嵌入式 入门流水灯

 初学G431这块板子的时候,用的是STM32cubeMX 和keil-MDK ,在百度上搜到的全是标准库的代码,但是cubeMX用的是HAL库 代码很不一样,而且对于引脚的初始化,标准库的方式需要手动进行配置,但如果使用cubeMX的话,所有初始化配置都由代码转变成可视化图形。

使用这两个软件进行开发

STM32G4 蓝桥杯嵌入式 入门流水灯

 G431的板子上自带了DAP转串口,只要接上电脑就可以使用(win10);

STM32G4 蓝桥杯嵌入式 入门流水灯

 在写流水灯代码之前 我们要下载G431的固件包 这些网上教程其实已经非常详细了。

下面说说几个要注意的地方,

 一定一定要学会查产品手册,因为我们想要控制LED灯,就必须知道控制LED的引脚是哪几个

可以看到板子上的八个LED灯被引脚PC8-PC15控制,下一步就可以打开cubeMX进行配置了

STM32G4 蓝桥杯嵌入式 入门流水灯

 打开cubeMX,按步骤操作

STM32G4 蓝桥杯嵌入式 入门流水灯

选择相应芯片

STM32G4 蓝桥杯嵌入式 入门流水灯

 依次选择PC8-PC15引脚为GPIO_OUTPUT(对应LD1-LD8)

STM32G4 蓝桥杯嵌入式 入门流水灯

STM32G4 蓝桥杯嵌入式 入门流水灯

设置sys为sw模式,这里不懂跟着做就ok

STM32G4 蓝桥杯嵌入式 入门流水灯

 设置项目名称以及调整开发环境为MDK-ARM,完成后点击GENERATE CODE创建工程文件

STM32G4 蓝桥杯嵌入式 入门流水灯

 在stm32cube内的设置在main.c内已经初始化完毕,双击打开

STM32G4 蓝桥杯嵌入式 入门流水灯

这里面已经写好了所有GPIO初始化代码,我们只需要写上用户自己的代码即可

用户个人代码一定要在这两行注释之间进行编写,否则再次通过stm32cube修改初始化配置后,个人代码将被覆盖删除

STM32G4 蓝桥杯嵌入式 入门流水灯

用户代码如下

使用HAL_GPIO_WritePin()函数对引脚的输出电平进行控制,分析产品手册中电路可知,低电平时LED点亮,高电平时LED熄灭

使用HAL_Delay()进行延时  具体语法可以查看stm32g4xx.gpio.c文件查看。

STM32G4 蓝桥杯嵌入式 入门流水灯

 用户代码在末尾有

这里需要调用两个函数 HAL_GPIO_WritePin()和 HAL_Delay()

HAL_GPIO_WritePin()的作用是改变引脚输出的电平。

HAL_Delay()的作用是延时 单位是毫秒;


代码编写完成后,点击bulid按钮进行编译,如程序编写无错误,编译完成后即可烧录至电路板中运行

STM32G4 蓝桥杯嵌入式 入门流水灯

 这里讲一下debug的配置

点击魔术棒后 选择debug  

STM32G4 蓝桥杯嵌入式 入门流水灯

 在下拉菜单中选择DAP

STM32G4 蓝桥杯嵌入式 入门流水灯

 然后点击旁边的settings按钮,可以看到我们的板子,选择flash download

STM32G4 蓝桥杯嵌入式 入门流水灯

 勾上这个,这样程序一下载就可以自己跑,不用手动按复位键

STM32G4 蓝桥杯嵌入式 入门流水灯

 设置好这些就可以直接下载程序了。



附上流水灯代码(写在while(1)里面):

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,0);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,1);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,0);
HAL_Delay(1000);
 

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览33845 人正在系统学习中

来源:XingYeKM.

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月16日
下一篇 2022年3月16日

相关推荐