每节课都是一个项目 手把手用STM32打造联网气象站-1-安装开发环境

工欲善其事必先利其器,我们为了打造一个可以联网的智能气象站,先得把集成开发环境IDE整利索。

(亮点在最后,读完有惊喜)

我们这个教程的集成开发环境包括了2部分。第一部分是常见的KEIL,本文会讲解KEIL的安装和使用。第二部分是更加常见的vscode,本教程后续主要代码将在vscode中编写。vscode中做代码编辑,显示效果更好一些,而且搜索,查找等功能也更加强大。另外,当我们后续切换为其他编辑环境时,可以方便的继续使用vscode编辑代码,而可以用不同的编译工具进行项目编译。

接下来分为两部分,讲解搭建开发环境。 

  1. KEIL和安装和使用;
  2. VSCODE的安装和使用;
  3. 验证开发环境,完成LED点灯代码下载和执行;

下面将细细道来,一步一步讲解。

1.KEIL的安装和使用

keil破解版满天飞,怎么下载和破戒也不在这里详细描述了。总之下载和破戒基本上属于一个马桶的基本修养。只是有几点注意事项讲解一下。

1.1 安装目录

安装时,尽量安装在D盘,而且把Pack放在安装目录下,这样后面比较好找。

1.2 DFP包

DFP包是为了让编译工具能够识别和支持不同MCU的一些列驱动软件的合集。启动后,点击这个Pack Installer即可完成安装。 

建议直接到网上下载DFP方便后续安装。

MDK5 - STMicroelectronics STM32F103RC (keil.com)

MDK5 - GigaDevice GD32F103RC (keil.com)

相关的DFP数据包,在本教程对应的下载目录中,便于读者直接下载。

1.3 打开示例工程

 

可以在工程目录,直接双击打开工程。

也可以选择Project->Open Project打开工程。

 打开工程之后,我们需要了解上面4个主要图标作用:

1. build,也就是编译。当我们修改一个或者多个文件后,可以选择build进行编译。这个命令只编译修改后的部分。

2. re-build: 这个功能会重新编译全部文件;

3. LOAD: 这个图标将编译好的文件下载到目标板;

4.Option:对目标工程进行配置。Option中选项较多。在这里稍作讲解,便于进行理解。

在后面需要更改的地方,还会进一步讲解作用。

Target中,可以看到默认从0x80000000处,也就是flash开始地址,开始启动,并运行程序。

C/C++部分,会用到这样一些设置。

Define的用法

Define中,预先设定了宏定义。比如我们用STM32ZET6,就需要定义为STM32F10X_HD,这样对应的STM32F10X.H中,就会根据这个定义,选择势能对应的宏定义。注意:STM32F10X.H为公共头文件,无论是用STM32F103C8T6,还是STM32F103RCT6,都用这样同一个头文件。但是,如果是C8T6,这里就会放置STM32F103X_MD。 也就是启动对应的宏定义。

Optimization的定义: 

这里定义了编译器优化等级。优化等级越高,编译器就会优化的越厉害,优化之后对应的代码就会少。

优化等级为0时,编译结果。

优化等级为3时,编译结果,可以看到,代码占据空间明显缩小了。

一般我们默认选择Level0即可,因为过度优化的代码有可能带来不可知的问题,需要更多的时间进行测试。

 C99选项

切换为C99选项后,将支持C99中定义的一些功能。

(48条消息) keil(arm)中配置c99方法 及 C99特性_Z文的博客的博客-CSDN博客_keil中c99

 详细功能在这里有所描述。

其中对日常编程影响较大的包括:

  • 定义变量的位置可以不设置在开头,定义在任意位置
  • inline(内联)关键字:函数与参数不需进栈与退栈
  •  新增数据类型:bool,true以及false 宏  引用long long int

 包含路径

包含路径标记了头文件的位置。我们一般把一类硬件驱动的c文件和h文件放在一个目录下。如果在这里灭有指定头文件的位置,编译过程中就可能会找不到对应位置。

这一点我们在后面教程中,通过实际例子,进行演示。

1.4 下载代码,查看结果

纸上得来终觉浅,绝知此事要躬行。所有代码都是以最终运行结果为准。直接编译,下载,观察运行结果。

2.使用VSCODE编辑代码,并管理工程

VSCode全称Visual Studio Code,是微软推出的一款轻量级的代码编辑器,免费且功能强大。支持各种插件,支持几乎所有的主流程序语言的语法高亮、代码自动补全、括号匹配等。

VSCODE安装也非常简单,安装过程这里不再赘述。在安装好VSCODE之后,通过安装插件,即可顺利运行并管理Keil的工程。

2.1安装INTELLISENSE

安装IntelliSense,这个工具用来更好的识别C语言中的各类关键词,并且进行相应扩展

在扩展选项中,输c/c++即可。完成安装即可,并不需要专门配置。

2.2安装keil assistant

keil assistant让vscode能够识别和管理keil工程设置。

在扩展中输入keil assistant,进行安装。安装后,在右键菜单选择“扩展设置”。

在扩展设置选项中,输入uv4.exe对应的安装目录。

我们这里安装在D盘的目录,把目录信息输入即可。

安装成功后,会出现红框中的打开工程的标志。我们进行工程打开即可。

 2.3 用VSCODE管理Keil代码

首先进入工程项目对应的目录。然后鼠标右键菜单,开启vscode。

从右上角图标,打开工程即可。

  2.4 用vscode编译和下载

vscode中包含编译,重编,下载3个选项,在这里可以直接完成对应工程项目编译和下载。当然,这个编译和下载还是调用的是后端keil的功能,这也是为何前面需要把uv4.exe的路径设置到vscode中的原因。

 现在就动手,把对应工程编译下载试试看吧。

(24条消息) led点灯代码。代码简单,主要用来验证开发环境。开发环境采用vscode+keil,详见博文-嵌入式文档类资源-CSDN文库

纸上得来终觉浅,绝知此事要躬行!

接下来会一步一步带你完成家庭气象站的开发工作,敬请收藏关注,以免下次找不到了。

3.教程目标

本教程将带你一步一步完成一款带有联网功能的家庭气象站的开发。该产品具体功能如下:

1.带有TFT LCD液晶屏,可以显示不同的温度,湿度,高度,气压信息;

2. 采用LVGL驱动,使用LVGL专业组件,显示效果流畅;

3. 具有丰富的环境检测传感器,包括温湿度传感器,气压高度传感器,环境照度传感器等;

4. 具有加速度传感器,可利用加速度传感器记录振动数据;

5. 带有数据记录仪功能,可以把加速度数据,温湿度数据,高度数据,气压数据,环境数据用文件方式,记录在SD卡中;

6.  具有旋转编码器,通过旋转编码器可控制界面左右滑动;

7. 丰富的联网功能:采用WIFI联网,连接到阿里云MQTT,获取实时天气信息,并可以将数据信息上报阿里云;

为了达到上面目标,我们将教程分为三个阶段:

入门阶段: 熟悉驱动和传感器,能够裸机加载各个传感器和屏幕,完成第一版家庭气象站功能。具体来说,就是不带操作系统,不带LVGL,加载各个传感器,屏幕,SD卡,将数值在屏幕上面显示,并保存在SD卡中进行记录;

1.启动后,带有菜单项,菜单分为:1.1番茄钟;1.2 摩斯密码翻译机;1.3 家庭气象站;1.4 数据记录仪;1.5 柔性压力测试仪。 点进去之后,实现对应的功能;

2. 番茄钟:2.1通过按键,设置倒计时时间;2.2 设置启动,停止;2.3 蜂鸣器采用类似苹果手机滴滴滴滴的声音;2.4 屏幕启动后,显示剩余时间;2.5 屏幕显示完成的番茄数量;

3. 摩斯密码翻译机:3.1串口接收字母,并将字母翻译成为摩斯密码;3.2 屏幕显示串口输入的英文和摩斯密码;3.3 LED和蜂鸣器播放对应的摩斯密码;3.4 按键可以启动或者停止反复播放;

4. 气象站:显示环境温度,湿度,气压,高度,环境亮度,加速度等信息;同步通过串口输出对应信息;

5. 数据记录仪:将上述信息通过SD卡保存成为文件方式,并记录对应的RTC时间;

6.柔性压力测试:通过ADC测量柔性压力传感器的压力值,并且通过屏幕显示,通过串口输出;

提高阶段:采用LVGL中的各个元素,重新开发屏幕和输入的交互逻辑,使得产品更加美观和专业化。其他功能继续保持。完成这个阶段后,产品开发效果达到商业应用的上层水平;

联网阶段:这个阶段主要是关系到联网功能的开发和实时,包括如何通过AT指令,提交MQTT订阅消息,MQTT发布消息,如何将消息暂存,统一发布到服务器,如何从服务器获取天气预报信息和时间信息,如何进行信息的解析和合成等。这个阶段,您将学习到如何真正完成一个商业级别数据记录仪,或者说环境检测仪的源码,以及对应的开发步骤。

上面三个步骤完成后,基本上打通了STM32开发的任督二脉,可以在上面项目基础上,基本上完成基于STM32的各类不同项目的开发。

为何第一步采用裸机开发?

因为裸机开发门槛较低,不需要掌握操作系统等知识,同时可以全面掌握STM32以及主要外设的不同配置情况。

采用LVGL开发界面有何区别?为何专门把它放在提高阶段?

LVGL是一种类似于操作系统的开源软件。利用LVGL开发UI界面 ,可以使得UI界面更加美观流畅。同时通过学习和联系LVGL的不同元素,也可以增加对软件代码的掌控力。

联网阶段主要起到什么作用?

不联网的单片机,不是好单片机。设备联网已经成为行业标准,如何处理联网过程中的注册,消息发送,消息接收,消息解析?通过联网部分开发,就可以深入理解这方面内容,进一步提示对代码的理解力,并且积累更多的轮子。

本教程不仅仅让你了解STM32开发过程中的知识点,更加重要的是,本教程让你积累很多STM32开发过程中的轮子。你手边积累的轮子越多,你就能够越快的完成你自己的产品或者项目的开发。

敬请收藏关注,以免下次找不到了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值