一、STM32CubeMX加载固件库

将F0固件库添加进来在这里插入图片描述

二、IAR介绍、安装及快捷操作

(一)IAR介绍

1、简介

在这里插入图片描述

·C/C++编译器和调试器
·集成开发环境(IDE)
·实时操作系统和中间件
·开发套件
·硬件仿真器以及状态机建模工具

2、IAR与Keil对比

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

(二)IAR安装

通过百度网盘分享的文件:IAR-ARM 7.80.zip
链接:https://pan.baidu.com/s/1mJdwIhej1dZdBRQtU_VYng?pwd=vwqc 
提取码:vwqc

在这里插入图片描述

(三)IAR快捷操作

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

三、M0工程建立

(一)IO端口配置

请添加图片描述

看懂原理图
建立IO功能映射表
通过STM32Cubemx配置IO工作模式

(二)时钟配置

在这里插入图片描述

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

(三)外设配置

1、USART

在这里插入图片描述

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

2、SPI

在这里插入图片描述

选择全双工主机模式
硬件片选不使能
设置波特率为1.5MBit/s
时钟极性为低电平驱动
时钟相位为第一个边沿

(四)Printf函数重定向

#include <stdio.h>
int fputc(int ch, FILE *f) 
{
	while((USART1->ISR & 0X40)==0);
	USART1->TDR = (uint8_t)ch;
	return ch;
}

四、LoRa驱动源码分析

(一)驱动源码文件说明

1、驱动源码文件结构

在这里插入图片描述

2、SRC目录

在这里插入图片描述

3、 Platform目录

在这里插入图片描述

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

4、Radio目录说明在这里插入图片描述

·包含几个不同的硬件平台的源码
·只需要关心Sx1276相关源码即可

5、驱动框架

在这里插入图片描述

(二)硬件抽象层分析

1、硬件接口设计

在这里插入图片描述

·数字IO
·SPI串行总线
·硬件复位

2、硬件接口函数

在这里插入图片描述
在这里插入图片描述

五、LoRa驱动移植

(一)驱动文件移植

在这里插入图片描述

复制粘贴一份M0Project,改名为LoRa。
在其目录下新建一个Sx1278文件。
将sx12xxdrivers-v2.1.0/src文件下的radio、platform复制到LoRa/Sx1278下。

(二)IAR工程文件添加

在这里插入图片描述

在IAR Embedded Workbench软件中的工程下添加.c文件

(三)驱动源码修改 !!重点难点,反复看

1、修改硬件平台

在这里插入图片描述
在这里插入图片描述

2、修改包涵路径

在这里插入图片描述

3、修改sx12xxEiger.c

在这里插入图片描述

4、修改led.c

在这里插入图片描述
在这里插入图片描述

5、修改sx1276-Hal.c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、修改spi.c在这里插入图片描述

7、修改sx1276-Hal.h

在这里插入图片描述

(四)LoRa模块上电自检

在这里插入图片描述

上电通过SPI总线读取芯片版本
判断读取值是否为0x12,并打印模块版本号

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部