EFM32外设驱动库简析--
更新时间:2023-08-10 21:50: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外设驱动库简析--08-10
北语18春《法理学》作业312-13
RHCE考试EX300题库经验证版10-02
2019高中英语写作范文同学热衷于集邮议论文 doc04-12
煤矿安全生产工作会议制度08-05
这一年,高三作文02-06
中国太平洋人寿保险股份有限公司 太平盛世04-22
互换性与技术测量习题答案06-11
铜川市诚信企业评定管理暂行办法07-17
- 教育局拟征求中考升学奖励制度
- 2020房地产销售主管年终工作总结
- 虚拟多台位互感器检定装置投资项目可行性分析
- 车间工人辞职报告范本
- 溴投资项目可行性分析
- 改名字申请书怎么写
- 忧与爱作文素材
- 溴苯腈投资项目可行性分析
- 2020清华大学考研复试时间:3月6日至22日
- 2020年蚌埠高考查分系统网址
- 2020年二建《建筑工程实务》测试题及答案(13)
- 生死感悟——人间世观感一
- 武陵源区军地小学观看魏书生《如何当好班主任》讲座录像
- 全球10大安全旅游国出炉日本排名第9
- 企业策划书模板
- 高中英语教师工作总结3篇
- 法定代表人证明范本
- 大学助学金申请书范文1700字
- 案外人申请不予执行仲裁裁决司法解释施行首份申请书递交齐齐哈尔...
- 环球国际房地产开发项目策划
- 简析
- 外设
- 驱动
- EFM32
- 管理学原理复习题及答案(后附满分答案)
- 华南师范大学2012年招收博士研究生入学考试试题
- 剑桥英语一级上练习题1
- 无石棉控制程序
- 【【2014年3月止拟上市公司(IPO)排队名单及信息】】
- 基于BP神经网络的遥感影像分类
- 2015年广西公需科目广西生态文明试卷答案(4套)
- 合作利润分红协议
- 黑客基础之DOS (最齐全)最新发布完整版
- 二堡小学德育工作创新案例(1)
- 奥迪A4L2.0T升级ECU--GTM辉煌巨作
- 2004-2010广东高考英语作文及答案
- 跨栏跑教学设计
- 2021年四年级语文下册期末试卷下载(2套)
- 东北师范大学 《教育学》15春在线作业2答案
- 摩托车照后镜项目可行性研究报告方案(可用于发改委立项及银行贷款+2013详细案例范文)
- 福建省福州市第一中学2020-2021学年高一上学期课时作业10数学试题(基本不等式(二))
- 2013--2014下学期艺体工作总结 (2)
- 社区矫正工作实施方案
- 学前班数学教学计划