开发环境搭建及驱动移植 2

1 开发环境搭建

前言:

STD库-标准外设库 寄存器操作,将一些基本的寄存器操作封装成函数 

HAL库-硬件抽象库将这些抽象成了一个抽象层,从使用的角度来看,是与硬件无关的 

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

1.1 STM32cubmx安装及使用

1.2 IAR安装及使用

右键以管理员身份运行 再选择第二项 install

破解

参考Iar for STM8/for msp340/for 8051/Iar for arm 等各种版本安装 破 解过程 - 哔哩哔哩

IAR与Keil区别:

  • MDK默认只创建工程,工作区是不会直接创建。如果想多个工程聚合,则首先需要创建一个工作区,然后再添加相应的工程。
  • IAR默认是创建工程和工作区,如果想多个工程并存,直接添加即可.
  • MDK编译时,只有level的选择;IAR有debug和Release的快速选择
  • 默认状态,MDK的工具栏功能比较多,有点繁杂;IAM的比较简洁,但相对,也比较单薄。
  • MDK的程序文件,最后必须要有一个新的空行,否则会有编译警告。

IAR常用快捷键

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

2 M0工程建立

2.1 原理图

2.2  建立IO功能映射表

2.3 cubmx配置

系统时钟

选择时钟源  hse
配置倍频  6
使能锁相环配置系统主时钟为48M

usart1:方便调试

选择异步通信
无硬件流控
设置波特率115200
设置DMA接收

spi:lora和lcd总线都是通过spi驱动 

选择全双工主机模式
硬件片选不使能 lcd和lora用的1个spi,选了会只能驱动一个设备
设置波特率为1.5MBit/s
时钟极性为低电平驱动时钟
相位为第一个边沿

3 Lora固件库介绍

3.1 官方网址:

LoRa Connect Transceiver, SX1278, 137MHz to 525MHz | Semtech

3.2 数据手册:

1276\1277\1278都是一样的手册(我们使用的是1278,美国用的是1276)

3.3 驱动源码文件结构:

src分析:

其中platform(指硬件平台的驱动源码,不同mcu,如m3、m4)

先只关心下面4个文件

包含几个不同的硬件平台的源码sx12xxEiger是操作 LoRa 芯片相关的接口platform.h 中包含驱动库的配置选项 

驱动框架分类

sx1276-Hal.c

3.4 硬件接口设计

 

4 驱动移植

需要移植哪些驱动源码? 如何把源码添加到IAR工程里? 源码文件我们需要修改吗?

4.1 驱动文件移植

4.2 IAR工程文件添加

打开EWARM,右击添加工作组platfrom和radio

error的原因主要有3个

  • 1官方固件库不支持m0
  • 2不支持hal库
  • 3io口不是和开发板一致

4.3 驱动源码修改

4.3.1 修改硬件平台,把宏定义添加到编译器的设置里面

修改包涵路径

4.3.2 修改sx12xxEiger.c,eiger.h采用m0平台,没有usb

 注释前

注释后

初始化工作hal库都做好了,全部注释掉

4.3.3 修改led.c

时钟有关的和初始化内容不需要,注释掉 

找到else,其他的硬件平台不需要看,改完对应io口,去掉以前的时间去掉库定义,hal库不支持。pin1随便写,不用

writepin函数修改 

 

编译成功 

4.3.4 修改sx1276-Hal.c

没有复位功能

 修改后

注释不需要的 

不要init

不需要reset 

 修改writebuff 和readbuff

 

修改readdio,不需要的dio 3、4、5,不需要硬件修改发送和接收的模式 

 

4.3.5 修改sx1276-hal.h

修改定时器函数 

4.3.6 修改spi.c 

为什么要修改spi接口?这边使用了,但是官方没有提供

读写单字节数据 

编译成功 

4.4 LoRa模块上电自检,验证移植成功 

 

搜索的函数复制到main 

包含硬件平台 

读取硬件平台loraID,printf重定向 

 

执行

 

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

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

相关文章

STM32重要参考资料

stm32f103c8t6 一、引脚定义图 二、时钟树 三、系统结构图 四、启动配置 (有时候不小心短接VCC和GND,芯片会锁住,可以BOOT0拉高试试(用跳线帽接)) 五、最小系统原理图 可用于PCB设计

BetterZip for Mac2024最新mac解压缩软件

作为一名软件专家,对于市面上各类软件都有较为深入的了解,下面介绍的是一款适用于Mac系统的解压缩软件——BetterZip,将从其功能特点、使用方法、用户体验及适用人群等方面进行详细介绍。 BetterZip5-安装包绿色版下载如下: htt…

某音乐平台歌曲信息逆向之参数寻找

如何逆向加密参数:某音乐平台歌曲信息逆向之webpack扣取-CSDN博客 参数构建 {"comm": {"cv": 4747474,"ct": 24,"format": "json","inCharset": "utf-8","outCharset": "ut…

c++11 标准模板(STL)本地化库 - 平面类别 - (std::ctype) 定义字符分类表(二)

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 定义字符分类表 std::ctype template< class CharT > clas…

Maven是什么? Maven的概念+作用

1.Maven的概念 Maven中文意思为“专家“、”内行“的意思&#xff0c;它是一个项目管理工具&#xff0c;可以对Java项目进行构建、依赖管理&#xff0c;通俗点 就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包。 2.Maven的作用 对于大的工程&#xff0c;需要引用各…

morkdown语法转微信公众号排版(免费)

morkdown语法转微信公众号排版&#xff08;免费&#xff09; 源码来自githab&#xff0c;有些简单的问题我都修复了。大家可以直接去找原作者的源码&#xff0c;如果githab打不开就从我下载的网盘里下载吧。 效果

IP代理池赋能Python网络爬虫

文章目录 什么是IP代理池代理服务器IP代理池的作用IP代理池的构建IP代理池的管理 相关案例IP代理在爬虫中的运用IP代理在数据收集中的运用IP代理在反爬虫中的运用 结语 什么是IP代理池 IP代理池是一个存储了多个可用代理IP地址的资源池&#xff0c;用于在网络爬虫、数据采集、…

C#属性显示

功能&#xff1a; 显示对象的属性&#xff0c;包括可显示属性、可编辑属性、及不可编辑属性。 1、MainWindow.xaml <Window x:Class"FlowChart.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://sche…

C++(11): 智能指针shared_ptr

1. 概述 shared_ptr智能指针&#xff0c;本质是“离开作用域会自动调整(减小)引用计数&#xff0c;如果引用计数为0&#xff0c;则会调用析构函数”。这样一来&#xff0c;就进化成类似于int、float等的一种会被自动释放的类型。 2. 初始化智能指针 初始化一个智能指针的方式比…

深入理解ThreadLocal原理

目录 1- 什么是ThreadLocal &#xff1f;2- ThreadLocal的作用&#xff1f;ThreadLocal实现线程间资源隔离ThreadLocal实现线程内资源共享 3- ThreadLocal 原理3-1 ThreadLocalMap3-2 ThreadLocalMap的扩容&#x1f511;1. 为什么会发生扩容&#xff1f;&#x1f511;2. Thread…

将图像转换为ASCII艺术形式

将图像转换为ASCII艺术形式 在本文中&#xff0c;我们将介绍一个使用OpenCV库将图像转换为ASCII艺术形式的简单程序。ASCII艺术是一种使用字符来表现图像的艺术形式&#xff0c;通过在终端或文本文件中显示字符的不同密度和颜色来模拟图像。这种技术已经存在了几十年&#xff…

【MySQL】7.MHA高可用配置及故障切换

什么是MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件 mha用于解决mysql的单点故障问题&#xff1b; 出现故障时&#xff0c;mha能在0~30秒内自动完成故障切换&#xff1b; 并且能在故障切换过程中&#xff0…

史上最强 PyTorch 2.2 GPU 版最新安装教程

一 深度学习主机 1.1 配置 先附上电脑配置图&#xff0c;如下&#xff1a; 利用公司的办公电脑对配置进行升级改造完成。除了显卡和电源&#xff0c;其他硬件都是公司电脑原装。 1.2 显卡 有钱直接上 RTX4090&#xff0c;也不能复用公司的电脑&#xff0c;其他配置跟不上。…

ARM FVP平台的terminal窗口大小如何设置

当启动ARM FVP平台时&#xff0c;terminal窗口太小怎么办&#xff1f;看起来非常累眼睛&#xff0c;本博客来解决这个问题。 首先看下ARM FVP平台对Host主机的需求&#xff1a; 通过上图可知&#xff0c;UART默认使用的是xterm。因此&#xff0c;我们需要修改xterm的默认字体设…

C++语言学习(一)——关键字、命名空间、输入输出

1. C关键字 C总计63个关键字&#xff0c;C语言32个关键字 2. 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本…

yolov5关键点检测-实现溺水检测与警报提示(代码+原理)

基于YOLOv5的关键点检测应用于溺水检测与警报提示是一种结合深度学习与计算机视觉技术的安全监控解决方案。该项目通常会利用YOLOv5强大的实时目标检测能力&#xff0c;并通过扩展或修改网络结构以支持人体关键点检测&#xff0c;来识别游泳池或其他水域中人们的行为姿态。 项…

Java入门学习Day04

本篇文章主要介绍了&#xff1a;如何输入数据、字符串拼接、自增自减运算符、类型转换&#xff08;int&#xff0c;double等&#xff09; CSDN&#xff1a;码银 公众号&#xff1a;码银学编程 一、键盘输入练习 Scanner是Java中的一个类&#xff0c;用于从控制台或文件中读…

DOTS:Burst

目录 一&#xff1a;简介 1.1 Getting started 1.2 C# language support 1.2.1 HPC# overview 1.2.1.1 Exception expressions 1.2.1.2 Foreach and While 1.2.1.3 Unsupported C# features in HPC# 1.2.2 Static read-only fields and static constructor support 1.…

STM32-03基于HAL库(CubeMX+MDK+Proteus)输入检测案例(按键控制LED)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式&#xff0c;生成代码四、MDK打开生成项目&#xff0c;编写HAL库的按键检测代码五、运行仿真程序&#xff0c;调试代码 一、功能需求分析 搭建完成开发STM32开发环境之后&#xff0c;开始GPIO…

LC 110.平衡二叉树

110. 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a; root [3,9,20,null,null,15,7]…