html自动生成工具_关于STM32代码自动生成的工具的进度....
前情提要:STM32代碼自動(dòng)生成工具_(dá)本想...但是...可是...所以
首先說(shuō)一下那幾天大家的反應(yīng),有的持觀望態(tài)度,畢竟STM32CUBE很香;有的很激動(dòng),期待我快點(diǎn)出東西;還有的很淡定,知道我在挖坑,填坑遙遙無(wú)絕期;還有的,希望我把當(dāng)前這個(gè)工具分享出來(lái)………..
兄弟,作者都已經(jīng)說(shuō)了不要分享,你這樣合適嗎?
退一步,我是怎么得來(lái)這個(gè)工具的?網(wǎng)上搜的,你要是真想要……..
還要感謝一位網(wǎng)友,他分享給我一個(gè)C#的反編譯工具,直接把那個(gè)軟件反編譯成了源碼。
這種反編譯出來(lái)的源碼和作者手寫(xiě)的,在實(shí)現(xiàn)方法上應(yīng)該不一樣。打個(gè)比方,源碼里我用for循環(huán)輸出10個(gè)字符串,反編譯出來(lái)的代碼,估計(jì)就是老老實(shí)實(shí)輸出10個(gè)字符串。
然后聊聊我手上現(xiàn)有的幾款代碼自動(dòng)生成工具(是的,我不止有一個(gè)),當(dāng)然,CUBE就不聊了,咱目前沒(méi)這能力。
我最開(kāi)始接觸到代碼自動(dòng)生成,是網(wǎng)上的一些小工具,有51的,有AVR的。但51的我只在入門階段使用,AVR的我已經(jīng)很久不用了,所以印象一般。
第一次印象比較深的時(shí)候,是使用PIC單片機(jī)(就是收購(gòu)ATMEL的那個(gè)土豪),他們家的編譯器有一個(gè)小插件叫:MCC,輸入一些配置,就能自動(dòng)生成大部分初始化所需的代碼。很好用,當(dāng)時(shí)在工作中幫我省了很多時(shí)間。
再后來(lái),接觸ST系列,有8有32。8分為幾個(gè)系列,有S(增強(qiáng)型)系列,有L(低功耗型)系列,有A(汽車級(jí))系列,如果有遺漏歡迎補(bǔ)充。
我用S和L多一些,但每次配寄存器都是一個(gè)漫長(zhǎng)的工程,拿著手冊(cè)翻阿翻。忽然有一天,我想,有沒(méi)有省力一些的方法,然后開(kāi)始有目的的上網(wǎng)。找到了兩個(gè),一個(gè)已經(jīng)分享過(guò)了,我放兩個(gè)圖:
他針對(duì)的是S系列,當(dāng)時(shí)提過(guò),這是一個(gè)大三的學(xué)生寫(xiě)的工具。功能上雖然有小bug,但已經(jīng)能替代大部分手工了(想想我大三的時(shí)候在干嘛)。
如果有懂軟件的,應(yīng)該能想想到這個(gè)工作量有多大。把每個(gè)函數(shù)翻譯成中文還好,麻煩的地方在于,要給每個(gè)函數(shù)設(shè)計(jì)一個(gè)右邊用來(lái)配置的界面,注意,是每一個(gè)!即便可以針對(duì)功能類似的函數(shù)進(jìn)行分類,使用同一個(gè)頁(yè)面,但是每個(gè)參數(shù)的功能描述就足夠把人累傻。
這是個(gè)力氣活!
然后是另一個(gè),作者的意思是這軟件只針對(duì)8的L系列,如下:
它在使用前需要導(dǎo)入完整的庫(kù)文件。導(dǎo)入后如下:
相比第一個(gè)軟件,它使用了一種很巧妙的方式。注意看這兩個(gè)圖參數(shù)的擺放位置,懂的人,從它提示要導(dǎo)入庫(kù)文件應(yīng)該就懂了。
是的,它把庫(kù)文件做了一下整理,判斷出哪部分是函數(shù)名,哪部分是參數(shù)。函數(shù)直接在上面顯示,然后把參數(shù)按順序添加到combox里。
我推測(cè),ADC1那個(gè)參數(shù)下面應(yīng)該還有一列combox,只是屬性設(shè)置了不可見(jiàn)。當(dāng)有參數(shù)添加到combox里時(shí),屬性設(shè)置為可見(jiàn)。
我試著導(dǎo)入S系列和32的庫(kù),出現(xiàn)部分報(bào)錯(cuò)的情況~~~
第三個(gè)就是那天你們見(jiàn)到的那個(gè)。說(shuō)實(shí)話,這三個(gè)風(fēng)格差不多,實(shí)現(xiàn)方式也都差不太多。個(gè)人推測(cè)第一種和第三種費(fèi)力一些,第二種省事一些。
另外就是STM8的庫(kù)和32的庫(kù),在功能實(shí)現(xiàn)上,有一些設(shè)計(jì)上的差別。例如8,初始化GPIO,一行代碼就夠了:
GPIO_Init(GPIOA, GPIO_PIN_0, GPIO_MODE_IN_FL_NO_IT);但是32,需要先定義一個(gè)GPIO的結(jié)構(gòu)體,對(duì)結(jié)構(gòu)體的參數(shù)做配置,然后再通過(guò)初始化函數(shù)導(dǎo)入結(jié)構(gòu)體里配置的值:
GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//最高輸出速率10MHzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模擬輸入GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化外設(shè)GPIOx寄存器這就導(dǎo)致,不能用第二個(gè)工具的方法直接整理庫(kù)函數(shù),還要多做一些工作。否則,我直接給你生成一行:
GPIO_Init(GPIOA, &GPIO_InitStructure);
你會(huì)一臉懵逼,然后來(lái)罵我~~~
然后說(shuō)我的思路,懂我的人都知道,我懶……..
還是想以第二個(gè)工具的思路為主,但是針對(duì)GPIO初始化、TIMER初始化等功能還是要做一些功能上的增加,否則這個(gè)工具就沒(méi)什么意義了。
所以工作分兩部分,一部分是對(duì)標(biāo)準(zhǔn)外設(shè)庫(kù)進(jìn)行整理;另一部分是添加初始化相關(guān)的代碼進(jìn)行配合。
第一部分應(yīng)該比較省事,第二部分就是個(gè)力氣活了~~~
最后是進(jìn)度………….
沒(méi)事了,散了吧~~~
不對(duì),還有個(gè)事,誰(shuí)幫我想個(gè)霸氣的名字?
總結(jié)
以上是生活随笔為你收集整理的html自动生成工具_关于STM32代码自动生成的工具的进度....的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 黑苹果关机重启后蓝牙连接不上_手机要关机
- 下一篇: win10打开程序响应很慢_Win10系