在Simplicity Studio下创建适用于EFR32的工程项目
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.h和pa.h到工程项目的railSdk121Source文件夹中。
- 接着找到路径"SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\common",复制其中的全部文件到工程项目的railSdk121Source文件夹中(复制的文件分别为rail.h、rail_assert_error_codes.h、rail_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.c、rail_config.h和efr32-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的工程项目的更多相关文章
- android学习——Android Studio下创建menu布局文件
一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...
- Android Studio下创建menu布局文件
一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...
- Android学习笔记之Android Studio下创建menu布局文件
1.创建menu文件夹 Android Studio项目中如果没有menu文件夹,在res文件夹右键,new-Android resource directory: 则会弹出下图对话框,在Resour ...
- Android studio 中创建AIDL Service
1.概述 AIDL在android系统中的作用 AIDL,Android Interface definition language的缩写,它是一种android内部进程通信接口的描写叙述语言, ...
- 手把手带你使用ZigBee——通过爱智控制EFR32,以及 Simplicity Studio 使用过程中注意事项
前言 兄弟们,我发现一个有意思的东西,我在爱智官网翻资料的时候,发现他们终于终于把官网文档的索引优化了!有一说一,真是方便不少,终于不再是一堆文档糊在一坨了. 另外我还发现他们居然做了一个EFR32的 ...
- 微软Azure 经典模式下创建内部负载均衡(ILB)
微软Azure 经典模式下创建内部负载均衡(ILB) 使用之前一定要注意自己的Azure的模式,老版的为cloud service模式,新版为ARM模式(资源组模式) 本文适用于cloud servi ...
- 在Mac下创建ASP.NET Core Web API
在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉 ...
- 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子
Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk ...
- android 按钮点击效果实现 在studio下出现的错误
在照做上一篇随笔的时候 在studio下为了方便我在写完一个 btn_select.xml 文件后直接粘贴了三个文件到drawable下 结果问题来了 总是报这样一个错误: Resource is n ...
随机推荐
- 大数相加(类似杭电acm1002)
/*输入两个非常大的整数(完全超出了int.long的表示范围),这个整数的长度可能超过100位,计算并输出这两个数相加的结果.*/ //自己用题目所给的案例测试,输出是正确的,也能输出正确的结果,不 ...
- linux下安装git提示”无法打开锁文件 /var/lib/dpkg/lock - open (13: 权限不够)“
如图所示,输入命令:apt-get install git后提示权限不够 解决方法,在命令前加 sudo即可 sudo apt-get install git sudo是linux系统管理指令,是允许 ...
- APP性能测试(电量)
#encoding:utf-8 import csv import os import time #控制类 class Controller(object): def __init__(self, c ...
- PDO学习
参考: http://php.net/manual/zh/pdostatement.fetch.php http://php.net/manual/zh/pdo.constants.php
- java编程思想第四版第二章要点总结
1. 基本类型 基本类型 二进制位数 包装器类 boolean - Boolean byte 8 Byte char 16 Character short 16 Short int 32 Intege ...
- scrapy回调函数传递参数
scrapy.Request 的callback传参的两种方式 1.使用 lambda方式传递参数 def parse(self, response): for sel in response.xpa ...
- Windows Subsystem for Linux (WSL)挂载移动硬盘U盘
WSL想通过移动硬盘处理一些数据,结果进去了无法发现移动硬盘,于是搜了好久也没有一个正确的解决办法,终于找到一个,现在贡献出来与大家共享. WSL比起linux挂载硬盘简单一些.而且windows本身 ...
- Ubuntu 卸载cario-dock
偶然间听说别人用dock 可以把ubuntu美化,结果就装了个cairo-dock .结果是苹果mac的风格.不是很喜欢.于是就卸载,卸载过程中.发行卸载不掉. 尝试了很多方法. sudo apt-g ...
- Java Web项目报错总结
Java Web项目报错总结 1.java.lang.IllegalStateException java.lang.IllegalStateException Caused by:java.lang ...
- 堡垒机-teleport的安装以及常见问题解决办法
teleport是一款简单易用的堡垒机系统,运用在企业对windows.linux服务器的安全使用管理以及审计. 官网网址:http://teleport.eomsoft.net/ github地址: ...