<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

創建CW32L083GCC工程模板

華仔的編程隨筆 ? 來源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-06-20 09:03 ? 次閱讀

【目的】

官方示例提供了MDK、IAR的示例,也提供了以上兩個環境的工程模板,但是沒有GCC的工程模板,GCC編譯環境與MDK、IAR主要區別就是C語言啟動環境的配置、鏈接文件的不一至,因為要實現VScode或者其他的編譯器來實現開發環境的搭建,就需要自己編寫CW32L083_FLASH.ld、以及startup_cw32l083_gcc.s。

【實現的思路】

1、尋找官方支持,我在CW32生態群里發了求助的信息,沒有回復。

2、在淘寶客服,咨詢,回復說,沒有工程。

3、有大佬提供了CW32F030的工程,我了解到CW32F030與CW32L083一樣是CortexM0+的內核,所以想他的啟動文件跟LD應該可以相互借鑒。所以償試修改CW32F030的工程來實現GCC的工程。

【實現步驟】

1、拷貝一份工程,另存為cw32l083_gcc,并用vscode打開。

2、到官網下載cw32l083的固件庫。

3、把cw32l083-stdperiph-lib/Libraries下面的固件替換掉cw32l083_gcc/Libraries固件。

4、復制cw32l083.h、system_cw32l083.h到/Libraries/CMSIS/Device/目錄下面。刪除原來的cw32f030.h以及system_cwl083.h。

5、Libraries/CMSIS/Device/startup_cw32f030_gcc.s重命名為startup_cw32l083_gcc.s。

6、Libraries/CMSIS/Device/CW32f030_FLASH.ld重命名為CW32L083_FLASH.ld。

7、Debug/CW32F030.svd 重命名為CW32L083.svd。并把其文件內的cwf030修改為cw32l083.

8、復制l083固件庫中的cw32l083-stdperiph-lib/IdeSupport/MDKWHXY.CW32L083_DFP.1.0.8.pack 到Debug/WHXY.CW32L083_DFP.1.0.8.pack,并刪除原來的.pack文件。

9、復制cw32l083-stdperiph-lib/Examples/GPIO/gpio_blink/USER/src/interrupts_cw32l083.c 到/cw32l083_gcc/Core/app/interrupts_cw32l083.c。以及inc下面的interrupts_cw32l083.h。

10、修改Libraries/Libraries.mk文件內容,主要是文件夾的名稱重新定位。

模塊名_DIR 是上一層傳遞下來的參數,

是從工程根目錄到該模塊文件夾的路徑

向 C_SOURCES 中添加需要編譯的源文件

C_SOURCES += **(wildcard **(Libraries_DIR)/CW32L083_StdLib/src/*.c)

向 C_INCLUDES 中添加頭文件路徑

C_INCLUDES += -I$(Libraries_DIR)/CMSIS/Include

C_INCLUDES += -I$(Libraries_DIR)/CMSIS/Device/

C_INCLUDES += -I$(Libraries_DIR)/CW32L083_StdLib/inc

向 LIBDIR 中添加靜態庫文件路徑

LIBDIR += -L$(Libraries_DIR)/Lib

向 LIBS 中添加需要鏈接的靜態庫

LIBS += -lxxxx

link script

LDSCRIPT = $(Libraries_DIR)/CMSIS/Device/CW32L083_FLASH.ld

匯編文件宏定義

AS_DEFS +=

匯編頭文件目錄

AS_INCLUDES +=

匯編源文件(starup)

ASM_SOURCES += $(Libraries_DIR)/CMSIS/Device/startup_cw32l083_gcc.s

11、修改makefile,修加gcc的路徑:

#######################################

編譯器指定

#######################################

PREFIX = arm-none-eabi-

啟用下一項以指定GCC目錄

GCC_PATH = /Applications/ARM/bin/

12、修改pyocd.yaml,指定tartgets、pack包名稱:

pack: ./Debug/WHXY.CW32L083_DFP.1.0.8.pack

target_override: CW32L083vc

frequency: 24000000

13、查找CW32L083用戶手冊,修改/Libraries/CMSIS/Device/CW32L083_FLASH.ld的RAM、FLASH如下:

/* Specify the memory areas */

MEMORY

{

RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 24K

FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 256K

}

14、由于.h與MDK的編譯上有所差別會報警告

Libraries/CW32L083_StdLib/inc/cw32l083_gtim.h:272:52: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]

272 | #define IS_GTIM_DMA(DMA) (((DMA) & 0xFFFFFFC0 == 0x0UL) && (DMA) != 0x0UL)

修改為:#define IS_GTIM_DMA(DMA) ((((DMA) & 0xFFFFFFC0) == 0x0UL) && (DMA) != 0x0UL),消除運算符的警告。

15、修改SysTick.c中的__weak 編譯錯誤,修改為:attribute ((weak))

到此,工程修改就結束。

編譯后無警告無錯誤:

[LD] build_exec/template.elf

[HEX] build_exec/template.elf -> build_exec/template.hex

[BIN] build_exec/template.elf -> build_exec/template.bin

[DUMP] build_exec/template.elf -> build_exec/template.s

[SIZE] build_exec/template.elf

text data bss dec hex filename

1088 16 1568 2672 a70 build_exec/template.elf

-e Build Finish

修改app_main.c的LED針腳,內容如下:

#include "app_main.h"

#include "cw32l083_gpio.h"

#include "cw32l083_rcc.h"

static inline void LED_Init()

{

GPIO_InitTypeDef GPIO_InitStruct;

RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_GPIOC, ENABLE);

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.IT = GPIO_IT_NONE;

GPIO_InitStruct.Pins = GPIO_PIN_2;

GPIO_Init(CW_GPIOC, &GPIO_InitStruct);

}

int main(void)

{

LED_Init();

// 開啟兩線調試接口

RCC_SWDIO_Config(RCC_SYSCTRL_SWDIOEN);

while (1)

{

GPIO_TogglePin(CW_GPIOC, GPIO_PIN_2);

FirmwareDelay(1000000);

}

return 0;

}

/******************************************************************************

  • EOF (not truncated)
    ****************************************************************************/
    #ifdef USE_FULL_ASSERT
    /
  • @brief Reports the name of the source file and the source line number
  • where the assert_param error has occurred.
  • @param file: pointer to the source file name
  • @param line: assert_param error line source number
  • @retval None
    */
    void assert_failed(uint8_t file, uint32_t line)
    {
    /
    USER CODE BEGIN 6 /
    /
    User can add his own implementation to report the file name and line number,
    tex: printf("Wrong parameters value: file %s on line %d
    ", file, line) /
    /
    USER CODE END 6 /
    }
    #endif /
    USE_FULL_ASSERT */

編譯下載,就可以實現Led1閃爍了。

liujianhuadeMacBook-Pro:cw32l083_gcc liujianhua$ make flash

-e Start pyOCD

0000909 I Loading /Users/liujianhua/cw32l083/cw32l083_gcc/build_exec/template.elf [load_cmd]

[==================================================] 100%

0001522 I Erased 0 bytes (0 sectors), programmed 0 bytes (0 pages), skipped 1536 bytes (3 pages) at 2.45 kB/s [loader]

【總結】

經過N次的試驗,終于成功的實現了cw32l083的gcc工程模版的創建。使得在linux、macOS環境下不能用MDK、IAR的難題。

附工程模版:

*附件:cw32l083_gcc.zip

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7548

    瀏覽量

    131335
  • IAR
    IAR
    +關注

    關注

    5

    文章

    324

    瀏覽量

    36341
  • 編譯器
    +關注

    關注

    1

    文章

    1585

    瀏覽量

    48741
  • 開發環境
    +關注

    關注

    1

    文章

    204

    瀏覽量

    16482
收藏 人收藏

    評論

    相關推薦

    首創ubuntu下cw32l031的vscode+gcc工程創建、下載、調試

    首創在ubuntu下面用vscode實現cw32l031的gcc工程創建、編譯、下載與調試
    的頭像 發表于 06-25 21:49 ?2.4w次閱讀
    首創ubuntu下<b class='flag-5'>cw</b>32l031的vscode+<b class='flag-5'>gcc</b><b class='flag-5'>工程</b><b class='flag-5'>創建</b>、下載、調試

    [技術手冊] CW32L083數據手冊

    CW32L083數據手冊,PSMCU0116.pdf,Rev1.2
    發表于 05-31 16:13

    [技術手冊] CW32L083用戶手冊

    CW32L083用戶手冊
    發表于 06-02 15:41

    分享武漢芯源CW32L083VxTx_StartKit開發板資料

    CW32L083_StandardPeripheralLib_V1.9.zip 以上所有的資料都是中文的,工程里有.pack包、有各個外設的驅動示例。是學習該款芯片開發的好資料。
    發表于 06-08 10:00

    首創CW32L083GCC工程模版

    [loader] 【總結】 經過N次的試驗,終于成功的實現了cw32l083gcc工程模塊的創建。使得在linux、macOS環境下不能用MDK、IAR的難題。*附件:
    發表于 06-19 22:17

    ubuntu下面用vscdoe實現CW32L031的工程創建、編譯、下載與調試

    GCC工程模版?,F在將移植的過程與結果分享如下: CW32L031與CW32L083同屬arm-cortex-M0+系列,通對比MDK下的啟動匯編程序,發現除flsh與內存大小不同之
    發表于 06-25 21:13

    CW32L083產品介紹

    CW32L083是一款基于eFlash的單芯片低功耗微控制器,集成了ARM?Cortex?-M0+ 核心,主頻高達64MHz,高速嵌入式存儲器(高達256K字節的FLASH和 高達24K字節
    發表于 09-14 06:41

    CW32L083MxTx PCB封裝庫

    CW32L083MxTx PCB封裝庫(PADS)
    發表于 09-14 07:17

    CW32L083MxTx元件庫

    CW32L083MxTx元件庫(PADS)
    發表于 09-14 08:20

    CW32L083RxTx PCB封裝庫

    CW32L083RxTx PCB封裝庫(PADS)
    發表于 09-14 08:43

    CW32L083RxTx元件庫(PADS)

    CW32L083RxTx 元件庫(PADS)
    發表于 09-14 08:44

    CW32L083VxTx StartKit原理圖分享

    CW32L083VxTx StartKit原理圖
    發表于 09-15 06:02

    CW32L083 StartKit軟件包分享

    CW32L083 StartKit軟件包
    發表于 09-15 07:00

    CW32L083VxTx StartKit用戶使用手冊

    按照下列步驟配置 CW32L083VxTx StartKit 評估板: 1. 確認評估板上跳線帽的位置(參見表 5-1 跳線配置); 2. 連接 CW-DAPLINK 調試器,確認主機端驅動程序已經
    發表于 09-15 07:07

    武漢芯源CW32L083開發板介紹

    CW32L083VxTxStartKit評估板為用戶提供一種經濟且靈活的方式使用CW32L083VxTx芯片構建系統原型,可進行性能、功耗、功能等各方面快速驗證
    的頭像 發表于 10-20 11:41 ?605次閱讀
    武漢芯源<b class='flag-5'>CW32L083</b>開發板介紹
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>