稚晖君项目复刻:L-ink门禁卡(1)——环境搭建与第一个项目创建

行文目录

  • 前言
  • 其他文章
  • 正文开始
    • STM32CubeMX安装
    • STM32CubeMX安装L0的固件支持包
    • Clion安装
    • OpenOCD安装
    • MinGw安装
    • arm-none-eabi-gcc安装
    • Clion配置
  • 创建STM32工程
    • 创建STM32CubeMX工程
    • 更改芯片型号
  • 参考文献

前言

    其实关于稚晖君的L-ink门禁卡在我本科阶段就已经刷过好几次了,我也是从那次视频开始认识稚晖君大佬的,在此先十分感谢大佬提供的项目思路和开源资料(说起来稚晖君大佬也算我某种程度上的前辈了)。

    这是我第一次尝试做嵌入式项目,将过程记录在本系列博客中,本篇为第一部分。众所周知,工欲善其事,必先利其器,STM32开发我之前用的是MDK5,那已经是大一到大二期间的事情了,后面笔者接触了pycharm,IDEA等jetbrain公司的IDE后,真的深深被这种IDE戳中了,恰巧,本次稚晖君的项目也是用的jetbrains另一个用来编写C++的编译器Clion,因此本篇就来手把手教大家配置Clion,STM32CubeMX进行32开发。

其他文章

正文开始

STM32CubeMX安装

    STM32CubeMX直接去官网下载即可:STM32CubeMX下载地址。来到官网后,我们看到下图的界面,点击Get Software获取下载位置。
   
STM32Cube的下载地址
    点击之后会跳转到下面选择版本,这里我下载的是win版的6.9.0。点击后会有个许可证同意,点击Accept就开始下载其setup.exe文件,如下图所示
   
在这里插入图片描述在这里插入图片描述
    之后我们就会得到一个zip文件,解压后就会在文件夹里面发现setup文件,双击该setup文件。就会出现安装界面。按照下图所示的步骤进行安装即可。
   
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
    上面点击完Done即完成安装辽。

STM32CubeMX安装L0的固件支持包

    由于本次开发使用的MCU是STM32L051K8,因此需要再STM32Cube里下载L0的固件支持包。

    打开刚刚安装好的STM32Cube,点击INSTALL/REMOVE。
   
在这里插入图片描述
    我们向下找到STM32L0,勾选框中内容并install,第一次需要各位登录一下,没有账号的就注册一下,最后有一个必填的ZIP/POSTNUM(具体是什么有点记不清了),直接填写邮编地址就行了。下图是已经下载完的样子。
   
在这里插入图片描述
    至此我们又离成功近了一步,我们已经完成了STM32Cube的L0固件支持包

Clion安装

    首先声明,大家支持正版,有能力还是请购买正版,学生也可以每年凭借学信网信息向jetbrains申请学生激活码,此处分享Clion的安装和po_jie,参考徐师兄源码站的教程,原文链接在文末参考文献[3];

    Clion下载可以直接去Clion的官网下载:Clion下载地址。建议下载2021以上的版本。进入官网后直接点击Download下载,下载后直接双击setup.exe进行安装即可。

在这里插入图片描述
    按照如下的步骤安装即可,中间有安装选项,我们全选也可,按需勾选也可,笔者这里是全部勾选。
   
在这里插入图片描述
在这里插入图片描述
    安装完成后关闭Clion,我们需要去下载破解工具,这里感谢公开bu_ding的前辈,可以关注公众号 徐公,回复CLion即可免费获取破解补丁。后续我会分享网盘链接,大家也可直接从网盘下载(但是链接不知道能活多久,前面的公众号比较稳妥)。

    **注意事项:路径不要有中文!!!**下图是解压jetbira.zip后的样子。
在这里插入图片描述
    打开 scripts 文件夹,先执行 uninstall-current-user.vbs的脚本文件,这一步是清楚已有的激活信息,保证后面的正常进行。
   
在这里插入图片描述
    等到跳出Done弹框即说明成功了!!
在这里插入图片描述

    之后再执行 install-current-user.vbs脚本,这一步时间比较长
在这里插入图片描述
    需要等一段时间,等到出现第二个Done的弹框才算完成
在这里插入图片描述
    之后我们打开Clion,输入激活码。激活码在如下文件夹中。
在这里插入图片描述
    如果显示invalid并且Activate按钮点不了,可以重启电脑,在复制粘贴激活码
   
在这里插入图片描述
    至此就有了一个很好用的C++IDE了。

OpenOCD安装

    OpenOCD是用于对STM32进行下载仿真的工具,是一个开源软件包,其下载位置为:OpenOCD下载

    我们回来到下面的界面,笔者习惯下最新的下一个版本(总觉得新版本可能会遇到奇奇怪怪的bug,而稍微旧一点的功能又新又稳定)。
在这里插入图片描述
    点击后我们会下载.7z的压缩文件,我们找好地方解压就行了,之后需要在Clion中配置。解压后的文件目录如下图所示:
   
在这里插入图片描述

    回到Clion,我们点击左上角的横杠,点击settings,如下图所示,我们也可以按下快捷键:Ctrl+alt+s打开settings。
在这里插入图片描述
在这里插入图片描述
    记下来我们打开Build,Execution,Deployment -> Embedded Evelopment,此时我们需要修改OpenOCD的位置和STM32Cube的位置,这两个位置就是我们上面刚安装的OpenOCD下的opencd.exe文件STM32CubeMX.exe文件
   
在这里插入图片描述
    至此为止,Clion中也配置上了32的下载仿真工具并绑定了STM32Cube了。

MinGw安装

    Clion需要MinGW环境配置ToolChain,MinGW的下载:MinGW下载地址
    打开后我们进入如下的界面下载setup.exe,获取该下载器需要花费一些时间
   
在这里插入图片描述
    双击setup.exe进行安装,按照如下步骤安装安装管理器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
    安装完成后,选择Basic Setup 选择组件进行安装,没安装的话是空白状态。我们要选中的话就右键选择Mark for Installation即可。选择完成即可看见图标中出现了一个箭头。要取消勾选也是右键,按Unmark
   
在这里插入图片描述
    我们选中的如下所示,由于笔者已经安装过了,因此全是绿色的,我们这里是全勾选的,各位也可以按需勾选,勾选步骤如上所示。
在这里插入图片描述
    勾选完成后左边框中会出现箭头,此时我们要安装需要找到左上角的installation,然后点击Apply Changes
   
在这里插入图片描述
    点击Apply进行安装。
   
在这里插入图片描述
    安装完成后出现如下页面,点击close关闭,此时我们就安装好minGW了。
   
在这里插入图片描述
    接下来我们配置环境变量,打开系统属性找到环境变量
   

在这里插入图片描述

    在系统变量中,选择Path进行编辑,

在这里插入图片描述
    添加mingw安装路径下的bin文件夹
在这里插入图片描述
    重启电脑,然后打开命令行,输入 gcc -v ,验证是否下载成功。注意,红框是版本,与我们上面minGW installation Manager的版本要一致,否则不是我们刚装的版本。
在这里插入图片描述
    至此,我们已经完成了minGW的安装

arm-none-eabi-gcc安装

    gcc-arm-none-eabi是GNU项目下的软件,是一个面向裸机arm的编译器。下载地址:arm-none-eabi-gcc下载,一直往下滑,找到如下界面,下载win版本的zip文件

在这里插入图片描述
    将其解压缩到一个文件夹,下面我们添加环境变量,还是打开系统属性,找到环境变量,打开系统变量的Path,同样是添加GNU-Tools-ARM-Embedded下的bin文件夹
   
在这里插入图片描述
    再次重启电脑,输入arm-none-eabi-gcc -v 查看版本信息检查是否安装成功,出现版本信息即成功
   
在这里插入图片描述

Clion配置

    按照OpenOCD安装那章节,打开Clion的settings。找到Build,Execution,Develoyment选项卡,在ToolChains里面添加MinGW的环境。选择了Toolset后,CMake会自动调整,按照稚晖君的博客,我们先暂时不动Debugger选项。注意这个Name,下一步有用。
   
在这里插入图片描述
    确认一下CMake环境,我们看到Toolchain使用的是我们上面创建的Name为MinGW的即说明是对的。
   
在这里插入图片描述
    至此为止,恭喜你,环境工程完成!!!

创建STM32工程

创建STM32CubeMX工程

    点击右上角的New Project创建新工程

在这里插入图片描述
    选择左边的STM32CubeMX,创建CubeMX工程,右边的Location选择项目位置,记住这个项目名称test(可以自定义,但是一定要记住,后面有用!!!),然后点击create创建工程
   
在这里插入图片描述
    创建后跳出来如下界面,先点击skip/cancel即可,没跳出来也无妨。

在这里插入图片描述
    这里我们默认的芯片为STM32F030F4Px。我们点击中间的Open with STM32CubeMX就可以打开STM32CubeMX进行引脚分配,和keil一样,也可以更换芯片

在这里插入图片描述
    点击Project Manager,我们配置一下项目

在这里插入图片描述

    这里的项目名就得和Clion创建的工程名一致,所以刚刚创建Clion的时候让大家记住,后面的Toolchain/IDE我没有找到SW4STM32,只有STM32CubeIDE,此处和稚晖君的不太一样。

    然后我们点击右上角的GENERATE CODE

在这里插入图片描述
    出现如下所示的信息表示创建完成,我们点击close即可。

在这里插入图片描述
    回到Clion,还是跳出这个,这是让我们选择板卡,这些配置文件和OpenOCD下载程序有关,里面的板子可能是没有我们自己要用的型号的,这里先继续取消。

在这里插入图片描述
    我们点击左边的三角形,调出cmakeDebug,然后点击刷新按钮可以更新CMake工程,如下没有错误提示就表明工程配置是没有问题的。

在这里插入图片描述

更改芯片型号

    我们要更改芯片型号的话,就回到STM32CubeMX,如果关闭的话就重新点击中间的Open with STM32CubeMX,找到左上角的STM32F030F4Px,这里可以打开更改芯片的页面

在这里插入图片描述

    先点击左上角的刷新按钮,调出所有芯片,然后我们本项目用到的MCU是STM32L051K8,因此选择该型号,然后在打击右上角的Start Project即可更改芯片型号。

在这里插入图片描述
    我们可以看到中间的芯片已经变了,此时我们需要再回到ProjectManger重新输入项目名称和ToolChain。
在这里插入图片描述

    这里和之前一样,一定要注意Project Name要和Clion一致,然后点击GENERATE CODE

在这里插入图片描述
    这是是说已经有一个一样的ioc了,但是我们项目名称一样的,是否覆盖,我们选择yes

在这里插入图片描述

    之后同样会问我们是否打开文件,我们依旧close,回到clion,我们发现中间的芯片型号已经变了,下面的cmake也更新了,右边也会跳出提示(有两段的其实,没截好)

在这里插入图片描述
    至此已经完成项目创建了,感谢观看!!

参考文献

[1] L-ink Card开源地址
[2] 配置CLion用于STM32开发【优雅の嵌入式开发】
[3] Clion的安装,p_jie
[4] MinGW下载和安装详细步骤 及 环境配置
[5] STM32高级开发——gcc-arm-none-eabi
[6] STM32CubeMX联合CLion开发环境搭建
[7] STM32 CUBEMX 修改单片机型号 个人操作记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/104770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32_DHT11单总线温湿度传感器驱动

基于STM32_DHT11单总线温湿度传感器驱动 文章目录 基于STM32_DHT11单总线温湿度传感器驱动前言一、DHT11?二、原理1.时序1.主机复位信号和 DHT11 响应信号2.信号‘0’的表示3.信号‘1’的表示4.整个数据信号收发流程 2.数据结构 三、驱动1 .h文件:2 .c文…

如何正确的关闭Redis服务器

Redis官方原生版本是在Linux平台上开发和测试的,但是大多数初学者都是使用Windows系统来学习如何开发的。因此,官方提供了一个叫做“Microsoft Open Tech Redis”的项目,该项目专门为Windows平台提供了一个官方支持的Redis版本,但…

智慧公厕:打破传统,解决城市痛点@中期科技

近年来,随着城市化进程的加速推进,智慧公厕成为人民生活质量提升的重要组成部分。作为一个富有创新和科技感的解决方案,智慧公厕不仅满足了人们对公共环境的要求,还提供了一系列便利的服务,让人们的生活更加舒适、便捷…

最新在线IDE流行度最新排名(每月更新)

2023年10月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多,人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧,那么TOP ODE索引可以帮助您决定在软件开发项目中…

Nginx解析漏洞

常见的解析漏洞&#xff1a; IIS 5.x/6.0解析漏洞 IIS 7.0/IIS 7.5/ Nginx <0.8.3畸形解析漏洞 Nginx <8.03 空字节代码执行漏洞 Apache解析漏洞 Nginx文件解析漏洞 对于任意文件名&#xff0c;例如:cd.jpg在后面添加/x.php后&#xff0c;即可将文件作为php解析。 原理…

Flink中的时间和窗口

Flink中的时间和窗口 在传统的批处理系统中&#xff0c;我们可以等到一批数据全部都到齐了之后&#xff0c;对其做相关的计算&#xff1b;但是在实时处理系统中&#xff0c;数据是源源不断的&#xff0c;正常情况下&#xff0c;我们就得来一条处理一条。那么&#xff0c;我们应…

函数栈帧的创建与销毁(保姆级讲解)

局部变量是怎么创建的? 在为main函数开辟栈帧空间时&#xff0c;在一定范围内初始化成0CCCCC&#xff0c;再把里面0CCCC的一些开辟空间给局部变量使用。 为什么局部变量的值是随机值? 因为我们在为main函数开辟栈帧空间时&#xff0c;会将一定范围内空间初始成0CCCCCC里面…

Avalonia使一个弹窗弹到指定位置

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 3.样式预览 4.PositionControl.axaml <UserControl xmlns"https://github.com/avaloniaui&quo…

华为数通方向HCIP-DataCom H12-831题库(单选题:201-220)

第201题 如图所示,路由器所有的接口开启OSPF,链路的Cost值如图中标识。若在R2的OSPF进程中通过命令import-route direct type 1引入直连路由,则R1到达10.0.2.2 /32的Cost值是以下哪一选项? A、150 B、151 C、200 D、201 答案:C 解析: Loopback0的cost值默认为0,R1-R2的…

AI 律助 Alpha GPT 线上实操发布会,重磅发布!

数字化时代,随着人工智能的迅猛发展,各行各业都在积极探索通过智能化工具实现工作效率翻升的可能性。“ ChatGPT 类产品”是未来办公应用软件发展的重要趋势之一,但如何将 ChatGPT 真正应用于法律人的工作,赋能效率提升?法律行业同样面临着新的挑战和机遇。 破局的关键是实现技…

DevExpress Reporting中文教程 - 如何在macOS等系统中生成导出报表文档

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 在本文中&#xff0c;我们将讨论如何在.NET MA…

基于Java的二手车交易管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

访问控制列表ACL讲解——想偷偷访问数据,我ACL可不同意

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 梦想从未散场&#xff0c;传奇永不落幕&#xff0c;博主会持续更新优质网络知识、Python知识、Linux知识以及各种小技巧&#xff0c;愿你我共同在CSDN进步 目录 一、ACL的基本概念 1. ACL是什么 2. 为什么需…

从零开始学习 Java:简单易懂的入门指南之线程同步(三十五)

线程同步 1.线程同步1.1卖票【应用】1.2卖票案例的问题1.3同步代码块解决数据安全问题【应用】1.4同步方法解决数据安全问题【应用】1.5Lock锁【应用】1.6死锁 2.生产者消费者2.1生产者和消费者模式概述【应用】2.2生产者和消费者案例【应用】2.3生产者和消费者案例优化【应用】…

C++程序加速方法

C程序加速方法 1. 将反复使用的数据存放在全局变量里面2. 使用多线程3. 用a和a&#xff0c;a–,--a4. 减少除法运算5. 尽量减少值传递&#xff0c;多用引用来传递参数。6. 循环引发的讨论1&#xff08;循环内定义&#xff0c;还是循环外定义对象&#xff09;7. 循环引发的讨论2…

出游热潮再起,IPIDEA代理IP帮你应对旅游数据采集的挑战

随着互联网的快速发展&#xff0c;旅游行业也随之迅速发展。在线旅游预订已经成为人们出行前的必要步骤&#xff0c;然而&#xff0c;旅游信息的采集却是一项具有挑战性的任务。为了从酒店和航空公司网站、在线旅行社和其他类似来源收集数据&#xff0c;企业需要克服许多障碍。…

valarray 包含对象成员的类(cpp14章)

C代码重用 1.公有继承可以实现 2.包含、私有继承、保护继承用于实现has-a关系&#xff0c;即新的类将包含另一个类的对象。 &#xff08;使用这样类成员&#xff1a;本身是另外一个类对象称为包含 &#xff08;组合或层次化&#xff09;。&#xff09; 3.函数模板、类模…

GoLang连接mysql数据库

跟着文档走GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 1.使用命令拉取 go get -u gorm.io/gorm go get -u gorm.io/driver/sqlite2.开始使用 package mainimport ("fmt""github.com/gin-gonic/gin"&…

虚幻阴影整理

虚拟阴影贴图&#xff08;VSM&#xff09;是一种全新的阴影贴图方法&#xff0c;可以提供稳定的高分辨率阴影。通过与虚幻引擎5的Nanite虚拟几何体、Lumen全局光照和反射以及世界分区功能结合使用&#xff0c;它能够实现电影级的品质效果&#xff0c;为大型开放场景提供光照。 …

mysql case when 不命中缓存

case when 在sql 中非常方便数据不同维度统计&#xff0c;但是也会出现mysql 索引不命中问题&#xff0c;当多个case 出现时&#xff0c;需要提取出来到where里面优化 优化后 SELECT date(RecordTime) AS date, count( DISTINCT CASE WHEN Param 1 …