<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      • 前言

      學(xué)軟件的重點(diǎn)就是多看資料。我們遇到的問題99.99%網(wǎng)上都有人遇到過,如果你沒找到答案,只可能是你搜索方式不對(duì)。

      我們想解決的問題,或者我們想做的事,90%在網(wǎng)上已經(jīng)有現(xiàn)成的答案了。

      這是多么遺憾的事,我們想盡情發(fā)揮我們的創(chuàng)造力來大干一場(chǎng),然后在一次偶然中發(fā)現(xiàn)已經(jīng)有人實(shí)現(xiàn)了,而且成果還吊打我們。

      經(jīng)歷多了之后,就要開始明白,站在巨人的肩膀上重要性。

      對(duì)于這些已經(jīng)被前人解決的問題,我們就開始放手,收起好奇心,用庫去解決它,把我們的精力放在最重要的專業(yè)方向上,放在算法上,放在數(shù)學(xué)上。

      正文

      實(shí)現(xiàn)之前,先準(zhǔn)備參考資料:

      野火的FreeRtos消息隊(duì)列實(shí)現(xiàn)教程

      正點(diǎn)原子的FreeRtos消息隊(duì)列實(shí)現(xiàn)教程

      安富萊的FreeRtos消息隊(duì)列實(shí)現(xiàn)教程

      硬件平臺(tái):GD32F407 ,

      軟件平臺(tái):已經(jīng)移植好的FreeRtos模板工程。

      寫代碼并沒有花費(fèi)太多的時(shí)間,大量的時(shí)間花在了代碼的設(shè)計(jì)框架上,終于有了一個(gè)好的構(gòu)思。

      先分享一下心路歷程。

      1. 一開始,我在驅(qū)動(dòng)和應(yīng)用如何分層這個(gè)問題上花費(fèi)了大量時(shí)間,依然是差臨門一腳,只悟得了,

        驅(qū)動(dòng)層只需要關(guān)心硬件的初始化以及相關(guān)驅(qū)動(dòng)函數(shù),給上層提供api接口就可以了,驅(qū)動(dòng)層不應(yīng)該包含任何應(yīng)用代碼,給應(yīng)用層最大的發(fā)揮空間。

        應(yīng)用層則應(yīng)該使用底層提供的api函數(shù)來實(shí)現(xiàn)相應(yīng)功能,在應(yīng)用層應(yīng)該不包含任何硬件依賴。

        但是我深陷復(fù)用的坑,我不僅考慮當(dāng)前工程里的驅(qū)動(dòng)如何應(yīng)用到其他工程中,當(dāng)前工程的應(yīng)用又有哪些可以復(fù)用為中間庫,如何讓大部分的代碼都可以任意移植,以此來滿足我懶惰的心。

        于是,當(dāng)我把所有的東西都復(fù)用起來,

        驅(qū)動(dòng)層有Hal庫的我已經(jīng)無需做庫,沒有Hal庫的,所有的寄存器都要考慮,因?yàn)槟慵热幌胍鲆粋€(gè)Hal庫,你當(dāng)然應(yīng)該支持硬件的所有配置方式,因此,這驅(qū)動(dòng)層復(fù)用完全不現(xiàn)實(shí)(我又不是)。

        應(yīng)用層方面,又想著適應(yīng)所有的rtos,又想著支持各種不同的硬件,好的拓展性,等等。

        總之,差點(diǎn)給自己想瘋了。

      2. 后面由于項(xiàng)目原因,我需要把uart的接收數(shù)據(jù)通過消息隊(duì)列傳給對(duì)應(yīng)的任務(wù),因此,我做了一個(gè)流程圖來捋清自己的邏輯,

        在作圖的時(shí)候,

        一邊思考如何把應(yīng)用和驅(qū)動(dòng)的分層,

        一邊思考linux的應(yīng)用和驅(qū)動(dòng)分層徹底到是兩個(gè)進(jìn)程,

        一邊思考任務(wù)與中斷程序之間通過消息隊(duì)列通信。

      于是,在靈感來了,我仿造linux的驅(qū)動(dòng)應(yīng)用分層,在rtos中把驅(qū)動(dòng)與應(yīng)用分為兩個(gè)任務(wù),我又參考消息隊(duì)列中的任務(wù)間通信,

      把硬件的中斷函數(shù)看成是一個(gè)任務(wù),然后再把硬件中斷獲得的數(shù)據(jù)通過回調(diào)函數(shù)傳給應(yīng)用層。如此,就完成了所有的步驟,

      把數(shù)據(jù)傳回給應(yīng)用層,

      把(收到數(shù)據(jù))消息傳回給應(yīng)用層,

      驅(qū)動(dòng)與應(yīng)用層并不會(huì)互相打斷各自的流程。

      最終的流程圖結(jié)果為(該圖就很明顯的看出來,任務(wù)與中斷的相似之處):

       

      如此一來,這次徹底做到了驅(qū)動(dòng)與應(yīng)用的分層,代碼實(shí)現(xiàn)了,如果這套程序需要換平臺(tái),那么只需要freertos接口文件更改,底層驅(qū)動(dòng)更改,應(yīng)用層無需任何改動(dòng)。

      而這也確實(shí)是我想了很久打算做的東西,仔細(xì)分析,這套程序其實(shí)代碼上可以復(fù)用的東西確實(shí)不多,驅(qū)動(dòng)層沒有任何復(fù)用的可能性,應(yīng)用層高度依賴不好拆分,但是千里之行始于足下,來日方長。

      總結(jié)


      這次實(shí)現(xiàn)的功能是契合FreeRtos的串口處理程序,舉一反三,所有的硬件驅(qū)動(dòng)處理,在所有的rtos上,都是類似的,從現(xiàn)在起,我的應(yīng)用驅(qū)動(dòng)分層才算是真正的登堂入室,rtos之路才算是正式開始。

      撒花,慶祝!??!

      posted on 2023-10-25 15:30  __詩酒趁年華  閱讀(245)  評(píng)論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 隆子县| 欧美人与性动交α欧美精品| 亚洲国产欧美日韩另类| 国产做爰xxxⅹ久久久精华液| 精品人妻一区二区三区蜜臀| 亚洲精品熟女一区二区| 97欧美精品系列一区二区| 年轻女教师hd中字3| 亚洲AV日韩AV永久无码电影| 亚洲欧洲无码av电影在线观看| 精品三级在线| 国产福利精品一区二区| 少妇高潮灌满白浆毛片免费看| 亚洲综合精品第一页| 一个人免费观看WWW在线视频| 综合亚洲网| 国产精品扒开腿做爽爽爽a片唱戏| 永久无码天堂网小说区| 亚洲男人天堂一级黄色片| 国产一区国产精品自拍| 全州县| 中文字幕在线国产精品| 久久精品国产一区二区蜜芽| 日韩精品亚洲 国产| 国产精品中文字幕日韩| 人妻少妇88久久中文字幕| 亚洲VA久久久噜噜噜久久无码| 欧美色欧美亚洲高清在线视频| 亚洲天堂男人的天堂在线| 最新亚洲人成网站在线观看| 日韩精品中文字幕国产一| 国产熟女高潮一区二区三区 | 国产极品精品自在线不卡| 国产精品午夜福利视频| 国产成人8X人网站视频| 亚洲一区二区三区在线| 中文字幕在线不卡一区二区| 乱码精品一区二区亚洲区| 国产明星精品无码AV换脸| 国产精品午夜精品福利| 日韩一区二区三区精彩视频|