LoRa 开发环境搭建

STM32CubeMX 安装及使用

STM32CubeMX 简介

市面上常见的 LoRa 模块都是搭配 STM32 芯片的单片机来使用的,所以使用 ST 公司的软件和产品是入门学习 LoRa 开发的必要一环。

STM32 单片机是 ST(意法半导体)公司使用 ARM 公司的 Cortex-M3 为核心生产的 32 位系列的单片机。

STM32 字面含义:

  • ST ——意法半导体(一个公司名),即 SOC 厂商。

一个芯片比如 STM32 里面有内核(ARM),而内核 ARM 由 ARM 公司( IP 厂商)生产,外设由 ST 公司( SOC 厂商)生产,再此基础上添加各种外设,比如 GPIO, IIC 等。

  • M —— Microelectronics 的缩写即微控制器。

注意: 微处理器在微控制器的基础上有 MMU(内存管理单元),一般微控制器不跑系统,编写的程序为裸机例程。

  • 32 —— 32 bit,表示是一个 32 位微控制器。

单片机位数指 CPU 处理的数据的宽度,参与运算的寄存器的数据长度。32 位单片机的数据总线宽度为 32 位,通常可直接处理 8 位或 16 位或 32 位数据。

使用到 LoRa 的时候不可避免会用到 STM32 上面的串口、IIC、RTC 时钟等功能,所以我们会需要对这些外设进行初始化、配置等操作。传统的 STM32 配置和开发可以单独开一门课来讲了,难度比较大,所以我们需要借助 ST 公司的 STM32CubeMX 软件来简化配置的门槛。

STM32CubeMX 是意法半导体推出的图形化配置工具,通过傻瓜化的操作便能实现相关配置,最终能够生成 C 语言代码,支持多种工具链,比如 MDK、IAR For ARM、TrueStudio 等。尤其值得一提的是,TrueStudio 已经被 ST 收购,提供完全免费的版本,并且,通过插件式安装,可以将 STM32CubeMX 集成在一个 IDE,使用十分方便。

直白点来说,我们可以直接通过图形化的方法,用 STM32CubeMX 这款软件完成一些外设的配置,它能够通过我们的选择,自动为我们生成配置外设所需的代码,大大提高了我们的效率。

STM32CubeMX 的优势:

  • 直观的选择 STM32 微控制器;
  • 微控制器图形化配置:

自动处理引脚冲突

动态设置确定的时钟树

可以动态确定参数设置的外围和中间件模式和初始化

功耗预测

  • C代码工程生成器覆盖了STM32微控制器初始化编译软件,如IAR、KEIL、GCC可以独立使用,作为Eclipse插件使用。

HAL 库与 STD 库

库的概念大家应该不陌生,通常时候我们用到的一些传感器读取数据的函数,都是工程师们在库里面完成的底层代码编写。同样的,ST 的工程师们也为他们的 STM32 外设编写了不少外设库给我们调用,目前 ST 的库大致可以分为两大类:STD 库和 HAL 库。

  • STD ——标准外设库:寄存器操作,将一些基本的寄存器操作封装成函数;
  • HAL ——硬件抽象库:将这些象成了一个抽象层,从使用的角度来看,是与硬件无关的。

STD 库是早期 ST 推出的标准库,广泛应用在高校教育当中,库中对常见的一些寄存器功能进行了封装,成为了一个个独立的文件包。但是由于后来ST公司主推HAL库,STD 库已经缺少维护,并且文件需要自己去布局安排放置位置、使用门槛高,渐渐被HAL库所替代。

HAL 库优势:

  • HAL 库是 ST 未来主推的库,从 2015 开始 ST 新出的芯片已经没有 STD 库;
  • HAL 库的处理机制比 STD 库好很多,HAL 库支持 STM32 全线产品;
  • HAL 库跨芯片的可移植性非常好。

STM32CubeMX 安装

第一步:STM32CubeMX 依赖 Java 环境,JRE 官方下载地址:Java Downloads | Oracle。以本文开发环境为例,选择 Windows x64,特别注意,需要选择 Accept License Agreement 才可以下载。

(百度网盘下载链接:百度网盘 请输入提取码 提取码: 1p7o)

第二步:在 ST 官网选择对应版本的 STM32CubeMX 进行下载,下载时会要求你填邮箱信息,之后下载的链接会通过邮箱发送给你。在安装 SetupSTM32CubeMX.exe 时,最好不要有中文路径

(百度网盘下载链接:百度网盘 请输入提取码 提取码: a9fm)

第三步:STM32CubeMX 固件包导入

固件包就是要选择我们 LoRa 开发板对应的 STM32 芯片类型,只有加载了正确的固件包,软件才能显示正确的芯片供我们配置。

首先需要检查固件包的路径,是否是中文路径,如果是中文的路径,修改路径。路径同样不能包含中文,具体修改固件包路径操作如下图所示:

导入固件包有两种方式:

  1. 方法一:在有网络的情况下,直接在线下载

我们的教程使用的是 STM32F051K8 这款芯片,所以下载的固件包是 STM32F0。

  1. 方法二:导入固件包文件

STM32CubeMX 创建工程

万事俱备之后,我们就开始创建我们的配置工程,步骤可以参考下面的图片。

选择好芯片之后,就可以看到芯片的图片显示在屏幕的中心位置。这个时候我们只需要通过简单地点击 GPIO 引脚,就可以将它配置成我们所需要的模式。

像在这里,我们就可以设置PA8引脚为输出模式:

完成工程的创建工作之后,我们还需要对工程进行一些常规配置:

完成配置之后,我们点击右上角的 “GENERATE CODE” 即可生成代码文件。

IAR 安装及使用

IAR 介绍

上一节内容带领大家尝试使用了一下 STM32CubeMX 来生成一个配置 PA8 引脚为输出模式的项目,但是这个项目我们应该使用什么软件来打开方便我们之后的开发步骤呢?在本篇教程中,我们选择的是 IAR 这款软件。

IAR Systems 是全球领先的嵌入式系统开发工具和服务的供应商。公司成立于 1983 年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有 C/C++ 编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。

IAR Keil

IAR 即 IAR Embedded Workbench,Keil 即 Keil MDK-ARM,这两款都是 ARM 开发工具。那么,IAR 与 Keil 两款开发工具区别在于哪里呢?

Keil 可以自动配置启动代码,集成 Flash 烧写模块,而且支持性能分析功能;

而 IAR 是一套用于编译和调试嵌入式系统应用程序开发工具,支持汇编、C 和 C++ 语言,为伙伴们提供了完整的集成开发环境,而且还包括管理器、编辑器等。

Keil 默认只创建工程,工作区是不会直接创建的。如果想多个工程聚合,则首先需要创建一个工作区,然后再添加相应的工程,相对比较繁琐。

IAR 默认是创建工程和工作区,如果想多个工程并存,直接添加即可。

Keil 编译时,只有 level 的选择;IAR 有 debug 和 Release 的快速选择。

默认状态,Keil 的工具栏功能比较多,有点繁杂;IAM 的比较简洁。但相对,也比较单薄。Keil 的程序文件,最后必须要有一个新的空行,否则会有编译警告。

IAR 安装

第一步:从官网下载IAR软件(IAR Embedded Workbench for Arm - Free trial version | IAR Systems)

(百度网盘下载链接:百度网盘 请输入提取码 提取码: 0no0 )

第二步:参考以下图片步骤完成软件的安装

附:破解方法参考(https://www.jb51.net/softs/767867.html)

(破解工具百度网盘下载链接:百度网盘 请输入提取码 提取码: 81e1 )

IAR 使用

我们先来记忆一些 IAR 的常用快捷键:

  1. CTRL + B 括号匹配选择括号内的多行代码;
  2. CTRL + T 自动缩进,格式化选中代码;
  3. CTRL + K 快注释,屏蔽选中的代码;
  4. CTRL + SHFT + K 取消快注释,取消屏蔽选中的代码。

这里我们使用在前面 STM32CubeMX 生成好的项目举例说明 IAR 软件的使用,打开 STM32CubeMX 生成好的工作区,首先启动 IAR 软件。

生成的工程文件位置在 EWARM 文件夹下,后缀为 .eww 的文件。

打开工作区之后我们可以看一下工作区的目录以及文件。

STM32CubeMX 生成的工作区文件夹分类相当清晰。目录树下分成了两个文件夹 ApplicationDrivers,将所有的库文件分成了应用外设两个部分。对于 Application 文件夹的内容,一方面是启动芯片的配置库(在 EWARP 文件夹中),另一些就是用户的配置文件(在 Core 文件夹中)。用户配置的文件在图片当中就有 gpio.c(引脚配置)、main.c(主函数)、stm32f0xx_it.c(中断配置)等。

STM32F0xx_HAL_Driver 文件夹里面就是基于 HAL 库的外设配置代码,可以通过名称清晰地看到有 IIC、DMA、RCC 等的配置,当然了,由于我们刚才并未在 STM32CubeMX 中开启这些功能,所以部分内容可能是空白的。

在习惯上,我们打开工作区之后的第一步应该右击项目的名称,选择 “Make” 对工程进行编译,检查是否有错误。

只有编译没有问题,我们才能继续之后的开发步骤。

LoRa开发与应用之路二相关推荐

  1. LoRa开发与应用之路八

    LoRa 智慧牧场项目集成开发 在前面的课程内容当中,我们已经学习完了一整套 LoRa 开发的过程,并且在前面一节实现了基于时分复用 MAC 协议的自组网络设计,可以说已经具备了 LoRa 集成开发的 ...

  2. 【经验谈】开发工程师人生之路

    相对同时刚出校门同学从事其它行业而言优厚的薪水,以及不断学习更新的专业知识不仅仅让你感到生活的充实,更满足了你那不让外人知的虚荣心.在刚出校门的 几年中,你经常回头看看被你落在后面的同学们,在内心怜悯 ...

  3. 作为大龄开发人员,敢问路在何方?

    相对同时刚出校门同学从事其它行业而言优厚的薪水,以及不断学习更新的专业知识不仅仅让你感到生活的充实,更满足了你那不让外人知的虚荣心.在刚出 校门的几年中,你经常回头看看被你落在后面的同学们,在内心怜悯 ...

  4. 【CTO讲堂】双创背景下的移动开发及变现之路

    为了帮助IT从业者职业之路拥有更多收获,在诸多C粉的殷切期待下,由CTO俱乐部打造的CTO线上讲堂自登场以来获得大家好评.本期邀请AppCan CTO赵庆华带来双创背景下的移动开发及变现之路的主题分享 ...

  5. ES进阶之路二(ES7-ES12)

    简介 JavaScript是世界上发展最快的编程语言之一,不仅可以用于编写运行在浏览器的客户端程序,随着Node.js的发展,JavaScript也被广泛应用于编写服务端程序.而随着JavaScrip ...

  6. Lora开发板Flash存储读写

    · 本文会介绍如何用Lora开发板一步步实现Flash存储读写(基于STM32L151C8T6芯片) 一.看题 二.读题,明白我门最终要实现成什么样的效果        题目的要求就是板子通上电,LE ...

  7. ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14(ES进阶之路二)

    简介 JavaScript是世界上发展最快的编程语言之一,不仅可以用于编写运行在浏览器的客户端程序,随着Node.js的发展,JavaScript也被广泛应用于编写服务端程序.而随着JavaScrip ...

  8. [3]PCB设计实验|LoRa通信技术|LoRa技术介绍|LoRa开发与应用|物联网学习|3月27日+6月5日

    目录 一.LoRa名字由来 二.LoRa是什么 三.LoRa联盟和LoRaWAN介绍 3.1LoRa联盟(LoRa Alliance) 3.2LoRaWAN 3.3LoRaWAN和LoRa的区别 四. ...

  9. 嵌入式开发工程师进阶之路

    嵌入式开发工程师进阶之路 一.从微控制器开始 从微控制器的最小系统入手,以其为核心,选择相应电子元件加上最小系统在面包板或洞洞板上搭建硬件电路,并在嵌入式开发工具下使用C语言编写.编译.连接.链接.调 ...

最新文章

  1. js根据经纬度取随机附近经纬度
  2. 使用 CrossOver 在 Linux运行 Windows 软件(金测OK)
  3. docker安装mysql并实现远程访问
  4. 编写测试用例的常用方法
  5. C++学习笔记(四)----关于参数传递(1)
  6. IDOC实例, Outbound IDOC
  7. 你让,勋爵? 使用Jenkins声明性管道的Docker中的Docker
  8. Maven手工管理项目
  9. 堆排序,为什么升序排列要建大堆,降序排列要建小堆
  10. python random
  11. 【bzoj2929】[Poi1999]洞穴攀行 网络流最大流
  12. nodejs学习文档(一) 认识node.js
  13. 行为型设计模式(4)—— 观察者模式(Observer Pattern)
  14. python mysql捕获异常_python mysql无法捕获异常
  15. EF6学习笔记十:原始查询,在EF中使用SQL语句
  16. 同济版《线性代数》再遭口诛笔伐,网友:它真的不太行
  17. 为什么电脑屏幕会横过来_电脑屏幕倒过来了怎么办?电脑屏幕横过来了怎么办?...
  18. Maven打包出现:Filed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.3.2.RELEASE:
  19. dns配置异常怎么修复_dns配置异常不能上网如何修复
  20. oop部分,构造方法,this的使用。

热门文章

  1. 智能工作平台那么多,我们为什么选择了华为云WeLink?
  2. 信号发生器的作用和组成(功率放大器和信号发生器搭配)
  3. 信号与系统分析2022春季作业-参考答案:第三次作业-第一部分
  4. 键盘监听器————在飞机大战中的利用(移动,加速,发射子弹,一应俱全)
  5. sklearn数据挖掘之评论舆情分析
  6. 游戏出海,全球化运营
  7. 计算机机房用英语怎么读,网络机房,network computer room,音标,读音,翻译,英文例句,英语词典...
  8. android系统平台显示驱动开发简要:LCD基本原理篇『一』
  9. SAP ABAP QA01屏幕增强 SMOD QPL10004
  10. 干货丨如何使用Orca开发量化策略?