0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

聚沃科技 ? 2024-09-07 09:57 ? 次閱讀

1.本文簡介

GD32F30x 系列 MCU 是基于 Arm? Cortex?-M4 處理器的 32 位通用微控制器,與 STM32F10x 系列 MCU 保持高度兼容。本文主要從以下三個(gè)方面進(jìn)行介紹:硬件資源對比、外設(shè)及性能對比以及從 STM32F10x 移植到 GD32F30x 的移植步驟,旨在讓開發(fā)者能夠快速從 STM32F10x 移植到 GD32F30x,縮短研發(fā)周期,加快產(chǎn)品開發(fā)進(jìn)度。

2.GD32F30x vs STM32F10x 硬件資源對比

GD32F30x 和 STM32F10x 硬件引腳對比如表 2-1. GD32F30x 和 STM32F10xpin 對比所示,由該表可知,GD32F30x 與 STM32F10x 完全硬件兼容。

表 2-1. GD32F30x 和 STM32F10x pin 對比

wKgZombbqbCAZsF_AAANlweL44g101.png

3.GD32F30x vs STM32F10x 外設(shè)及性能對比

GD32F30x 外設(shè)資源較豐富,可實(shí)現(xiàn)對 STM32F10x 外設(shè)資源的覆蓋。其中GD32F303 對應(yīng) STM32F103,GD32F305 對應(yīng) STM32F105,GD32F307 對應(yīng)STM32F107。具體系統(tǒng)及外設(shè)資源對比如表 3-1. GD32F30x 和 STM32F10x 系統(tǒng)及外設(shè)資源對比所示。

wKgaombbqdiAG82QAABIaJ2ZWVs432.png

4.從 STM32F10x 到 GD32F30x 系列移植步驟

4.1.集成開發(fā)環(huán)境選型及工程配置

4.1.1.使用 Keil 開發(fā) GD32F30x

目前市面通用的 MDK for Arm?版本有 Keil4 和 Keil5,使用 Keil4 建議安裝 4.74及以上,使用 Keil5 建議安裝 5.20 以上版本。

4.1.2.在 Keil4 中添加 GD32F30x MCU

1. 從 MCU 官 網(wǎng) 或 網(wǎng) 盤 下 載 相 關(guān) 的 GD32F30x 系 列 插 件 MDKARM_AddOn_GD32F30x_V1.0.0.rar。

圖 4-1. GD32F30x 系列 MCU 型號(hào)支持 pack 包名稱(Keil4)

wKgaombbqfeAR_YTAABFQMRAiok201.png

2. 雙擊解壓安裝至Keil4的目錄,一般都會(huì)默認(rèn)選擇,如若同時(shí)安裝了Keil4和Keil5才需要手動(dòng)選擇。

圖 4-2. Pack 包安裝示意圖(Keil4)

wKgaombbqhiAPQIOAABG8ICS7TA900.png

3. 安裝成功后,重新打開Keil4,則可以在File->Device Database中出現(xiàn)GigaDevice的下拉選項(xiàng),點(diǎn)擊可以查看到相應(yīng)的型號(hào)。

圖 4-3. Pack 包成功安裝示意圖(Keil4)

wKgZombbqjSAc7mbAABNeWNZrEs938.png

4. 為了后續(xù)debug工作的順利進(jìn)行,建議檢查一下安裝路徑下是否有下載算法,可以通過如下方式查看:打開一個(gè)工程,將型號(hào)選為GD32F30x的型號(hào),然后Options for Target -> Debug ->Settings -> Flash Download-> Add,如果下拉選項(xiàng)中有GD32F30x的下載算法則完全安裝成功。

圖 4-4. Flash 算法文件選擇示意圖(Keil4)

wKgZombbq86AIYACAADbSvKaydc017.png

4.1.3.在 Keil5 中添加 GD32F30x MCU

1. 從相關(guān)網(wǎng)站下載相關(guān)的GD32F30x系列插件Keil.GD32F30x_DFP.1.1.0.rar。

圖 4-5. GD32 MCU 型號(hào)支持 pack 包名稱(Keil5)

wKgaombbqfeAR_YTAABFQMRAiok201.png

2. 解壓并安裝至Keil5的目錄,一般都會(huì)默認(rèn)選擇。

圖 4-6. Pack 包安裝示意圖(Keil5)

wKgZombbqn-AKaZbAAAerDo3yFU242.png

3. 安裝完后重新打開Keil5工程,即可在Device->Database中出現(xiàn)GigaDevice的型號(hào)。

圖 4-7. Pack 包安裝成功示意圖(Keil5)

wKgZombbrH6AV3RnAACmszxJuJg977.png

4. 在Options for Target -> Debug ->Settings ->Flash Download 中添加flash算法,會(huì)出現(xiàn)GD32F30x的算法,即說明安裝成功。根據(jù)相應(yīng)的芯片選擇合適的算法,即可下載仿真。

圖 4-8. Flash 算法文件添加示意圖(Keil5)

wKgaombbrKGAD1f_AAC6sIK_j2Q754.png

5. 用Keil5打開Keil4工程,如果報(bào)找不到器件信息等錯(cuò)誤,將Keil4的插件安裝在Keil5的目錄下,具體操作方式參考Keil4插件相關(guān)內(nèi)容。

4.1.4.MDK 使用常見問題解答

1. Keil4打開Keil5工程

如果沒有安裝Keil5,也是能夠使用Keil4來編譯Keil5的工程,具體做法就是修改工程的后綴名,將Keil5工程的后綴名xxxx.uvprojx修改為xxxx.uvproj,即可使用Keil4來查看編譯了。

2. Keil5打開Keil4工程

如果使用Keil5打開Keil4工程,打開時(shí)會(huì)遇到找不到MCU器件的情況,這種可以直接將Keil4工程的后綴名xxxx.uvproj修改為xxxx.uvprojx,即可正常使用Keil5來查看編譯了。

3. GigaDevice.GD32F30x_DFP.pack特性

1. 支持在線安裝方式;

2. 支持本地安裝方式;

3. 自動(dòng)生成GD32F30x系列MCU列表及對應(yīng)的特征信息;

4. 自動(dòng)匹配所選芯片對應(yīng)的Flash算法;

5. 支持用戶在Debug模式下查看寄存器狀態(tài);

6. 利用Books選項(xiàng)卡獲取文檔資料。

4. Pack包對Keil版本要求

Pack包適用于Keil5.15及以上版本,對于Keil5.13和5.14版本,有如下兩個(gè)問題:

1. Debug模式下無法調(diào)用SVD文件查看寄存器狀態(tài);

2. 對Pack進(jìn)行Schema check會(huì)報(bào)錯(cuò)。

5. Keil5打開Keil4工程,編譯報(bào)錯(cuò)

圖 4-9. 編譯錯(cuò)誤示意圖

wKgZombbrO6AVsDwAAAqeUDVJpA353.png

錯(cuò)誤原因是core_cmInstr.h文件的路徑在Keil5和Keil4中不同,可在Option forTarget的C/C++中添加core_cmInstr.h的文件路徑,如圖4-10所示:

圖 4-10. 文件路徑添加示意圖

wKgaombbrPyARHswAACjU_lcGw8611.png

4.1.5.使用 GD-LINK 開發(fā) GD32F30x

GD32F30x的開發(fā)板自帶GD-LINK,可以用電路板上的GD-LINK調(diào)試仿真代碼,操作方法如下。

1. 在Options for Target -> Debug 中選擇“CMSIS-DAP Debugger”,部分客戶反饋找不到這一驅(qū)動(dòng)器選項(xiàng),那是因?yàn)镸DK版本過低,只有Keil4.74以上的版本和Keil5才支持CMSIS-DAP Debugger選項(xiàng)。

圖 4-11. GD-LINK 選擇 Debugger 類型

wKgZombbrdGAM4vKAAAWfIqAeZM638.png

2. 在Options for Target -> Utilities,也要選擇“CMSIS-DAP Debugger”。

圖 4-12. GD-LINK 在 Utilities 中選擇 Debugger 類型

wKgZombbrdmAZEiCAAAmwOfRCuc358.png

3. 在Options for Target -> Debug ->Settings勾選SWJ、Port選擇 SW。右框IDcode會(huì)出現(xiàn)”0xXBAXXXXX”。

圖 4-13. GD-LINK 成連接目標(biāo)板示意圖

wKgZombbrfqAYhO1AABorrmijcY740.png

4. 在Options for Target -> Debug ->Settings -> Flash Download中添加GD32的flash算法。

圖 4-14. GD-LINK 添加 Flash 算法文件示意圖

wKgZombbrgyAc7wTAACZHhLJtRE004.png

5. 單擊下圖的快捷方式“debug”,即可使用GD-LINK進(jìn)行仿真。

圖 4-15. GD-LINK 仿真示意圖

wKgZombVGruARUzSAADbA1brSC8429.png

4.1.6.使用 J-Link 開發(fā) GD32F30x

使用J-Link來debug GD MCU,具體配置如下:

1. 在Options for Target -> Debug中選擇“J-LINK/J-Trace Cortex”。

圖 4-16. J-Link 在 Keil 中選擇 Debugger 示意圖

wKgaombVGtKAKIgsAAAyRLAAhiw214.png

2. 在Options for Target -> Debug ->Utilities,也要選擇“J-LINK/J-Trace Cortex”。

圖 4-17. J-Link 在 Utilities 下選擇 Debugger 示意圖

wKgZombVGtmAXK-zAAAySjzsebk236.png

3. 在Options for Target -> Debug ->Settings勾選SWJ,Port選擇 SW。右框IDcode會(huì)出現(xiàn)“0xXBAXXXXX”。

圖 4-18. J-Link 成功連接目標(biāo)板示意圖

wKgZombWacWATdIaAABU3XziMBE023.png

4. 在Options for Target -> Debug ->Settings -> Flash Download中添加GD32的flash算法。

圖 4-19. J-Link 在 Keil 下添加 flash 算法文件示意圖

wKgaombbrmqAJnLaAACxzZUn8P0379.png

5. 單擊下圖的快捷方式“debug”,即可使用J-Link進(jìn)行仿真。

圖 4-20. J-Link 成功仿真示意圖

wKgZombVGruARUzSAADbA1brSC8429.png

4.1.7.使用 IAR 開發(fā) GD32F30x

IAR版本眾多,版本之間的兼容性并不好,如果初次使用建議安裝7.3以上的版本,安裝好IAR以后再根據(jù)該文檔來添加GD的器件型號(hào),進(jìn)行相關(guān)的debug工作。

4.1.8.在 IAR 中添加 GD32F30x MCU Device

1. 從 相 關(guān) 網(wǎng) 站 下 載 相 應(yīng) 的 GD32F30x 系 列 插 件IAR_GD32F30x_ADDON.1.0.0.exe:

2. 運(yùn)行IAR_GD32F30x_ADDON.1.0.0.exe,單擊start開始安裝插件。

圖 4-21. IAR 中安裝支持 GD32 型號(hào) pack 包示意圖

wKgZombbruqAaQHTAABG_jbHlI8285.png

3. 安裝成功后單擊Finish,結(jié)束插件安裝。

圖 4-22. IAR 下 pack 包安裝示意圖

wKgaombbrvOAYGVfAABKjKXYFYo851.png

4.1.9.在 IAR 中編譯調(diào)試 GD32F30x

在上一小節(jié)中我們已經(jīng)添加了GD32F30x系列的插件,這一小節(jié)我們介紹應(yīng)如何使用它。

使用IAR編譯GD的型號(hào),有兩個(gè)辦法,一種是使用現(xiàn)有的工程進(jìn)行修改,還有就是重新建立工程,這里就不細(xì)說具體工程應(yīng)該如何建立,GD的工程建立和別的平臺(tái)都一致,建立工程時(shí)選擇GD的相應(yīng)型號(hào)。如果沒有安裝GD的插件,可以選擇別的M3廠家型號(hào)。

圖 4-23. 在 IAR 下選擇芯片型號(hào)示意圖

wKgaombbrwqAFXg-AADbyU47YFw195.png

6.1以后的IAR不需要添加CMSIS文件(core_cm4.c和core_cm4.h),但是需要勾選General Options->Library Configuration的Use CMSIS,如果軟件代碼有使用到printf函數(shù),還需要修改Library為FULL。

圖 4-24. 在 IAR 下添加 CMSIS 文件示意圖

wKgaombVG1mAaUVFAABkEpkno88636.png

芯片的Link文件建立工程時(shí)會(huì)默認(rèn)根據(jù)型號(hào)選定,但是編譯前還是要有檢查的習(xí)慣,檢查一下ICF文件是否有配置,是否正確。

圖 4-25. 在 IAR 下添加 ICF 文件示意圖

wKgaombbsCiAcZQ9AABgIzmZbSg277.png

配置Debugger->Setup選項(xiàng),新建立的工程默認(rèn)是Simulator模擬,如果需要調(diào)試那么需要根據(jù)實(shí)際情況來選擇:

1. 使用GD-LINK選擇CMSIS DAP(兼容性不好,不建議在IAR下使用);

2. 使用J-Link選擇J-Link/J-Trace。

圖 4-26. 在 IAR 下選擇 Debugger 示意圖

wKgaombVG6WAZVzdAABWWUlHsZY446.png

配置Debugger->Download選項(xiàng),新建的工程有可能沒有配置download選項(xiàng),如果我們需要調(diào)試代碼那么務(wù)必要勾選User flash loader選項(xiàng),且保證board file準(zhǔn)確,否則程序無法正常下載至芯片內(nèi)部。

圖 4-27. 在 IAR 下配置 flash loader 示意圖

wKgaombVG7WAS5kJAABLrXhPwzQ352.png

如果選擇了Debugger選項(xiàng),那么還需要根據(jù)Debugger選項(xiàng)設(shè)定對應(yīng)的調(diào)試選項(xiàng);如果選擇的是GD的型號(hào),在IAR下面已經(jīng)固定將所有的調(diào)試接口都配置為SWD接口,可以忽略該選項(xiàng)配置,直接進(jìn)行相關(guān)的代碼debug工作。

4.2.System 模塊使用注意事項(xiàng)

4.2.1.HXTAL 時(shí)鐘丟失后,程序如何運(yùn)行

程序使用外部晶振正常運(yùn)行之后,如果將外部晶振去掉或者短路,GD32F30x 的程序不會(huì)取指執(zhí)行。若將晶振重新恢復(fù)正常,程序會(huì)接著之前的地址運(yùn)行,如果程序?qū)G時(shí)鐘這種場景有特殊要求,應(yīng)用中需要手動(dòng)使能時(shí)鐘安全系統(tǒng),在其中做相關(guān)的保護(hù)措施。

4.2.2.如何區(qū)分 standby 復(fù)位和上電復(fù)位

僅通過 RCU 的 RCU_RSTSCK 寄存器無法區(qū)分是 standby 復(fù)位還是上電復(fù)位,需要結(jié)合查詢 PMU 的 PMU_CS 寄存器解決問題。

4.2.3.HSE 注意事項(xiàng)

GD32F30x 外部晶體起振時(shí)間會(huì)比 STM32F10x 系列要長,所以原有的晶體超時(shí)時(shí)間需要加大:

wKgZombbsHqACJhlAAAVI8_ZDrg950.png

調(diào)整前:

wKgaombbsIeAWxS4AAAVnjjpKlI827.png

調(diào)整后:

wKgZombbsJiAV0NbAAAVS0_jK5Q591.png

4.2.4.如何通過軟件區(qū)分 GD32 和 STM32

GD32F30x 在設(shè)計(jì)階段,已經(jīng)預(yù)留了相關(guān)寄存器,用戶只需要軟件讀取寄存器,即可獲取到相關(guān)的型號(hào)信息,GD32F30x 每個(gè)型號(hào)此處值都為固定值。

Code_Num=*( uint32_t *)( 0x40022100 );

4.2.5.GD32F30x Flash 取值零等待,軟件方面注意事項(xiàng)

GD32F30x 系列 Flash 為零等待設(shè)計(jì),在同主頻下,帶來了更高的性能體驗(yàn)。如果用戶代碼有用到 for 循環(huán)或者是 while 循環(huán)語句來做延時(shí),延時(shí)時(shí)間在GD32F30x系列上會(huì)變短,需要適當(dāng)?shù)募哟笱訒r(shí)參數(shù)或改用Timer來做延時(shí)函數(shù)。

4.2.6.GD32F30x 上電啟動(dòng)異常常見原因

1. 檢查板子上 Boot 0 引腳是否懸空,GD32F30x 運(yùn)行用戶程序必須要求 Boot0經(jīng) 10K 電阻接 GND;

2. 如果板子上有大功率器件(Wifi、GSM、GPS 等),檢查大功率器件開啟瞬間

VDD 是否存在跌落情況,如存在跌落可以適當(dāng)加大電源輸出端的負(fù)載電容;

3. 觀察芯片的復(fù)位管腳,復(fù)位管腳是否一直處于拉低狀態(tài),檢查是否供電異常

或者是芯片硬件看門狗使能了,芯片處于反復(fù)復(fù)位狀態(tài)。

4.2.7.MCU 無法正常使用 SWD 下載程序

1. 接線異常,SWD 相關(guān)的調(diào)試口未正常接好;

2. 芯片是否被讀保護(hù)或者處于反復(fù)復(fù)位狀態(tài);

3. SWD 的調(diào)試線過長或者是通信速率過高,適當(dāng)減短 SWD 數(shù)據(jù)線,同時(shí)降低SWD 速率;

4. 按照硬件指南給 SWD 添加相應(yīng)的上下拉電阻,提高通信抗干擾能力。

4.2.8.MCU 上電時(shí)間較長

由于設(shè)計(jì)架構(gòu)差異,GD32F30x 比 STM32F10x 的上電時(shí)間和 Standby 喚醒時(shí)間較長,時(shí)間約 144ms,若對時(shí)間沒有要求,可忽略。

4.2.9.代碼超過 256K 后執(zhí)行速度慢

GD32F30x 系列的 Flash 分為 Code 區(qū)(前 256K)和 Data 區(qū)(256K 以后的區(qū)域),二者在擦寫操作上沒有區(qū)別,但是讀操作時(shí)間上存在較大差別,Code 區(qū)代碼取值零等待,Data 區(qū)執(zhí)行代碼會(huì)有較長延時(shí)。應(yīng)用中如果涉及該架構(gòu)影響到使用可以通過分散加載來改善,具體做法參考分散加載應(yīng)用文檔。

4.3.CAN 模塊使用注意事項(xiàng)

4.3.1.CAN 發(fā)送出現(xiàn) ACK 錯(cuò)誤

假如出現(xiàn)類似 ACK 出錯(cuò)的問題,可以修改采樣點(diǎn),一般做法是將 BS1 值增大,BS2 減小。

4.3.2.CAN 接收異常,接收兩幀數(shù)據(jù)會(huì)丟一包數(shù)據(jù)

STM32 固件庫會(huì)調(diào)用 CAN_FIFORelease 函數(shù),如果手動(dòng)多調(diào)用一次清緩存的動(dòng)作會(huì)導(dǎo)致 CAN 接收丟包,也就是軟件中無需主動(dòng)調(diào)用 CAN_FIFORelease 函數(shù),CAN FIFO 會(huì)被自動(dòng)釋放。

4.4.低功耗注意事項(xiàng)

4.4.1.在 Stop 模式下,少數(shù)芯片功耗偏高

為了使功耗恢復(fù)正常,需要將沒用到的 IO 口全部配置成模擬輸入(AN)模式,芯片內(nèi)部未引出來的也要配置。

4.4.2.在 Stop 模式下,概率性不能喚醒

在不斷進(jìn)出 Stop,并且不斷有 timer 或者 systick 中斷時(shí),運(yùn)行很長時(shí)間后,在 Stop模式下有概率性的無法喚醒。

解決方案:

當(dāng)進(jìn)入 Stop 時(shí)(WFI/WFE),屏蔽掉除喚醒源中斷外的所有中斷,出 Stop 之后再打開其他中斷,代碼修改如下。

wKgaombbsKSAcuDxAAEjl91UG9A340.png

4.5.ADC 模塊使用注意事項(xiàng)

4.5.1.ADC 采集數(shù)據(jù)異常問題分析

1. ADC 通道的采集引腳未配置為模擬輸入,GD32 要求通道 IO 口必須配置為模擬輸入;

2. ADC 時(shí)鐘過高,ADC 采樣時(shí)鐘高于 40M 獲取到的數(shù)據(jù)不具有參考意義;

3. ADC 不耐 5V 的 IO 口被接入超過 VDDA 的電平信號(hào);

4. ADC 采樣值偏小或不穩(wěn)定,應(yīng)該適當(dāng)?shù)慕档?ADC 時(shí)鐘,加大采樣周期的值。

4.5.2.ADC1 和 ADC2 同步模式下,注意事項(xiàng)

如果 ADC1 和 ADC2 同步采集,ADC2 是跟著 ADC1 同步觸發(fā),此時(shí) ADC2 的注入組的觸發(fā)方式需要手動(dòng)配置成軟件觸發(fā)(默認(rèn)是 TIMER1_TRGO),否則可能導(dǎo)致 ADC 注入組無數(shù)據(jù)。

4.5.3.ADC_CR2 中的 ADCON 使用注意事項(xiàng)

ADC 使能以后需要在代碼里面插入 1 個(gè)通道的 ADC 轉(zhuǎn)換周期以上;

wKgZombbsUWAFpu2AAATzt6sJiA851.png

4.5.4.ADC 查詢法采集數(shù)據(jù),出現(xiàn)通道錯(cuò)亂的情況

ADC 使用查詢法采集數(shù)據(jù)時(shí),如果使能了 ADC 的 SCAN 模式,就有可能會(huì)出現(xiàn)ADC 數(shù)據(jù)錯(cuò)亂的情況;ADC 采集通道 SCAN 功能只適用于多通道注入采樣和DMA 模式。

4.5.5.ADC 在每次復(fù)位之后采樣值有偏差

由于 MCU 上電或者復(fù)位階段,ADC 校準(zhǔn)時(shí),電源不穩(wěn)定,導(dǎo)致校準(zhǔn)時(shí)出現(xiàn)偏差,ADC 值采樣均出現(xiàn)偏大或者偏小,可以關(guān)閉校準(zhǔn),或者等電源穩(wěn)定后再校準(zhǔn)解決該問題。

wKgaombbsY-AUvaqAAATVu2b35E025.png

4.6.RCU 模塊使用注意事項(xiàng)

當(dāng) IAP 時(shí),使用 GD32 的固件作為 boot,跳轉(zhuǎn)到 STM32 固件庫的 APP 后,可能造成系統(tǒng)時(shí)鐘不對,例如 uart 打印異常,timer 異常。

GD32F30x 系列 MCU 最高主頻可以運(yùn)行 120MHz,PLL 倍頻參數(shù)比 STM32 的多幾個(gè) bit,如下,出現(xiàn)異常時(shí),需要跳轉(zhuǎn)前將相關(guān)的 bit 復(fù)位。

wKgaombbsd2AGFuhAAAmm__Iw5s179.png

GD32 的 CFG0 寄存器的 bit30 bit28 bit27 為有效位。

wKgaombbse6ADVeRAAA6nXqS3fk904.png

STM32 的 RCC_CFGR 寄存器的 bit30 bit28 bit27 為保留位。

4.7.SPI 模塊使用注意事項(xiàng)

4.7.1.SPI 通信 BSY 標(biāo)志位

在 SPI 程序編寫的過程中,輪詢使用 BSY 作為通信標(biāo)志位,導(dǎo)致傳送數(shù)據(jù)丟失或者是錯(cuò)誤。

這主要是因?yàn)?GD32 的 BSY 標(biāo)志位不是在寫入 DR 后就置位的,而是發(fā)送完第一個(gè) bit 才被置位,傳輸過程中不要使用 BSY 作為每次傳輸?shù)呐袛?,使?TXE 和RXNE 來進(jìn)行判斷。

wKgaombbshGADkmGAABLxXRAdi4284.png

4.7.2.SPI 使能之后配置參數(shù)不生效

當(dāng)需要修改 SPI 模式或者速度的時(shí)候,需要將 SPI 先 disable,再修改參數(shù),最后再 enable.

4.7.3.SPI 從機(jī)模式管腳模式

從機(jī)模式下 CLK、MISO、NSS 需要將 IO 配置成 Input_floating,才能正常工作。

4.8.UART 模塊使用注意事項(xiàng)

4.8.1.UART DMA 注意事項(xiàng)

使用 UART DMA 發(fā)送數(shù)據(jù)的時(shí)候,可能丟掉一幀中的第一個(gè) byte 數(shù)據(jù),注意盡量不要在發(fā)送的時(shí)候頻繁的開關(guān) UART 發(fā)送,若測試無問題,可以忽略。

usart_transmit_config(USARTx,USART_TRANSMIT_ENABLE)假如要關(guān)閉 UART 發(fā)送,需要按照以下流程:

先開啟 usart_transmit_ enable 再去打開 dma_channel_enable,如下圖。

wKgZombbskKAPC7kAAAtuJaWK4Y909.png

4.9.RTC 模塊使用注意事項(xiàng)

4.9.1.LSE 驅(qū)動(dòng)模式

GD32 MCU 的 RTC 驅(qū)動(dòng)能力分四檔,默認(rèn)是強(qiáng)驅(qū)動(dòng)能力,若不使用 GD32 本身的固件庫,可能會(huì)強(qiáng)驅(qū)動(dòng)改成弱驅(qū)模式,造成部分機(jī)器不起振,則需要將寄存器RCU_BDCTL 的 LXTALDRI[1:0]配置成 11

wKgZombbsjSAHX8pAABUFHkXVxo407.pngwKgaombbsoOAdyMUAAGJxjbzOxM820.png

4.10.USB 模塊使用注意事項(xiàng)

USBD 通訊假如出現(xiàn) PMOUIF 和 ERRIF 錯(cuò)誤,可以通過屏蔽 CNTR_ESOFM 標(biāo)志來解決該問題。

wKgaombbspeAD4wfAAA26BfyDdg448.png

4.11.Flash 模塊使用注意事項(xiàng)

4.11.1.Flash 擦寫差異

GD32 MCU Flash 執(zhí)行速度快,但是寫操作慢,所以在對 Flash 操作的時(shí)候需要修改下面幾個(gè)函數(shù):

wKgaombbsqOAAWJQAAEPrBCaxJw442.png

4.11.2.Flash 操作地址差異

寫 Flash,必須采用絕對地址,也就是 0x08000000 為首地址。而對于讀操作,既可以使用絕對地址,也可以用相對地址 0x00000000。

教程GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6026

    文章

    44450

    瀏覽量

    630753
  • 嵌入式
    +關(guān)注

    關(guān)注

    5052

    文章

    18904

    瀏覽量

    300692
  • STM32
    +關(guān)注

    關(guān)注

    2262

    文章

    10846

    瀏覽量

    353647
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4833

    瀏覽量

    96819
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    403

    瀏覽量

    24048
收藏 人收藏

    評論

    相關(guān)推薦

    GD32 MCU 移植教程】1、 GD32F10x 移植 GD32F30x

    應(yīng)用程序移植新的微控制器。本應(yīng)用筆記旨在幫助您快速將應(yīng)用程序 GD32F10x 系列微控制器移植
    的頭像 發(fā)表于 08-30 09:52 ?1321次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】1、<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'>GD32F30x</b>

    GD32F30x系列固件庫

    GD32F30x系列固件庫包含GD32F303、GD32F305、GD32F307三個(gè)系列的最新
    發(fā)表于 08-21 09:00 ?163次下載

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

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

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

    本文檔介紹了STM32F10x系列GD32F1x0系列軟件移植操作。
    發(fā)表于 08-28 16:12 ?54次下載

    STM32F10x系列移植GD32F10x系列電子版

    STM32F10x系列移植GD32F10x系列
    發(fā)表于 05-31 09:22 ?0次下載

    STM32F10x系列移植GD32F10x系列指導(dǎo)文檔

    STM32F10x系列移植GD32F10x系列
    發(fā)表于 12-03 16:29 ?6次下載

    AN011 GD32F10x系列移植GD32F30x系列

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

    AN047 GD32E103&C103系列移植GD32F30x系列

    AN047 GD32E103&C103系列移植GD32F30x系列
    發(fā)表于 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'>到</b><b class='flag-5'>GD32F30x</b><b class='flag-5'>系列</b>

    AN053 GD32F30xGD32F403系列硬件開發(fā)指南

    AN053 GD32F30xGD32F403系列硬件開發(fā)指南
    發(fā)表于 03-01 18:52 ?5次下載
    AN053 <b class='flag-5'>GD32F30x</b>和<b class='flag-5'>GD32F</b>403<b class='flag-5'>系列</b>硬件開發(fā)指南

    AN047 GD32E103&C103移植GD32F30x

    兆易創(chuàng)新AN047GD32E103&C103系列移植GD32F30x系列AN047
    發(fā)表于 10-19 17:26 ?3次下載

    AN011 GD32F10x系列移植GD32F30x系列

    兆易創(chuàng)新AN011GD32F10x系列移植GD32F30x系列AN011
    發(fā)表于 10-19 17:26 ?3次下載

    兆易創(chuàng)新GD32F30x系列MCU用戶手冊

    兆易創(chuàng)新GD32F30x系列MCU用戶手冊GD32F30x系列MCU用戶手冊
    發(fā)表于 10-19 17:26 ?4次下載

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

    和低成本,所以在存量客戶 中可能會(huì)有越來越多的客戶會(huì)有 GD32F1x0 和 GD32F3x0 移植
    的頭像 發(fā)表于 09-04 09:38 ?295次閱讀
    【<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

    本應(yīng)用筆記旨在幫助您快速將基于 GD32F10x 2.0 版本及以上固件庫開發(fā)的應(yīng)用程序GD32F10x 系列微控制器移植
    的頭像 發(fā)表于 09-05 09:40 ?295次閱讀
    【<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 移植教程】8、 STM32F4xx 系列移植 GD32F4xx 系

    、外設(shè)及性能對比以及 STM32F4xx 移植 GD32F4xx 的移植步驟,旨在讓開發(fā)者能
    的頭像 發(fā)表于 09-06 09:40 ?729次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>移植</b>教程】8、<b class='flag-5'>從</b> <b class='flag-5'>STM32F</b>4xx <b class='flag-5'>系列</b><b class='flag-5'>移植</b><b class='flag-5'>到</b> <b class='flag-5'>GD32F</b>4xx 系