1、使用平台

  使用平台描述了在Simplicity Stdio下创建工程时所使用的操作系统与软件版本等。

  • 操作系统:Windows 10
  • Simplcity Studio版本:Simlicity Studio V4
  • MCU型号:Silicon Labs的EFR32FG1x系列

2、Simplcity Studio上使用的SDK与编译器版本

  • 32 bit MCU SDK版本:5.2.2.0
  • Flex SDK:1.2.1.0
  • GNU ARM Toolchain版本:4.9.2015.q3

  由于接触Simplicity Studio平台与EFR32FG1x系列芯片时,其Flex SDK的版本为1.2.1.0,所以就使用了当时的这个最新版本的SDK,但是自己刚刚才将如何创建一个“干净”的工程探索的差不多的时候,Flex SDK突然更新到一个新的版本2.0.0,最重要的是这个新版本不与1.2.1.0的兼容,API全部变样,连Radio的底层操作流程都换思路了。那我也没精力从头再来了,所以继续使用了1.2.1.0版本的SDK。

3、新建MCU工程

  • 首先,打开Simplicity Studio,如图1所示;

图1、Simplicity Studio的Lanucher界面

  • 打开Simplicity Studio,使用File->New->Project...新建工程;
  • 在弹出的"New Project"对话框中选择Silicon Labs MCU Project,如图2所示,然后点击Next,出现"New Silicon Labs Project"对话框,如图3所示;

图2、New Project对话框

图3、New Silicon Labs project对话框

  • 然后在"New Silicon Labs Project"对话框中的Part栏选择要使用的芯片型号(我这里随便选择一款,如EFR32FG1P131F256GM32),在SDK栏中选择“Gecko SDK Suite: Flex 1.2.1.0, MCU 5.2.2.0(v1.1.1)”,如果没有此版本的SDK,则点击右下方的Manage SDKs...,在出现的对话框中查看是否此版本的SDK没有勾选,若没有勾选,则勾选上确认即可,然后返回到上一对话框重新选择SDK即可,若没有发现有此版本的SDK,则需要在安装此版本的SDK后,再重新以上操作,完成填写后如图4所示,最后点击Next

图4、完成填写后的New Silicon Labs Project对话框

  • 此时出现如图5所示的对话框。在此对话框中选择“Simplicity Configurator Program - Create a project whose contents are driven from Simplicity Configurator”选项,然后点击Next

图5、选择要生成的工程类型

  • 然后出现如图6所示的对话框。在对话框中的Project name栏中填写工程项目名称并选择工程项目要保存的路径(这里创建一个名为TestProject的工程,路径我使用默认路径),点击Next

图6、填写工程项目名称与工程路径

  • 最后出现如图7所示的对话框。选择所使用的工具链(这里选择的是GUN ARM v4.9.3),然后直接点击Finish以完成工程项目的创建,随后会打开一个以.hwconf为扩展名,以填写的工程名称为文件名的配置文件,在其中可以对所选用芯片进行GPIO、外设等配置,创建完成后的Simplicity Studio的界面如图8所示。

图7、选择工具链

图8、创建后的工程界面

4、 从Simplicity Studio安装路径添加项目所需的资源

  • 在Simplicity IDE的“Project Explorer”面板(如果没有此面板,请从菜单栏中Window->Show View->Other...->General->Project Explorer中调出此面板)中找到刚才创建的工程项目,然后在项目名上单击右键->New->Folder创建新文件夹,如图9所示,出现New Folder对话框,在其Folder name栏中填入新建文件夹的名称;这里我们新建两个文件夹,一个名为railSdk121Config,另一个名为railSdk121Source

图9、选中工程时的右键菜单

  • 然后在Simplicity Studio的安装路径下找到路径 "SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\autogen\librail_release",复制其中的librail_efr32xg1_gcc_release.a文件到工程项目的railSdk121Source文件夹中。
  • 再找到路径"SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\chip\efr32"和"SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\chip\efr32\rf\common\cortex",分别复制文件rail_chip_specific.hpa.h到工程项目的railSdk121Source文件夹中。
  • 接着找到路径"SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\common",复制其中的全部文件到工程项目的railSdk121Source文件夹中(复制的文件分别为rail.hrail_assert_error_codes.hrail_types.h)。
  • 最后找到路径“SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\emlib\src”,复制em_core.h文件到工程项目的emlib文件夹中。

添加完上述资源后,Simplicity Studio的“Project Explorer”面板中的当前工程的目录结构如图10所示。

图10、添加资源后的工程目录结构

5、创建Radio Configuration工程项目

  • 选择File->New->Project...新建工程;
  • 在弹出的"New Project"对话框中选择Silicon Labs AppBuilder Project,然后点击Next
  • 出现Applications对话框,选择Radio configuration for EFR32 radio family(Stackless applications)
  • 然后点击Next直到出现Project Configuration对话框为止;
  • Project Configuration对话框中的Project name栏中填入Radio工程项目名称,然后选择要保存工程项目的路径,点击Next
  • 出现Project setup对话框,在其中的Part栏中输入所使用的芯片型号(与创建MCU工程时所用的芯片型号必须一致,此为EFR32FG1P131F256GM32),然后点击Finish,此时会打开“工程项目名.isc”的配置文件,如图11所示。

图11、Radio配置界面

  • 接着配置关于radio的参数,配置完成后,点击Generate按钮,此时工程项目下生成或更新3个文件,分别为rail_config.crail_config.hefr32-standalone-radio-config-configuration.h,将前两个文件复制到MCU工程项目中的railSdk121Config文件夹中,将最后一个文件复制到MCU工程项目中的railSdk121Source文件夹中。

 完成后的工程目录结构如图12所示,其中“blank_efr32-standalone-radio-config”即为新创建的Radio Configuration工程。

图12、添加Radio资源后的MCU工程目录结构

6、配置MCU工程的属性并添加头文件搜索路径

  • 在MCU工程项目名(TestProject)上点击鼠标右键,在弹出菜单中选择Properties选项,出现Properties for xxx对话框,其中xxx为MCU工程项目名称(这里即为TestProject),如图13所示;

图13、MCU工程属性对话框

  • 在属性对话框的左边选择C/C++ Build->Settings,再在Settings界面下选择Tool Settings选项卡,在此选项卡中选择GNU ARM C Linker->Libraries,然后在右边的Libraries(-l)中加入参数m,在Library search path(-L)中加入参数 "${StudioSdkPath}/platform/base/hal/micro/cortexm3/",注意,引号一起填入,此处的${StudioSdkPath}是Simplicity Studio中的一个环境变量,表示当前的SDK所在的根路径,比如在我的电脑中,它等于D:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1(可能与您的路径不相同,请自行查找到Simplicity Studio的安装路径,然后再在其中查找SDK的路径),当前上面的参数你可以不适用这个环境变量,而直接使用绝对路径;
  • 然后,选择GNU ARM C Linker->Miscellaneous,在右边的Other objects中加入${ProjDirPath}/railSdk121Source/librail_efr32xg1_gcc_release.a,注意,没有引号,此处的${ProjDirPath}与上面的${StudioSdkPath}一样,是Simplicity Studio的一个环境变量,它表示当前工程的根路径,此环境变量一般指的是Simplicity Studio的工作空间中的工程的路径,比如我这里它是E:\Works\SimplicityStudio\v4_workspace\TestProject,其中v4_workspace是当前的工作空间名称,TestProject是当前的MCU工程名称;若当前的MCU工程不在当前使用的工作空间中,则请使用绝对路径;
  • 点击OK确定,然后再次打开Properties for xxx对话框,检查GNU ARM C Linker->Miscellaneous->Other objects栏中刚刚填入的内容有无包含引号,如有,则修改内容,将引号去掉即可(如果这里有引号,编译项目时会出错);
  • 接着,选择GNU ARM C Compiler->Includes,在其中添加包含路径,这里将前面在MCU工程项目中新建的两个文件夹的路径填进去,分别为"${ProjDirPath}/railSdk121Config""${ProjDirPath}/railSdk121Source",注意,都有引号,与之前一样,若当前的MCU工程不在当前使用的工作空间中,则请使用绝对路径;
  • 最后,点击OK确认即可;若之后又在工程项目中新建了其他文件夹且存放了头文件,则需要将文件路径添加到此处(Properties for xxx对话框->Settings->ToolSettings->GNU ARM C Compiler->Includes),完成后如图14所示。

图14、添加完头文件搜索路径后的MCU工程属性界面

到此,整个项目的创建就结束了。此时,可以直接编译MCU工程(TestProject),如果编译无错误提示,则项目的创建是无问题的;如果编译出错,则检测是否在创建工程或配置工程的哪个环节出错了。

7、5.2.2.0版本的MCU的SDK中USART的使用问题

  在使用USART时,根据EFR32FG1x的Datasheet描述,em_usart.c中的波特率设置函数有问题,所以在使用前请先修改em_usart.c中的第497~499行,这3行位于函数

void USART_BaudrateSyncSet(USART_TypeDef *usart, uint32_t refFreq, uint32_t baudrate)

第497~499这3行修改为以下内容:

float clkFactor = refFreq;
clkFactor = * (clkFactor / ( * baudrate) - );
clkdiv = (uint32_t)clkFactor & 0xFFFFFFF8;

8、解决使用JTAG仿真调试时经常失败的问题

  在编译项目时,若经常遇到仿真时仿真失败的情况,此时只需要修改em_cmu.c中函数

void CMU_HFXOInit(const CMU_HFXOInit_TypeDef *hfxoInit)

的第2、3行语句(在em_cmu.c文件的第4511、4512行)为以下内容即可:

if (BUS_RegBitRead(&CMU->STATUS, ) && CMU_ClockSelectGet(cmuClock_HF) != cmuSelect_HFXO) {
CMU_OscillatorEnable(cmuOsc_HFXO, false, true);
}

  以上内容为自己探索得出,定有错误或不当之处,请指正以让我修改之;另外,如需转载,请贴出作者以及出处,谢谢!

在Simplicity Studio下创建适用于EFR32的工程项目的更多相关文章

  1. android学习——Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  2. Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  3. Android学习笔记之Android Studio下创建menu布局文件

    1.创建menu文件夹 Android Studio项目中如果没有menu文件夹,在res文件夹右键,new-Android resource directory: 则会弹出下图对话框,在Resour ...

  4. Android studio 中创建AIDL Service

      1.概述  AIDL在android系统中的作用 AIDL,Android Interface definition language的缩写,它是一种android内部进程通信接口的描写叙述语言, ...

  5. 手把手带你使用ZigBee——通过爱智控制EFR32,以及 Simplicity Studio 使用过程中注意事项

    前言 兄弟们,我发现一个有意思的东西,我在爱智官网翻资料的时候,发现他们终于终于把官网文档的索引优化了!有一说一,真是方便不少,终于不再是一堆文档糊在一坨了. 另外我还发现他们居然做了一个EFR32的 ...

  6. 微软Azure 经典模式下创建内部负载均衡(ILB)

    微软Azure 经典模式下创建内部负载均衡(ILB) 使用之前一定要注意自己的Azure的模式,老版的为cloud service模式,新版为ARM模式(资源组模式) 本文适用于cloud servi ...

  7. 在Mac下创建ASP.NET Core Web API

    在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉 ...

  8. 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子

    Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk ...

  9. android 按钮点击效果实现 在studio下出现的错误

    在照做上一篇随笔的时候 在studio下为了方便我在写完一个 btn_select.xml 文件后直接粘贴了三个文件到drawable下 结果问题来了 总是报这样一个错误: Resource is n ...

随机推荐

  1. css渲染(二) 文本

    一.文本样式  首行缩进 text-indent 首行缩进是将段落的第一行缩进,这是常用的文本格式化效果.一般地,中文写作时开头空两格.[注意]该属性可以为负值:应用于: 块级元素(包括block和i ...

  2. Java语言的特性

    一.跨平台 借助虚拟机,程序不经修改即可在不同硬件或者软件平台上运行.源代码级(C,C++源码会重新编译),目标代码级(Java). 二.面向对象 以对象为基本单位,使得程序开发变得简单易用,拓展更方 ...

  3. APP性能测试(CPU)

    获取数据 :adb shell dumpsys cpuinfo | grep packagename result = os.popen("adb shell dumpsys cpuinfo ...

  4. web工程导入新环境的注意事项

    问题一:The type java.lang.Object cannot be resolved. 解决办法: 当你在Eclipse引用不同版本JDK工程时会发生该问题.由于你开发环境中应用了多个版本 ...

  5. Visual Studio Code搭建python开发环境

    开发Python的环境有很多,原来已经在vs2013上面搭建好python的开发环境了,但是vs2013每次启动都占太多内存(太强大了吧),这下出了vs code,既轻量又酷炫,正好拿来试一试开发py ...

  6. 【其他】3dmax撤销Ctrl+z不能用的解决办法

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/3dmax_ctrlz.html 如果你经常去网上下载各种模型参考学习的话,出现这个问题的概率会非常高.因为出现这个 ...

  7. 【Unity3D】Unity3D 让角色的头部望向鼠标

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/MouseAim.html 原理很简单,因为骨骼也是一个物体,也拥有transform那一套东西,所以可以简单地用L ...

  8. R语言︱决策树族——随机森林算法

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...

  9. OpenStack_I版 5.Nova部署

    Nova安装 创建配置存放目录,日志存放目录,执行文件目录,虚拟机目录  Nova配置修改 生成主配置文件 创建Nova数据库 同步Nova数据库 验证 Nova连接RabbitMQ配置修改  key ...

  10. pat1041-1050

    没想到半天就做完了10题 = =,这几题太简单了,基本10分钟一题 1041 #include<cmath> #include<map> #include<iostrea ...