娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

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

發布者:溫馨家園最新更新時間:2024-11-07 來源: elecfans關鍵字:GD32  MCU  移植  GD32F10x 手機看文章 掃描二維碼
隨時隨地手機看文章

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  移植  GD32F10x 引用地址:【GD32 MCU 移植教程】1、從 GD32F10x 移植到 GD32F30x

上一篇:GD32單片機STM32遠程下載手機程序升級固件下載局域網網頁升級工具
下一篇:【GD32 MCU 移植教程】2、從 GD32F303 移植到 GD32F503

推薦閱讀最新更新時間:2025-04-07 09:29

兆易創新金光一:GD32 MCU持續打造物聯網智慧開發平臺
日前,由中國電子信息產業集團有限公司主辦、溫州經濟技術開發區管委會、溫州市經濟和信息化局、溫州市科技局指導、中國電子(溫州)信息港、中電港、iCAN國際聯盟承辦的“IAIC物聯網高峰論壇暨中國芯應用創新設計大賽物聯網專項賽”順利召開,在主題報告中,來自兆易創新產品市場總監金光一,做了題為《GD32 MCU持續打造物聯網智慧開發平臺》的主題演講。 兆易創新產品市場總監金光一 兆易創新打造物聯網所需全部元素 金光一指出,物聯網有四大基本要素,分別為存儲、處理、有線無線連接和傳感器,而目前兆易創新已全面布局這四大基本要素。 根據金光一的說法,兆易創新力求打造的是物聯網智慧開發平臺,包括芯片、解決方案,可以快速進行物聯
[物聯網]
兆易創新金光一:<font color='red'>GD32</font> <font color='red'>MCU</font>持續打造物聯網智慧開發平臺
μC/OS-II在凌陽單片機SPCE061A上的移植
摘要:以凌陽單片機為例詳細介紹μC/OS-II的移植方法;重點講解在系統移植過程中一些難以理解的概念,并首次實現了μC/OS-II在凌陽SPCE061A單片機上的移植。 關鍵詞:μC/OS-II 凌陽單片機 嵌入式系統   目前,實時操作系統已廣泛應用于工業控制的各個領域。μC/OS-II作為一個實時內核,由于其源碼公開、代碼規范,廣受開發人員的喜愛。SPCE061A是凌陽公司繼μ’nSPTM系列產品SPCE500A等之后新推出的一款16位單片機,內部集成A/D、D/A等多種接口電路,能很方便地嵌入工業控制的各種場合。更重要的是,其內嵌2K字的SRAM和32K的Flash ROM,因此,在不需要擴展外部存儲器的情況下就可以實現
[應用]
GD32 Azure IoT解決方案
1. 方案簡介 Azure物聯網(IoT)是Microsoft托管的云服務的集合,這些服務用于連接、監視和控制數十億項 IoT 資產。簡單來講,IoT解決方案由一個或多個IoT設備構成,這些設備與云中托管的一個或多個后端服務通信。 IoT設備通常包括一塊裝有傳感器的電路板,這些傳感器通過IoT設備使用以太網或WiFi連接到Internet。通常,IoT設備將來自傳感器的遙測數據發送到云中的后端服務。但是,也可以實現其他類型的通信,例如,在后端服務中將命令發送到設備,以及使用云端模型同步控制IoT設備。 ▲ GD32E507Z_EVAL全功能評估板 2. 功能描述 基于GD32E507 Azure IoT SDK可連接到
[單片機]
<font color='red'>GD32</font> Azure IoT解決方案
imx6ull之tslib移植
imx6ull之根文件系統busybox移植 請參考:https://www.cnblogs.com/gxlblogs/p/14386419.html imx6ull之linux內核移植 請參考:https://www.cnblogs.com/gxlblogs/p/14384466.html 開發板:飛凌 OKMX6ULL-S + 7寸電阻屏 交叉編譯工具鏈:gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf tslib: tslib-1.22.tar.gz 一、tslib移植   1、上傳并解壓tslib-1.22.tar.gz:tar -zxvf tslib-1.22
[單片機]
imx6ull之tslib<font color='red'>移植</font>
linux內核移植到S5pv210
make s5pv210_defconfig 1.System Type --- (0) S3C UART to use for low-level messages 2.Kernel hacking --- Kernel low-level debugging functions (0) S3C UART to use for low-level debug 3.移植nand驅動 4.Device Drivers --- * Memory Technology Device (MTD) support ---    * Direct char device access to MTD devices   -*- C
[單片機]
實戰經驗 | 移植 SBSFU 到 STM32G070 的過程
01 前言 客戶使用 STM32G070RBT6 給海外用戶開發產品,由于當地新需求,產品需要增加安全啟動的功能。但是由于 X-Cube-SBSFU 包提供的示例中,只有基于 STM32G071 的示例。客戶因此詢問該怎么移植。本文將講解這個移植過程。 02 基于STM32G070和STM32G071的SBSFU 實現差異 在正式講解之前,我們首先來看一看 STM32G070 和 STM32G071 的 SBSFU 實現差異。 STM32G070 是一個 value line 產品,首先,我們要意識到,有一些安全特性,相比于STM32G071,它是沒有的,比如:PCROP,BOOT_LOCK
[單片機]
實戰經驗 | <font color='red'>移植</font> SBSFU 到 STM32G070 的過程
S3C6410移植u-boot-2010.3(2)基本的啟動信息修改
  1、啟動模塊修改   進入/cpu/arm1176/目錄,修改start.S文件   首先找到需要修改的CONFIG_NAND_SPL匯編原碼,修改如下: #ifndef CONFIG_NAND_SPL /* * flush v4 I/D caches */ mov r0, #0 mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */ mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */ /* * disable MMU stuff and caches */ mrc p15, 0, r0, c1, c0, 0 bic r0,
[單片機]
S3C6410<font color='red'>移植</font>u-boot-2010.3(2)基本的啟動信息修改
010_STM32程序移植之_lib庫建立
1. 測試環境:STM32C8T6 2. 測試接口: 3.串口使用串口一,波特率9600 單片機引腳------------CH340引腳 VCC--------------------VCC GND-------------------GND PA9--------------------RXD PA10-------------------TXD 1. 建立lib庫原因:LIB 的一個主要用途,就是用在工作上的,當你某些 C 文件不希望讓別人看到源代碼,但 又必須給別人使用的時候,把你這些機密的 C 文件編譯成 LIB 是一個最好的方式. 2. 在009程序上修改,并為011_STM32開機管理次數做基礎 3. 開始修改程
[單片機]
010_STM32程序<font color='red'>移植</font>之_lib庫建立
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 新邵县| 西青区| 乐陵市| 天峻县| 邳州市| 原平市| 安顺市| 万载县| 会宁县| 岳阳市| 奇台县| 新余市| 会泽县| 正蓝旗| 通山县| 潼关县| 吉林省| 四川省| 台中县| 通州市| 绵阳市| 莫力| 武夷山市| 绿春县| 台北市| 盘山县| 长葛市| 威信县| 峨眉山市| 赤城县| 富平县| 那曲县| 铜梁县| 新闻| 壶关县| 嵊泗县| 寻乌县| 响水县| 霞浦县| 盐山县| 五峰|