日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在Simplicity Studio下创建适用于EFR32的工程项目

發布時間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在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.hpa.h到工程項目的railSdk121Source文件夾中。
  • 接著找到路徑"SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\common",復制其中的全部文件到工程項目的railSdk121Source文件夾中(復制的文件分別為rail.hrail_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.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 = 256 * (clkFactor / (2 * baudrate) - 1); 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, 2) && CMU_ClockSelectGet(cmuClock_HF) != cmuSelect_HFXO) { CMU_OscillatorEnable(cmuOsc_HFXO, false, true); }

?  以上內容為自己探索得出,定有錯誤或不當之處,請指正以讓我修改之;另外,如需轉載,請貼出作者以及出處,謝謝!

轉載于:https://www.cnblogs.com/freerqy/p/8608586.html

總結

以上是生活随笔為你收集整理的在Simplicity Studio下创建适用于EFR32的工程项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。