缺貨漲價(jià)潮下,使用GD32替代STM32的體驗(yàn)
使用GD替代ST之初體驗(yàn)(GD32F450ZGT6替代STM32F407ZGT)
A先說(shuō)點(diǎn)廢話
大家都知道,ST漲價(jià)厲害,單位的物料成本也是頻頻告急。網(wǎng)上一直傳,什么完美替代,直接就能用。說(shuō)不心動(dòng)吧,那是假的。
相信完美替代么?我是做技術(shù)的,不是銷售,真的能無(wú)縫替代,那不就是一個(gè)東西么?我是不信的,到底怎么樣,這次試試看。
先看看GD和ST枯燥的對(duì)比吧
這樣看來(lái),貌似GD比ST的性能有所提升啊。
B正式開始嘗試替代
當(dāng)前所用芯片STM32F407ZGT6,聯(lián)系了GD的代理,要了樣片,居然給我的是GD32F450ZGT6,按照慣性思維不應(yīng)該也是407么?
聯(lián)系技術(shù)支持,聊了很多,大概的意思是可能發(fā)錯(cuò)芯片了,但是450引腳也是兼容的,可以先試試~~~
好吧,既來(lái)之則安之。
下面記錄下折騰的過(guò)程,因?yàn)橐恢笔褂酶蓛舻腟TM32的底子,很少建立工程了,中間出了一些問(wèn)題,后來(lái)想想,一并貼出來(lái)吧,分享了有個(gè)人能少采坑也是好的。
1、??更換芯片(GD32F450ZGT6替代STM32F407ZGT6)
這塊板子用的資源比較多,串口、AD、norflash、nandflash、FRam、io、顯示
2、??原st的程序直接下載。(我相信是不行的,但被完美替代的魔咒念了很久,必須嘗試下)
答案是:不可以。(直接下不行,要重新編譯下,后面小結(jié)會(huì)說(shuō))
3、??這下心里踏實(shí)了,按部就班慢慢捋一捋。
決定先完善下開發(fā)環(huán)境并且看看官網(wǎng)有沒(méi)有例程,跑個(gè)簡(jiǎn)單的試一試。
3.1把開發(fā)環(huán)境搭建好
先看看官網(wǎng)http://www.gd32mcu.com/cn/download/7?kw=GD32F4
然后找找官網(wǎng)的例程
3.2我用的是MDK5,首先安裝支持包
這是官網(wǎng)下載的支持包
一切就緒,發(fā)現(xiàn)有些問(wèn)題,不能選擇芯片,這是什么鬼?難道是版本問(wèn)題?
不確定是不是這里的問(wèn)題,mdk從5.14升級(jí)到5.23試試。
然后還是有問(wèn)題,這里不知道為什么有問(wèn)題,自己添加一下。
然后,還是不對(duì),不能選擇GD的芯片,怎么辦?
我要開始暴躁了,怎么哪都是事?
喝口水,去個(gè)廁所~~~
剛官網(wǎng)的壓縮包里,還有個(gè)文件
本來(lái)以為這個(gè)是要keil4才需要安裝的,安裝下試試吧。
(這個(gè)也許不需要,中間解決問(wèn)題的時(shí)候,急躁了寫,總被完美替代的魔咒環(huán)繞,來(lái)回?fù)Q了幾個(gè)工程,各位搭建環(huán)境時(shí),耐心點(diǎn)~~~)
最終,可以了:
然后Debug選擇Jlink
至此,開發(fā)環(huán)境應(yīng)該是可以了,繼續(xù)。
3.3用官網(wǎng)的例程,先看看是不是程序能跑起來(lái)。
這里使用最簡(jiǎn)單的GPIO控制led。
由于使用的我的板子硬件上和例程不一樣,需將對(duì)應(yīng)的IO改一下
修改如下:
int main(void)
{????/*?configure?systick?*/????systick_config();????????/*?enable?the?LEDs?GPIO?clock?*/????rcu_periph_clock_enable(RCU_GPIOB);????????/*?我的板子LED是PB8、PB9?需要修改如下*/?????gpio_mode_set(GPIOB,?GPIO_MODE_OUTPUT,?GPIO_PUPD_NONE,?GPIO_PIN_8?|?GPIO_PIN_9);????gpio_output_options_set(GPIOB,?GPIO_OTYPE_PP,?GPIO_OSPEED_50MHZ,?GPIO_PIN_8?|?GPIO_PIN_9);????gpio_bit_reset(GPIOB,?GPIO_PIN_8?|?GPIO_PIN_9);
while(1){
????????/*?先隨便設(shè)置下,一個(gè)亮一個(gè)滅*/???????gpio_bit_set(GPIOB,?GPIO_PIN_8);??????gpio_bit_reset(GPIOB,?GPIO_PIN_9); delay_1ms(400);
????/*?狀態(tài)翻轉(zhuǎn)*/???????gpio_bit_set(GPIOB,?GPIO_PIN_9);??????gpio_bit_reset(GPIOB,?GPIO_PIN_8);??????delay_1ms(400);????}}其余的地方,不做修改,編譯通過(guò),下載~
啊歐,這樣了
大意了,之前用ST的,我這里直接默認(rèn)就是SW,更改一下就好了.
然后下載,ok。
兩個(gè)黃綠色的LED3,LED1就是程序里對(duì)應(yīng)的PB8和PB9控制的。
LED3和LED1交替閃爍(我不知道能不能插入小視頻,這里拍了兩張照片示意下)
至此,程序是能跑起來(lái)了,也算是沒(méi)有白折騰。
如果想使用GD的庫(kù)的話,其他功能,后邊慢慢添加吧。
開發(fā)環(huán)境和GD的固件庫(kù)沒(méi)問(wèn)題,一邊截屏寫文檔,一邊干活,還真不是容易的事。
用GD的固件庫(kù),程序可以跑起來(lái),說(shuō)明引腳兼容不是事,后面又返回去試了試我之前的ST程序,發(fā)現(xiàn)竟然有意想不到的驚喜。
因?yàn)楸容^順利,就不截屏了,直接看小結(jié)。
小結(jié):
1、一定要認(rèn)真搭建開發(fā)環(huán)境,心里不要有抵觸,工欲善其事,必先利其器。
(由于ST開發(fā)的比較成熟,有干凈的底子程序,因此對(duì)于開發(fā)環(huán)境搭建、工程建立有所疏忽,遇到了一些小阻力,索性也都貼了出來(lái)。)
2、關(guān)于庫(kù),還是建議使用GD的庫(kù)。
(雖然我當(dāng)前用ST的庫(kù)也可以,但是心里上還是覺(jué)得,是誰(shuí)的東西,用誰(shuí)的庫(kù)比較好。這樣做起來(lái),后期也踏實(shí)。如果使用資源不多的話,還是把庫(kù)更新過(guò)來(lái)吧。)
但對(duì)于之前的ST程序也做了嘗試。
? ? 2.1對(duì)于ST的程序HAL庫(kù) uciii emwin,程序重新編譯下載,正常運(yùn)行,具體功能模塊功能初步測(cè)試正常。
(以為硬件是FSMC 8875的形式,當(dāng)時(shí)技術(shù)支持說(shuō),顯示可能會(huì)有問(wèn)題,但實(shí)測(cè)功能正常。并且開始支持說(shuō),使用HAL庫(kù)可能不行,但我這里卻可以,是我吃了什么藥了么?可別使用我抽家園幣的運(yùn)氣啊~~~)
? ? 2.2對(duì)于ST的標(biāo)準(zhǔn)庫(kù) uciii試了一下,程序重新編譯下載,簡(jiǎn)單測(cè)試串口和IO正常。
3、初步測(cè)試的話,還真可以說(shuō)是完美替代。
開始程序有問(wèn)題,是開發(fā)環(huán)境的事。安裝了GD的pack之后,MDK重新選擇芯片和片上FLASH,編譯下載程序就能跑起來(lái)。這一點(diǎn),也確實(shí)驚到了我,看來(lái)是我目光短淺了,國(guó)產(chǎn)芯片崛起的曙光來(lái)了。
選擇替代芯片時(shí),官網(wǎng)有個(gè)選型手冊(cè),參考一下,也可以聯(lián)系下技術(shù)支持,他們應(yīng)該有一些前人使用的經(jīng)驗(yàn),可以少采坑。
END
本文由21ic論壇藍(lán)V作者Gavin3389原創(chuàng)撰寫
▍






