ITPub博客

首页 > 嵌入式/内核开发 > 嵌入式/内核开发 > [蓝桥杯嵌入式有手就行]2_从点灯开始

[蓝桥杯嵌入式有手就行]2_从点灯开始

原创 嵌入式/内核开发 作者:工具人呵呵 时间:2023-10-10 10:34:33 0 删除 编辑

文章目录

[蓝桥杯嵌入式有手就行]系列文章

前言

一、打开我的工程

1、cubemx工程

2、打开keil工程

3、下载

4、观察现象

二、cubemx配置

三、keil

1、配置调试器

2、编写代码

3、编译烧录

四、问题

1、startup_stm32g431xx.s文件丢失

2、下载后没反应,需要按复位

3、 下载报错(flash downlo failed-“cortex-m4”)

4、选不中代码

五、vscode

推荐的插件

EIDE

总结

前言

注:本系列基于2023年蓝桥杯实战情况就行编写,所有软件均采用2023年赛点资源包

历年真题在官网都有,这里直接上链接(需要登录)

本文用点灯的案例来验证你的软硬件是否配置完成,大家直接基于我的模板去完成就可以,这里附上下载地址。详细的硬件解析将在下一篇中进行,点灯的步骤也放在下面。

验证工程下载地址:https://download.csdn.net/download/weixin_44354614/88409720


一、打开我的工程

1、cubemx工程

在这里插入图片描述

双击这个文件,因为我的版本是6.8.1,高于官方资料包里的版本,所以你需要选择Migrate(之后的教程会使用我新建的虚拟机,环境采用我发的资源包)

在这里插入图片描述

图片是网上找的,差不多就是这个样子。



cubemx需要联网更新资源,打开的时候会读条,等待就可以,第一次可能比较慢。

如果打不开,再根据提示自行百度解决,我没遇到,没法说明。



2、打开keil工程

在这里插入图片描述

点击rebuild,没有报错就可以了。

在这里插入图片描述


3、下载

连接板子,如果这里没有设备,可能需要打驱动(win10及以上是自动的)或者检查连接。

在这里插入图片描述

点击这个下载就可以。

在这里插入图片描述


4、观察现象

在这里插入图片描述


二、cubemx配置

在这里插入图片描述


只需要按我框的几个,然后回车,软件会自动调整。HCLK一般为了好算,我会取80(使用ADC的情况)或者100,具体看要求决定。。

在这里插入图片描述

右边选择引脚,按图照抄就行,从PC8到PC15,别忘了PD2引脚。

在这里插入图片描述


这里不要有中文路径就可以,不然还需要自己手动添加启动文件。如果用我的keil安装包的,第二个框的版本号就不需要改了。

在这里插入图片描述

这两个选项对于比赛来说,保持默认即可。

STM32Cube MCU packages and embedded software packs,如果你是自己做东西,硬盘空间比较紧张的可以选择第2个。==就这个点灯来说,第二个选项只有5MB。而选择全部的话就有72MB。==反正你要使用新的模块也会来这个软件配置,所以没影响。

Generated files,这个或许对于比赛来说,默认(第一个选项不选)会更方便。但是不利于你自己做项目的时候制作bsp文件,目录结构相对清晰。第三个选项很重要如果你不能一次配置完成,那么务必选上,代码写在user begin和user end之间,不要删除那些注释。

在这里插入图片描述

之后点右上角的GENERATE CODE生成代码后,点击打开工程就可以了。

没有这个选项的话,大概率是你放在的中文目录好像桌面也算中文,似乎是bug 。

在这里插入图片描述


三、keil

1、配置调试器

默认是st-link,需要改成dap-link

在这里插入图片描述

这个不选的话下载后需要手动按下复位键

在这里插入图片描述


2、编写代码

因为我们只配置了led 灯,默认情况下是全亮的。

如果想改的可以参考下面的代码和注释,其中,pc8-15对应led1-8。如果不操作lcd屏幕,pd2可以不操作。但是每次修改led亮灭的时候一定要确保pd2置高电平。


 

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8, GPIO_PIN_SET);   // 打开锁存器,这一步可以没有,因为初始化的时候打开了
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET);   // 熄灭led1
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET); // 点亮led2
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, GPIO_PIN_SET); // 熄灭所有led
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8, GPIO_PIN_RESET); // 关闭锁存器,锁定led

在这里插入图片描述


3、编译烧录

这里和上文一、4中一样,不在复述。


四、问题

1、startup_stm32g431xx.s文件丢失

一般都是因为中文目录。可以去资源包里的lcd例程(这个是官方给的)的目录下复制。

在这里插入图片描述


2、下载后没反应,需要按复位

查看下dap-link调试器设置选项中flash dowmload里的reset and run有没有选中。


3、 下载报错(flash downlo failed-“cortex-m4”)

在这里插入图片描述

添加这个编程算法就可以。

在这里插入图片描述


4、选不中代码

在这里插入图片描述

像这种,甚至还有更离谱的,还能差好几个字母。==重启keil吧!!!==或者和我一样换vscode 写代码。


五、vscode

既然官方给了,那么不用白不用,至少能舒服的敲代码。这边省赛我们这是提前自己去配的环境,所以只要你不在电脑上存代码(存了只要不打开就行),是可以的。具体要看你们赛点的情况。平时可以使用,但是keil一定得会用。


推荐的插件 

这里用keil assistant演示,eide会比较麻烦,但是可以脱离keil。

在这里插入图片描述

我们直接在首页或者文件-打开文件夹,选中工程的MDK-ARM文件夹就可以了

在这里插入图片描述

接下来就是愉快的敲代码

在这里插入图片描述

调试的话,还得是keil。


EIDE

这里提一下eide这个插件。

因为eide需要导入cubemx生成的keil工程文件,而且它使用gcc进行编译,编译后的文件在out文件夹,没法被keil加载。后面想要调试的话,你需要在keil里再编译一次。cubemx添加或者修改配置后,需要重新导入工程,不然会识别不到新的文件,旧的文件也会因为找不到报错。当然,如果你不觉得麻烦,或者一次配置到位,也不是不行。这样可以丢弃keil使用。


总结

点灯成功,就相当于你摸到了门槛。接下来能不能走进门,那就看造化了。后面几期会围绕硬件,进行分析,比较枯燥,大家准备好瓜子、花生、矿泉水哈(bushi)。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70050091/viewspace-3117692/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-01-01

  • 博文量
    35
  • 访问量
    5030