EFM32外设驱动库简析--
更新时间:2023-03-20 16:04:01 阅读量: 实用文档 文档下载
- EFM32外设驱动库推荐度:
- 相关推荐
EFM32外设驱动库简析
EFM32 外设驱动库简析
本文件简单介绍一下 EFM32 的 API 外设驱动,个人觉得写的还是非常好的,支持 CMSIS, 并在其上搭建 emlib,使用起来非常方便。
1. EFM32 外设驱动库架构
如上图所示,最底层的 Peripherals 表示 EFM32 片内的寄存器,可以称之为硬件层。CMSIS 是 ARM 公司提出的名为为了方便各大基于 Cortex Mx 内核 MCU 之间移植软件而定义的偏底层的软件框架 Cortex Microcontroller Software Interface Standar。再往上就是 emlib 了,所以可见 emlib 是基于 CMSIS 的。
MCU 的开发者可以有两个选择来编写应用程序:1. 通过 emlib 提供的 API 函数;2.直接 调用 CMSIS 提供的寄存器访问接口,以结构体的形式。
2. emlib 整个源代码
源码包含几个路径,用户可以打开\emlib\来查看。以下内容逐个对各个路径包含的文件进 行简单分析。
2.1 文件夹 emlib\Device\EnergyMicro\EFM32TG\Include
EFM32外设驱动库简析
该文件夹下包含了 CMSIS 的头文件,主要可以分成 5 类: efm32.h efm32tgxxxfxx.h efm32tg_peripheral.h,比如 efm32tg_adc.h system_efm32tg.h efm32_calibrate.h
efm32.h 文件是 EFM32 的 Peripheral Access Layer,通过在编译器中定义不同型号来选择包含 不同的头文件,具体用法:
Example: Add "-DEFM32G890F128" to your build options, to define part Add "#include "efm32.h" to your source files
EFM32外设驱动库简析
efm32tgxxxfxx.h 文件主要定义了该款 MCU 外设存在与否的情况,每个外设的配置寄存器组的起始地址等,同时用 include 包含了相应的 efm32tg_peripheral.h。还定义了如下结构体。
注意 , 以上定义均在 efm32tg_peripheral 中找,例如 ADC_Typedef * 的定义在 efm32tg_adc.h。
efm32tg_peripheral.h 主要定义了某外设 peripheral 的寄存器和比特域,以及一系列比特域 mask 等。 以 efm32tg_adc.h 为例,定义的 ADC 寄存器的结构体:
注意以上 struct 的__IO,__I 等修饰符。其实这些修饰符等同于 volatile,是 ARM 公司在
EFM32外设驱动库简析
CMSIS 3.0 中引入的,特此说明。如何使用 CMSIS?就这样使用:
system_efm32tg.h 文件主要内容为 system_efm32tg.c 中所有 system 函数的声明,外加所有中断服务函数 Handler 的函数原型声明:
EFM32外设驱动库简析
efm32_calibrate.h 文件只定义了一个结构体:
2.2 在文件夹\emlib\Device\EnergyMicro\EFM32TG\Source\ARM 中,包含启动文件 startup_efm32tg.s。
2.3 在文件夹 \emlib\Device\EnergyMicro\EFM32TG\Source 下有一个 c 文件
system_efm32tg.c,包含 system 系统函数的定义,主要是设置和获取系统高频和低频时 钟。
至此,从底层启动文件到 CMSIS 部分结束了。下面是建立在其上的 emlib 外设驱动库。
2.4 文件夹下\emlib 下包含 inc 和 src 两个子文件夹,inc 文件包含所有 EFM32 外设的驱动库的头文件,src 文件夹包含驱动库源代码。两者一一对应,即一个外设会有一个.h 文件
EFM32外设驱动库简析
和一个.c 文件与之对应。但是细心研究会发现,inc 中头文件总共有 35 个.h 文件,src 中总共有 30 个.c 文件。
EFM32外设驱动库简析
多出来的 5 个文件分别如下,而所有其他 30 个文件均为外设驱动 API 函数的来源。
em_version.h
em_bitband.h em_chip.h em_common.h em_part.h
em_version.h 只定义了几个常量用于表示 emlib 的版本
em_bitband.h 虽然是.h 文件,但是其中却定义两个函数,一个用于操作外设 Peripheral 的 Bitband,一个用于操作 SRAM 的 Bitband。
EFM32外设驱动库简析
em_chip.h 同样是.h 文件,但是也定义了一个函数,主要用于修复 EFM32 芯片的 Bug,在 Main 函数执行的最开始需要调用该函数。
em_common.h 定义了一些宏,被用于整个 emlib 的实现。
em_part.h 文件主要根据一个宏定义,从而让编译器能包含正确的型号的.h,比如,如果在 MDK IDE 中定义了 EFM32TG842F32, 通过包含 em_part.h 就可以让编译器找到 efm32.h,从而 找到 efm32tg842f32.h;如果定义了EFR4D1080F256,则整个工程将包含efr4.h文件。
关于如何使用 emlib 呢?
EFM32外设驱动库简析
正在阅读:
EFM32外设驱动库简析--03-20
基于MATLAB的回归分析模型在经济预测分析中的应用03-14
《俄罗斯概况》全部习题解答01-09
2020年文明社区工作计划范文2篇05-08
描写春天的好段02-21
2015年德州中考英语试题及解析05-05
基于FPGA的视频图像画面分割器的设计08-18
八年级美术上册第一单元美术馆与艺术市场第1课《走进艺术博物馆》教案201-02
通信、信号迁改专项施工方案11-23
八上《勾股定理》单元测试(观澜二中)06-16
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 简析
- 外设
- 驱动
- EFM32
- 基于 Internet 的空分设备远程监视系统的开发研究
- 福建省福州市第一中学2020-2021学年高一上学期课时作业10数学试题(基本不等式(二))
- 摩托车照后镜项目可行性研究报告方案(可用于发改委立项及银行贷款+2013详细案例范文)
- 管理学原理复习题及答案(后附满分答案)
- 园林工程分部(子分部)工程、分项工程划分
- 剑桥英语一级上练习题1
- 均匀设计在食品加工研究中的应用
- 奥迪A4L2.0T升级ECU--GTM辉煌巨作
- 普通高等学校专科专业学科分类(参考)
- 北大中国古代文学专业考博复习资料-育明考研考博
- 员工劳务合同之欧阳学文创作
- 辽阳烟囱拆除公司
- 京信通信系统射频基础笔试试卷
- 少墙框架结构与框架结构在结构设计中的对比与应用
- 关于空天作战平台在信息化战争中的应用
- 4台10万立方储罐防腐方案
- 2016年财务经理年终工作总结范文
- 大学英语四级翻译答题技巧及答题步骤
- 融资融券影响的元胞自动机股票市场模拟研究
- 施工准备工作的主要内容