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