91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

【GD32 MCU 移植教程】1、從 GD32F10x 移植到 GD32F30x

聚沃科技 ? 2024-08-30 09:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 前言

對于使用 GD32 系列微控制器進行產品開發的設計人員來說,因產品及功能升級,往往需要將一種微控制器替換成另一種微控制器,在保留既有功能的情況下增加新功能。為了更快地推出新產品,設計人員經常要將應用程序移植到新的微控制器。本應用筆記旨在幫助您快速將應用程序從 GD32F10x 系列微控制器移植到 GD32F30x 系列微控制器。

為了更好的利用本應用筆記中的信息,您需要對 GD32 系列微控制器有比較深刻的了解。

2. 引腳兼容性

GD32F10x 與 GD32F30x 在相同封裝下是 Pin To Pin 兼容的。但由于 GD32F30x 較 GD32F10x 增加了內部 48MHz RC 振蕩器USBD 模塊提供固定頻率,為滿足精度要求,GD32F30x 含有一個時鐘校準控制器(CTC),所以兩者引腳定義有細微差別,如下表所示:

表 1 GD32F10x 系列和 GD32F30x 系列引腳區別

wKgaombRJLKAQLq6AABzYorpvSs114.png

3. 內部資源兼容性

下表給出了 GD32F10x 與 GD32F30x 的資源對比總覽(以 GD32F103xE 和 GD32F303xE 對比為例):

表 2 GD32F10x 系列和 GD32F30x 系列內部資源對比總覽

wKgZombRJMeAOPpdAAEoMMnqJy4418.pngwKgZombRJMeANYlwAAEbtcAWMIY634.png

4. 程序移植

由上節可看出,GD32F10x 和 GD32F30x 的主要差異性在于主頻(RCU 系統時鐘)、內核版本和 CTC上,而 M4 內核是向下兼容 M3 的,所以無需修改,現就 RCU 方面闡述程序移植過程。

4.1 RCU 系統時鐘配置

GD32F10x 系列和 GD32F30x 系列的時鐘配置過程相同,但 GD32F30x 支持更高的系統時鐘。若用戶選擇繼續使用原有的時鐘頻率,則在應用程序中無需做任何改變;若用戶選擇使用更高的時鐘頻率,按以下步驟進行程序修改(以 GD32F103 移植到 GD32F303、使用外部 8MHz高速晶振 HXTAL為例,其他對應型號、使用內部晶振的移植過程類似):

(1) 在 system_gd32f10x.c 文件中增加宏定義:

#define __SYSTEM_CLOCK_120M_PLL_HXTAL (uint32_t)(120000000)

如圖 1 所示:

wKgaombRJQmAewCuAAGDQCkJh0Y254.png圖 1在 system_gd32f10x.c 文件中增加宏定義

(2) 在 system_gd32f10x.c 文件中增加使用 120MHz 頻率函數的聲明,如圖 2 所示:

wKgaombRJRqAcsR_AAHNF_UtDCw312.png圖 2120MHz 函數聲明

(3) 在 system_gd32f10x.c 文件中增加使用 120MHz 頻率函數的定義:

static void system_clock_120m_hxtal(void) { uint32_t timeout = 0U; uint32_t stab_flag = 0U; /* enable HXTAL */ RCU_CTL |= RCU_CTL_HXTALEN; /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */ do{ timeout++; stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB); }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout)); /* if fail */ if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){ while(1){ } } /* HXTAL is stable */ /* AHB = SYSCLK */ RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; /* APB2 = AHB/1 */ RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; /* APB1 = AHB/2 */ RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; #if (defined(GD32F10X_MD) || defined(GD32F10X_HD) || defined(GD32F10X_XD)) /* select HXTAL/2 as clock source */ RCU_CFG0 &= ~(RCU_CFG0_PLLSEL | RCU_CFG0_PREDV0); RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_CFG0_PREDV0); /* CK_PLL = (CK_HXTAL/2) * 30 = 120 MHz */ RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); RCU_CFG0 |= RCU_PLL_MUL30; #elif defined(GD32F10X_CL) /* CK_PLL = (CK_PREDIV0) * 30 = 120MHz */ RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_PLL_MUL30); /* CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz */ RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV1 | RCU_CFG1_PREDV0); RCU_CFG1 |= (RCU_PREDV0SRC_CKPLL1 | RCU_PLL1_MUL8 | RCU_PREDV1_DIV5 | RCU_PREDV0_DIV10); /* enable PLL1 */ RCU_CTL |= RCU_CTL_PLL1EN; /* wait till PLL1 is ready */ while(0U == (RCU_CTL & RCU_CTL_PLL1STB)){ } #endif /* GD32F10X_MD and GD32F10X_HD and GD32F10X_XD */ /* enable PLL */ RCU_CTL |= RCU_CTL_PLLEN; /* wait until PLL is stable */ while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ } /* select PLL as system clock */ RCU_CFG0 &= ~RCU_CFG0_SCS; RCU_CFG0 |= RCU_CKSYSSRC_PLL; /* wait until PLL is selected as system clock */ while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ } }

(4) 在 system_gd32f10x.c 文件中增加使用 120MHz 頻率函數的調用,如圖 3 所示:

wKgaombRJVaAbD32AADRZ0bAi8w182.png圖3 120MHz 函數調用

5. 外設差異性

GD32F10x 與 GD32F30x 在外設上都是兼容的,但 GD32F30x 作為更高級的 MCU,較 GD32F10x在很多外設上增加了部分功能,用戶可根據以下羅列出的外設差異性選擇是否使用這些功能。

5.1 通用和備用輸入/輸出接口(GPIO 和 AFIO)

I/O 端口在作為輸出使用時,GD32F30x 可將 IO 的速度設置為 120MHz(GD32F10x 最大 50MHz),當 I/O 端口輸出速度大于 50MHz 時,建議使用 I/O 補償單元對 I/O 端口進行斜率控制,從而降低 I/O端口噪聲對電源的影響。具體功能以及寄存器設置,請用戶參考 GD32F30x 用戶手冊。

5.2 模數轉換器 ADC

為減輕 CPU 的負擔,GD32F30x 較 GD32F10x 增加了片上硬件過采樣單元。它能夠處理多個轉換,并將多個轉換的結果取平均,得出一個 16 位寬的數據。 片上硬件過采樣單元是以降低數據輸出率為代價,換取較高的數據分辨率。 具體功能以及寄存器設置,請用戶參考 GD32F30x 用戶手冊。

5.3 通用同步異步收發器 USART

GD32F30x 較 GD32F10x 在 USART 上增加了塊模式(GD32F10x 只支持字節模式)、數據極性設置、數據位反轉以及 TX、RX 引腳電平反轉等功能,因此,GD32F30x 多了三個寄存器,分別為:USART_CTL3、USART_RT、USART_STAT1。具體功能以及寄存器設置,請用戶參考 GD32F30x用戶手冊。

5.4 內部集成電路總線接口 I2C

GD32F30x 和 GD32F10x 的 I2C 都支持標速(最高 100KHz)和快速(最高 400KHz),同時 GD32F30x可支持高速模式(最高 1MHz),要使能高速模式,需將 I2C_FMPCFG 寄存器的 FMPEN 置 1。具體功能以及寄存器設置,請用戶參考 GD32F30x 用戶手冊。

5.5 串行外設接口/片上音頻接口 SPI/I2S

GD32F30x 和 GD32F10x 的 SPI/I2S 模塊差異性主要表現在 GD32F30x 支持 SPI TI 模式、SPI NSS脈沖模式和 SPI 四線功能(只有 SPI0),其中 SPI 的四線模式是用于控制四線 SPI Flash 外設,此模式下,數據傳輸速率是普通模式下的 4 倍。具體功能以及寄存器設置,請用戶參考 GD32F30x 用戶手冊。

5.6 通用串行總線全速設備接口 USBD

GD32F30x 較 GD32F10x 在 USBD 外設中增加了 USB2.0 鏈接電源管理(LPM)等級 L1,目的是為了優化在掛起/恢復狀態下的電源消耗。LPM 包括從 L0 到 L3 共 4 種狀態。 LPM L1 狀態(睡眠狀態) 是新的電源管理狀態。具體功能以及寄存器設置,請用戶參考 GD32F30x 用戶手冊。

5.7 閃存控制器 FMC

GD32F30x 較 GD32F10x 增加了位編程功能,為用戶節省一定的 Flash 空間。其特點是,存儲在閃存中的數據,其值為“1”的 bit 位可以改寫為“0”,而不影響其它位。例如,地址 0x0800 0400存儲的數據為 0x5a5a 5a5a,使用位編程功能,可直接將此地址的數據寫為 0x0a0a 0a0a,而不需

要先把該地址的數據擦除,然后寫 0x0a0a 0a0a。

請注意,位編程功能不能將值為“0”的 bit 位寫“1”,如上面的例子,將 0x0800 0400 地址寫為0xfafa fafa,將不會成功。關于 FMC 中位編程具體功能以及寄存器設置,請用戶參考 GD32F30x 用戶手冊。

教程GD32 MCU方案商聚沃科技原創發布,了解更多GD32 MCU教程,關注聚沃科技官網

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

    關注

    6067

    文章

    44982

    瀏覽量

    650311
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17970

    瀏覽量

    366580
  • 嵌入式
    +關注

    關注

    5150

    文章

    19659

    瀏覽量

    317392
  • 移植
    +關注

    關注

    1

    文章

    398

    瀏覽量

    28690
  • 開發板
    +關注

    關注

    25

    文章

    5675

    瀏覽量

    104572
  • GD32
    +關注

    關注

    7

    文章

    421

    瀏覽量

    25473
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    GD32F10x系列軟件移植GD32F1x0操作說明

    本文介紹了GD32F10x系列到GD32F1x0系列軟件移植操作。
    發表于 08-28 15:57 ?18次下載

    STM32F10x系列移植GD32F10x系列電子版

    STM32F10x系列移植GD32F10x系列電子版
    發表于 05-31 09:22 ?0次下載

    STM32F10x系列移植GD32F10x系列指導文檔

    STM32F10x系列移植GD32F10x系列指導文檔
    發表于 12-03 16:29 ?8次下載

    GD32F30x 用戶 手冊

    GD32F30x 用戶 手冊
    發表于 02-23 18:43 ?53次下載
    <b class='flag-5'>GD32F30x</b> 用戶 手冊

    GD32F10x 用戶 手冊

    GD32F10x 用戶 手冊
    發表于 02-23 18:57 ?6次下載
    <b class='flag-5'>GD32F10x</b> 用戶 手冊

    AN011 GD32F10x系列移植GD32F30x系列

    AN011 GD32F10x系列移植GD32F30x系列
    發表于 02-23 18:59 ?4次下載
    AN011 <b class='flag-5'>GD32F10x</b>系列<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD32F30x</b>系列

    AN047 GD32E103&C103系列移植GD32F30x系列

    AN047 GD32E103&C103系列移植GD32F30x系列
    發表于 02-23 18:59 ?0次下載
    AN047 <b class='flag-5'>GD</b>32E103&C103系列<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD32F30x</b>系列

    AN047 GD32E103&C103移植GD32F30x

    兆易創新AN047GD32E103&C103系列移植GD32F30x系列AN047GD32E103&C103系列
    發表于 10-19 17:26 ?3次下載

    AN011 GD32F10x系列移植GD32F30x系列

    兆易創新AN011GD32F10x系列移植GD32F30x系列AN011GD32F10x系列移植
    發表于 10-19 17:26 ?3次下載

    兆易創新GD32F30x系列MCU用戶手冊

    兆易創新GD32F30x系列MCU用戶手冊GD32F30x系列MCU用戶手冊
    發表于 10-19 17:26 ?6次下載

    GD32 MCU 移植教程】2、 GD32F303 移植 GD32F503

    GD32E503 系列是 GD 推出的 Cortex_M33 系列產品,該系列資源上與 GD32F303 兼容度非常高,本應用筆記旨在幫助您快速將應用程序
    的頭像 發表于 08-31 09:36 ?2195次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】2、<b class='flag-5'>從</b> <b class='flag-5'>GD32F</b>303 <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>503

    GD32 MCU 移植教程】6、GD32F1x0和GD32F3x0移植GD32E230

    和低成本,所以在存量客戶 中可能會有越來越多的客戶會有 GD32F1x0 和 GD32F3x0 移植
    的頭像 發表于 09-04 09:38 ?1382次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】6、<b class='flag-5'>從</b><b class='flag-5'>GD32F1x</b>0和<b class='flag-5'>GD32F3x</b>0<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>GD</b>32E230

    GD32 MCU 移植教程】7、 GD32F10x 移植 GD32E103

    本應用筆記旨在幫助您快速將基于 GD32F10x 2.0 版本及以上固件庫開發的應用程序GD32F10x 系列微控制器移植
    的頭像 發表于 09-05 09:40 ?1129次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】7、<b class='flag-5'>從</b> <b class='flag-5'>GD32F10x</b> <b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD</b>32E103

    GD32 MCU 移植教程】9、 STM32F10x 系列移植 GD32F30x 系列

    對比、外設及性能對比以及 STM32F10x 移植 GD32F30x移植步驟,旨在讓開發
    的頭像 發表于 09-07 09:57 ?1964次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】9、<b class='flag-5'>從</b> STM32<b class='flag-5'>F10x</b> 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F30x</b> 系列

    AN136 基于GD32F30x系列的IEC60730 ClassB庫移植指南

    電子發燒友網站提供《AN136 基于GD32F30x系列的IEC60730 ClassB庫移植指南.pdf》資料免費下載
    發表于 01-17 16:22 ?1次下載
    AN136 基于<b class='flag-5'>GD32F30x</b>系列的IEC60730 ClassB庫<b class='flag-5'>移植</b>指南
    主站蜘蛛池模板: 免费大片黄在线观看 | 久久88色综合色鬼 | 97人洗澡人人澡人人爽 | xxxx欧美| 欧美成人午夜精品免费福利 | 日本免费不卡在线一区二区三区 | 日日骑夜夜操 | 天天操天天干天天拍 | 99国产国人青青视频在线观看 | 精品国产午夜久久久久九九 | 九九九精品视频免费 | 婷婷色站 | 女人张开腿让男人捅爽 | 又粗又大撑满了好爽 | 亚洲综合校园春色 | 在线精品一区二区三区 | 国产精品三区四区 | 天天操天天干天天玩 | 亚洲 欧美 中文字幕 | 欧美日韩性大片 | 四虎影院在线免费观看视频 | 天堂bt资源新版在线 | 深夜免费在线视频 | 久久婷五月综合 | 天天插天天狠天天透 | 啪啪网站色大全免费 | 色偷偷网址 | 年轻护士3的滋味 | 天天干天天干天天色 | 九九精品在线 | 精品在线视频一区 | 久久福利精品 | 在线看一区二区 | 一级黄视频 | 国内露脸夫妇交换精品 | 欧美性猛交xxxx乱大交中文 | 国产精品久久久久久久免费大片 | 你懂的在线免费观看 | 天堂在线看| 天天爽夜夜爽人人爽一区二区 | 91福利网站 |