最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

單片機(jī)實(shí)現(xiàn)模塊化編程:思維+實(shí)例+系統(tǒng)教程(實(shí)用程度令人發(fā)指)

2022-06-07 11:59 作者:大方老師單片機(jī)課堂  | 我要投稿

單片機(jī)怎么實(shí)現(xiàn)模塊化編程?思+實(shí)+系統(tǒng)教(實(shí)用程度令人發(fā))

\\\插播一條:文章末尾有驚喜~///

在剛初始從事研發(fā)工作的那幾年,我主要做單片機(jī)軟件開發(fā)的工作,雖然功能吧都能實(shí)現(xiàn),但是總覺得缺少了點(diǎn)什么。

總是感覺自己寫的程序不夠完美,移植性不夠好,功能也不好擴(kuò)展,每次寫完程序最怕的就是客戶要改功能。

假如程序架構(gòu)寫的不好,一改會(huì)影響到很多功能,哪怕原來是燈每秒1次,改成每秒3次這種看起來很簡略的功能。

對于程序提升這塊,假如沒有人一個(gè)厲害的人帶你,真的很難提升。

主要難在兩個(gè)方面:

1.你的認(rèn)知

有時(shí)候不是你做了越久,寫的代碼就越好,由于你一直在自己的認(rèn)知水平內(nèi)寫代碼。

假如不提升你的認(rèn)知,代碼自然也不會(huì)提升,所以想要提升代碼水平,首先要提升的是你的認(rèn)知。

2.找不到好的教程或?qū)嵗?/span>

終有一天你要做中大型項(xiàng)目標(biāo)時(shí)候就會(huì)發(fā)現(xiàn),自己的代碼水平和思維要提升了,但是找不到好的教程和方法。

這塊最好的提升辦法就是去找那些大佬寫的代碼,假如說公司比較資深的工程師,有事沒事多請他們吃吃飯,喝喝水搞好點(diǎn)關(guān)系。

一般來說都愿意把自己的代碼分享給你,然后你再看他們寫的代碼,有哪些是值得進(jìn)修的,最重要的是他們實(shí)現(xiàn)功能的思維,然后用代碼怎么去實(shí)現(xiàn)?

假如別人不愿意分享給你,那能夠去挖一下現(xiàn)成穩(wěn)定的,假如STM32的規(guī)范庫,藍(lán)牙協(xié)議棧等等。

我當(dāng)初的提升方法是在某個(gè)公司做產(chǎn)品的時(shí)候,正好有個(gè)工程師離任了,老大把他寫的代碼給我來維護(hù)。

當(dāng)我第一眼看到他代碼的時(shí)候,覺得寫的很復(fù)雜,感覺在秀技術(shù),完全沒必要這樣去寫。

然后我用他的代碼拿配套的產(chǎn)品來測試,發(fā)現(xiàn)很穩(wěn)定,我嘗試依照我的思維改了以后,就出現(xiàn)了各種問題。

慢慢地,鉆研越深,我越是深刻體會(huì)這位工程師為什么要那樣去寫,自己跟他完全不是一個(gè)級別的。

其實(shí)他的就是基于模塊化編程的思維去做的,當(dāng)時(shí)還沒吃透他的代碼,我是從那家公司離任后又過了幾年才徹底領(lǐng)悟他的代碼。

一、單片機(jī)模塊化編程怎么實(shí)現(xiàn)?

基于他的這種思維和實(shí)現(xiàn)方法,再聯(lián)合我自己多年經(jīng)歷,最后自己又創(chuàng)新了一個(gè)全新的架構(gòu)。

這個(gè)架構(gòu)分2個(gè)局部:

1.內(nèi)核

內(nèi)核主要是用來管理任務(wù)的,除了管理還提供了一些隊(duì)列算法接口,方便產(chǎn)品使用。

2.模塊化編程思維

對于單片機(jī)產(chǎn)品開發(fā)來說,我覺得能夠分3層:硬件層、中間層、應(yīng)用層。

我們先來說說中間層和應(yīng)用層。

中間層:就是不算是真正產(chǎn)品的功能代碼,假如說解析某種自定義協(xié)議,協(xié)議解析完以后的數(shù)據(jù)才是真正產(chǎn)品功能數(shù)據(jù)。

上圖就是對云平臺(tái)協(xié)議進(jìn)行解析,假如說解wifi是否連接的命令的程序,相對應(yīng)用層來說,我們只須要wifi已連接wifi未連接這兩個(gè)明確的數(shù)據(jù),而不做詳細(xì)解析程序。

這樣做最大的益處就是,假設(shè)我們換了一家云平臺(tái),應(yīng)用層的程序不用改,只須要改硬件層和中間層程序即可,不至于由于換了一家云平臺(tái),導(dǎo)致整個(gè)產(chǎn)品程序崩盤的問題。

一般來說,假如不是中大項(xiàng)目,我都直接省略中間層,畢竟代碼量大了,會(huì)浪費(fèi)批量出產(chǎn)時(shí)的時(shí)長,也浪費(fèi)單片機(jī)資源。

硬件層:我們重點(diǎn)來說說這個(gè),這個(gè)真的是很多人痛到不能再痛的痛點(diǎn),也是很多工作幾年工程師一直不知道怎么攻克的問題,專門是用來采集單片機(jī)輸寫數(shù)據(jù),或者控制硬件電路輸出。

采集信號(hào)有很多類型,假如說按鍵檢測、ADC檢測、紅外信號(hào)接管、串口接管SPI、IIC等這種就是屬于硬件層輸寫數(shù)據(jù)。

我拿按鍵輸寫來舉例,先來看看原理圖:

電路非常簡略,就幾個(gè)按鍵串上電阻接了單片機(jī)引腳,按鍵按下就會(huì)有一個(gè)低電平的信號(hào)給到單片機(jī),單片機(jī)就是通過檢測對應(yīng)引腳是否低電平來判斷按鍵是否按下。

回到我們程序局部,按鍵檢測過程我就不講解了,我們的關(guān)鍵在于檢測到某個(gè)按鍵按下以后,要怎么把這個(gè)值傳給應(yīng)用層。

那我是使用了回調(diào)函數(shù)來傳遞的,這樣做的益處就是,真正能做到這個(gè)按鍵硬件層檢測代碼和應(yīng)用層產(chǎn)品程序獨(dú)立,增強(qiáng)移植性。

我們要使用按鍵功能的時(shí)候,直接注冊下按鍵回調(diào)函數(shù)就能夠了,如下圖:

這樣做還是比較靈敏的,不管是應(yīng)用層,還是中間層,哪里須要用到按鍵功能,我就在哪里調(diào)用注冊函數(shù)。

Ok,硬件層采集數(shù)據(jù)根本上都能夠用這種方式來處理,這樣就能做到真正的模塊化,這個(gè)也是我以前一直想不通鉆研了很久的處理方式。

下面說說控制硬件電路輸出,這種輸出型的沒什么好說的,不波及到硬件層的采集數(shù)據(jù)傳遞到應(yīng)用層,直接調(diào)用硬件層的控制接口就行了。

假如說我應(yīng)用層要控制一個(gè)LED燈點(diǎn)亮,代碼簡略到令人發(fā)指!

快捷入STM32單片機(jī)-軟件篇

關(guān)于這個(gè)STM32的編程開發(fā)環(huán)Keil,網(wǎng)上有太多相關(guān)的資源,而且大都講解的非常詳細(xì).所以本篇文章沒意于深層細(xì)節(jié),只會(huì)提供我進(jìn)修時(shí)候的一些體會(huì),幫助你更好的掌握相關(guān)知識(shí).

1.規(guī)范外設(shè)(Standard Peripheral Library)

最初,我們都是對單片機(jī)的寄存器直接進(jìn)行操,這樣運(yùn)行速讀更,但是代碼可讀性不,編程艱,規(guī)范外設(shè)庫的出現(xiàn)很好地攻克了這個(gè)問.它提供了一系列的外設(shè)接(其實(shí)就是封裝好的函數(shù))供我們使.

1.1下載

STM32官網(wǎng)下載規(guī)范外設(shè),依據(jù)自己的單片機(jī)型號(hào)進(jìn)行選.

1.1選擇單片機(jī)型號(hào)

我的單片機(jī)STM32F103,點(diǎn)F1就會(huì)出現(xiàn)下載界面

1.2下載規(guī)范外設(shè)庫

1.2文件分析

解壓后能夠看到以下文:

1.3規(guī)范外設(shè)庫中的文件

,最最重要的文件Libraries,里面包含了我們須要的所有庫函數(shù)文.

Project文件夾中提供了例子和模,最后一個(gè)HTML文件是幫助文,建議進(jìn)修過程中參照這兩個(gè)文檔而不是看其他亂七八糟的教.

Libraries中你須要關(guān)注這三個(gè)文件夾里面的文:

Libraries\CMSIS\CM3\CoreSupport
Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
Libraries\STM32F10x_StdPeriph_Driver

,第一個(gè)是核心代,第二個(gè)是設(shè)備支持代,第三個(gè)是詳細(xì)的外設(shè)的使.

2.開發(fā)環(huán)境

2.1軟件的名稱

最初始使STM32個(gè)開發(fā)環(huán)境的時(shí),對它的名稱一直很迷,后來才發(fā)現(xiàn)Keil是公司的名,uversionKEIL公司開發(fā)的一個(gè)集成開發(fā)環(huán)(IDE)具有編譯、下載調(diào)試、模擬仿真的功,MDK(Microcontroller Development Kit)的設(shè)備數(shù)據(jù)庫中有很多廠商的芯片,是專為微控制器開發(fā)的工.

2.2下載安裝

開發(fā)軟件能夠Keil的官網(wǎng)下,選擇第一個(gè)MDK-Arm填寫好相應(yīng)的信,然后依照提示安裝即.

安裝成功,你能夠Help的下拉菜單中找uVision Help,同樣,你應(yīng)該盡量通過看這個(gè)幫助來進(jìn)修整個(gè)軟件的使.

2.1 uVision Help

幫助文檔里詳細(xì)介紹了軟件的界,文檔構(gòu),如何調(diào)試仿真等等所有你想知道的東西.

2.2幫助文檔

3.新建一個(gè)工程

剛初始進(jìn)STM32的時(shí),我會(huì)覺得自己新建一個(gè)工程特別麻,所以愈加傾向于用別人的模.但是這樣看似提高了效,但是具有很大的弊,由于你不知道別人的文件是如何編排布置,這給日后的調(diào)試埋下了隱.所以我建議大家從最初始就把這一關(guān)給攻克,每次都自己新建工.

關(guān)于如何使Keil新建工,能夠看這篇文.

在這里提幾個(gè)自認(rèn)為比較關(guān)鍵的點(diǎn):

?C/C++ define中兩個(gè)宏指STM32F10X_HD,USE_STDPERIPH_DRIVER之間是逗號(hào)不是句號(hào),一定要看清楚

?C/C++ Include Path要加入每一個(gè)帶.h文件的文件夾否則會(huì)報(bào)錯(cuò).

?Target中勾Use MicroLIB,這樣才能夠正常使print函數(shù)

?Output中勾Create HEX File以便燒錄程序

4.編譯及調(diào)試

mcuisp,左下角選DTR的低電平復(fù),RTS高電平進(jìn)BootLoader,然后選Project\Objects.Hex文件即可燒錄程,在單片機(jī)上觀看實(shí)驗(yàn)現(xiàn).

5.完畢語

關(guān)于單片機(jī)的硬件說明能夠看我之前寫的文:

13個(gè)基 STM32的典型項(xiàng)目設(shè)計(jì)實(shí)例

STM32單片機(jī)現(xiàn)已火遍大江南北,各種教程資料也是遍布各大網(wǎng)站論壇,可謂一抓一大把,但大局部都差不多。今天總結(jié)了幾篇電路城上關(guān) STM32的制作,不能說每篇都是典型,但都是在其他地方?

匯編技術(shù)...發(fā)表于嵌入式

STM32單片機(jī)的啟動(dòng)過程

STM32單片機(jī)的啟動(dòng)過程分享這篇文章,談一 STM32啟動(dòng)流程。假如讀者朋友已經(jīng)有過匯編相關(guān)根底,能夠夠好了解本文內(nèi)容。匯編語言是C語言更接近機(jī)器底層的編程語言,能讓我們更好的了解?

一個(gè)發(fā)表于億配芯城...

彩蛋:最近有同學(xué)跟我要單片機(jī)的資料,我特意花幾個(gè)月時(shí)間,總結(jié)了我10年產(chǎn)品研發(fā)經(jīng)驗(yàn),資料包幾乎覆蓋C語言、單片機(jī)、模電數(shù)電、原理圖PCB設(shè)計(jì)、單片機(jī)高級編程等等,非常適合初學(xué)者入門和進(jìn)階。除此以外,再含淚分享我壓箱底22個(gè)熱門開源項(xiàng)目,包含源+原理+PCB+說明文檔,不是市面上打包賣的那種課程,我認(rèn)為教程多未必是好事,10年前我自學(xué)快,除了自身執(zhí)行力以外,還有就是教程少。不要害羞做伸手黨,等你一個(gè)小紅點(diǎn)。后期我也會(huì)組建一些純技術(shù)交流的小圈子,讓大家能認(rèn)識(shí)更多的大佬,有個(gè)好的圈子,你對行業(yè)的認(rèn)知一定是最前沿的。


單片機(jī)實(shí)現(xiàn)模塊化編程:思維+實(shí)例+系統(tǒng)教程(實(shí)用程度令人發(fā)指)的評論 (共 條)

分享到微博請遵守國家法律
曲松县| 临猗县| 福建省| 商都县| 金沙县| 古交市| 红河县| 昭苏县| 浮山县| 宁武县| 西昌市| 渭南市| 同仁县| 汾西县| 林芝县| 鹿邑县| 嘉兴市| 贵溪市| 肥东县| 乌鲁木齐县| 吉林省| 闵行区| 句容市| 冀州市| 镇原县| 威远县| 烟台市| 长子县| 许昌县| 依兰县| 新宾| 德昌县| 曲阜市| 蓬莱市| 洛隆县| 即墨市| 甘肃省| 泗洪县| 闽清县| 横峰县| 修文县|