国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

gd32f103可以完全替代stm32f103嗎

發(fā)布者:Xiaoxue666最新更新時(shí)間:2024-11-19 來(lái)源: elecfans關(guān)鍵字:gd32f103  stm32f103 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

GD32F103是中國(guó)廠商GigaDevice推出的一款低成本、高性能的微控制器產(chǎn)品線。STM32F103是意法半導(dǎo)體(STMicroelectronics)的旗艦產(chǎn)品之一,享有良好的聲譽(yù)和廣泛的市場(chǎng)份額。兩個(gè)系列都基于ARM Cortex-M3內(nèi)核,因此在功能和性能上有一些相似之處。

一、技術(shù)特點(diǎn)比較:
1.1 處理器核心:
GD32F103和STM32F103都采用了ARM Cortex-M3內(nèi)核,因此在核心處理能力和指令集方面并無(wú)差異。

1.2 主頻和性能:
兩個(gè)系列都提供了多個(gè)型號(hào),主頻從72MHz到120MHz不等。但是需要注意的是,盡管在頻率上存在一些差異,但兩個(gè)系列的處理器都是32位的,因此在處理數(shù)據(jù)和執(zhí)行指令方面具有相似的性能。

1.3 存儲(chǔ)器:
GD32F103和STM32F103都具有多種存儲(chǔ)器配置,包括閃存(Flash)和隨機(jī)存取存儲(chǔ)器(SRAM)。具體的容量視型號(hào)而定,但總體而言,兩個(gè)系列的存儲(chǔ)器規(guī)格相似,因此可以實(shí)現(xiàn)類(lèi)似的應(yīng)用。

二、生態(tài)系統(tǒng)比較:
2.1 開(kāi)發(fā)工具和軟件支持:
作為領(lǐng)先的微控制器廠商,意法半導(dǎo)體(STMicroelectronics)為STM32系列提供了廣泛的軟件工具和開(kāi)發(fā)支持。這包括ST的標(biāo)準(zhǔn)開(kāi)發(fā)環(huán)境(如STM32CubeIDE,MDK-ARM等),以及豐富的軟件庫(kù)和教程資源。而GD32F103相對(duì)較新,其軟件工具和支持生態(tài)系統(tǒng)相對(duì)較小。

2.2 開(kāi)發(fā)板和外設(shè)支持:
STM32F103系列在市場(chǎng)上有許多開(kāi)發(fā)板可供選擇,包括ST官方提供的Discovery和Nucleo系列,還有眾多的第三方開(kāi)發(fā)板。這些板子通常配備了各種常用的外設(shè)和標(biāo)準(zhǔn)接口,方便用戶(hù)進(jìn)行快速原型設(shè)計(jì)和開(kāi)發(fā)。而GD32F103則相對(duì)較少提供官方的開(kāi)發(fā)板和周邊外設(shè)。

三、兼容性問(wèn)題:
盡管GD32F103的技術(shù)特點(diǎn)和性能與STM32F103相似,但由于其來(lái)自不同的廠商,因此在一些細(xì)節(jié)上可能存在一些兼容性問(wèn)題。例如,GD32F103的外設(shè)寄存器映射和寄存器定義可能與STM32F103略有不同。此外,由于軟件工具和生態(tài)系統(tǒng)的差異,GD32F103的固件庫(kù)和驅(qū)動(dòng)程序可能需要一些修改才能正確適配到STM32F103的項(xiàng)目中。

綜上所述,雖然GD32F103可以在某些方面替代STM32F103,但在整體上,它們之間仍存在一些差異和兼容性問(wèn)題。如果您已經(jīng)有了基于STM32F103的項(xiàng)目并且需要替換芯片,可能需要對(duì)軟件代碼進(jìn)行一定的修改。此外,如果您需要充分利用廣泛的軟件工具和開(kāi)發(fā)支持生態(tài)系統(tǒng),STM32F103系列可能更為合適。在選擇替代芯片時(shí),最好根據(jù)具體的需求和項(xiàng)目要求綜合考慮。


關(guān)鍵字:gd32f103  stm32f103 引用地址:gd32f103可以完全替代stm32f103嗎

上一篇:GD32F303固件庫(kù)開(kāi)發(fā)(7)----printf打印配置
下一篇:GD32F303固件庫(kù)開(kāi)發(fā)(6)----GPIO輸入函數(shù)說(shuō)明

推薦閱讀最新更新時(shí)間:2025-07-03 08:57

STM32F103F103與TFT液晶屏模塊控制器的接口電路
如下圖所示,STM32F103F103通過(guò)I/O 接口與TFT液晶模塊相連接,雖然很多的TFT液晶模塊中內(nèi)置的液晶屏控制器都支持SPI 接口通信(如ILI9325)但由于SPI傳輸速度較慢不利于液晶數(shù)據(jù)的快速傳輸,因此很多液晶模塊都選擇采用并口通信。 其中PB0-PB15分別與D0-D15相連作為數(shù)據(jù)通信口,PA0、PA4、PA5、PA6、PA7 分別連接RESET、CS、RS、WR、RD,作為控制口,實(shí)現(xiàn)復(fù)位、片選、指令數(shù)據(jù)切換、讀寫(xiě)等控制功能。      STM32F103F103與TFT液晶模塊接口電路
[單片機(jī)]
<font color='red'>STM32F103</font>F103與TFT液晶屏模塊控制器的接口電路
STM32F103C8T6用官方bootloader實(shí)現(xiàn)IAP升級(jí)操作方法
在使用STM32F103C8T6單片機(jī)IAP功能時(shí),可以自己寫(xiě)bootloader程序,也可以使用官方bootloader文件。下面說(shuō)一下使用官方bootloader的使用方法。 首先下載官方bootloader文件 目前使用的是這個(gè)版本,打開(kāi)文件夾,選擇適合自己編譯器的工程。 目前使用的是keil,所以打開(kāi)MDK-ARM文件夾 打開(kāi)IAP工程 打開(kāi)后根據(jù)自己的單片機(jī)型號(hào),對(duì)工程進(jìn)行簡(jiǎn)單的修改。用的是STM32F103C8T6單片機(jī),F(xiàn)LASH為64K,SRAM為20K。 設(shè)置IROM1的起始地址和大小。 設(shè)置引用的頭文件,STM32F103C8T6為中等容量,所以設(shè)置文件為STM32F10X_MD,。
[單片機(jī)]
<font color='red'>STM32F103</font>C8T6用官方bootloader實(shí)現(xiàn)IAP升級(jí)操作方法
基于IAR環(huán)境下STM32F103單片機(jī)讀取BME280程序
自己編寫(xiě)的基于IAR環(huán)境下STM32F103單片機(jī)讀取BME280程序,沒(méi)有太多的寄存器操作,簡(jiǎn)單易懂,可以直接調(diào)用,上電后只要對(duì)IO口初始化,調(diào)用函數(shù)Bme_ReadDigValue()讀取校準(zhǔn)寄存器參數(shù)并保存,再調(diào)用函數(shù)Bme_Init()初始化之后就可以用函數(shù)Bme_ReadStatus()讀取傳感器狀態(tài)判斷是否讀取數(shù)據(jù)了,也可不判斷傳感器狀態(tài)直接讀取數(shù)據(jù),讀取數(shù)據(jù)直接調(diào)用函數(shù)ReadBme280()。 單片機(jī)源程序: void ReadBme280() { u32 value_ad; double var1; double var2; double var3; double
[單片機(jī)]
STM32F103在線升級(jí)程序
花了四天時(shí)間才把IAP功能做好。其中也遇到許多的坑,這次把這次IAP功能實(shí)現(xiàn)過(guò)程遇到的坑把它分享出來(lái)。一開(kāi)始做iap的時(shí)候也是先從網(wǎng)上看別人的實(shí)現(xiàn)方法,其中就下載了一套別人的程序,不過(guò)主控芯片是STM32F103zv,就是不是我想要的那個(gè)型號(hào),還有他的邏輯跟我的有點(diǎn)不一樣。所以才走了那么多天的坑。 1、先移植別人的flash燒寫(xiě)代碼跟運(yùn)行APP應(yīng)用程序的代碼,基本各個(gè)版本大同小異。2、然后實(shí)現(xiàn)自己的UART,實(shí)現(xiàn)串口接收程序(因?yàn)橐ㄟ^(guò)串口接收APP應(yīng)用固件)3、然后接收到的固件燒寫(xiě)進(jìn)flash4、最后就是運(yùn)行到APP應(yīng)用程序了。基本實(shí)現(xiàn)iap也是這幾個(gè)步驟,但是就是不成功一開(kāi)始。然后就開(kāi)始查找問(wèn)題: 1、查看接收的固件對(duì)
[單片機(jī)]
stm32f103 學(xué)習(xí)筆記 —— 07 CAN通訊協(xié)議
1.報(bào)文種類(lèi) 數(shù)據(jù)幀 :用于節(jié)點(diǎn)向外傳送數(shù)據(jù) 遙控幀 :用于向遠(yuǎn)端節(jié)點(diǎn)請(qǐng)求數(shù)據(jù) 錯(cuò)誤幀 :用于向遠(yuǎn)端節(jié)點(diǎn)通知校驗(yàn)錯(cuò)誤,請(qǐng)求重新發(fā)送上一個(gè)數(shù)據(jù) 過(guò)載幀 :用于通知遠(yuǎn)端節(jié)點(diǎn)本節(jié)點(diǎn)尚未做好接受準(zhǔn)備 幀間隔 :用于將數(shù)據(jù)幀及遙控幀與前面的幀分離開(kāi)來(lái) 2.報(bào)文結(jié)構(gòu)(以數(shù)據(jù)幀為例) 以一個(gè)顯性位(邏輯0)開(kāi)始,以7個(gè)連續(xù)的隱性位(邏輯1)結(jié)束 幀起始(Start Of Frame):只有一個(gè)數(shù)據(jù)位(顯性電平,邏輯0) 仲裁段 :決定發(fā)送優(yōu)先級(jí)(通過(guò)“線與”的方式,即同時(shí)出現(xiàn)顯性和隱形電平時(shí)總線狀態(tài)被置為顯性);CAN控制器根據(jù)ID過(guò)濾報(bào)文 遠(yuǎn)程傳輸請(qǐng)求位(Remote Transmission Reques
[單片機(jī)]
<font color='red'>stm32f103</font> 學(xué)習(xí)筆記 —— 07 CAN通訊協(xié)議
【庫(kù)函數(shù)版本】基于STM32F103的MPU6050的原始數(shù)據(jù)讀取程序詳解
因?yàn)槲业牟┛鸵呀?jīng)對(duì)I2C協(xié)議的詳細(xì)過(guò)程已經(jīng)做了一個(gè)例子!所以這個(gè)MPU6050的程序我將使用庫(kù)函數(shù)完成! 第一步:硬件連接: 第二步:初始化I2C端口的函數(shù): /***PB6/PB7 端口初始化****/ static void I2C_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOB,ENABLE ); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); GPIO_InitStructure.GP
[單片機(jī)]
【庫(kù)函數(shù)版本】基于<font color='red'>STM32F103</font>的MPU6050的原始數(shù)據(jù)讀取程序詳解
STM32F103移植uCOS-III,keil4調(diào)試卡在CPU_TS_TmrRd函數(shù)過(guò)不去
最近項(xiàng)目需要在STM32F103板子上移植uCOS-III系統(tǒng),移植過(guò)程參考安富萊STM32F407之uCOS-III教程,參考網(wǎng)址 移植uCOS-III系統(tǒng) 雖然教程是關(guān)于F407的板子,但大體是相同的。為了省事,我直接在原來(lái)的工程中加上uCOS-III源代碼。首先在工程目錄下創(chuàng)建一個(gè)uCOS-III文件夾,然后把安富萊的uCOS-III代碼拷貝到新建的uCOS-III文件夾中,對(duì)應(yīng)的目錄如下: 這里我把原來(lái)uCOS-III下Ports和Source目錄分開(kāi)為uCOS-Ports和uCOS-Source。uCOS-User目錄存放的是安富萊User目錄下文件,是需要自己配置修改的一些文件,這里把bsp.h、bsp.c文件
[單片機(jī)]
<font color='red'>STM32F103</font>移植uCOS-III,keil4調(diào)試卡在CPU_TS_TmrRd函數(shù)過(guò)不去
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
).substr(0,1500) }); } $(function(){ $(".ahover").each(function(i){ $(this).attr("indexb",i); }); $(".ahover").mouseDelay().hover(function(){ var tindex = $(this).attr("indexb"); $(".ahover").each(function(i){ if(parseInt(tindex)!=parseInt(i)){ $(this).find('.show-message').animate({height:"0px"}, 1000); } }); $(this).find('.show-message').animate({height:"80px"},1000); },function(){ $(this).find('.show-message').animate({height:"0px"}, 1000); }); });