91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【CW32】uart_obj_fw 輕量級串口框架

CW32生態(tài)社區(qū) ? 來源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2025-09-29 18:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

以下文章內(nèi)容由CW32生態(tài)社區(qū)用戶提供:

https://gitee.com/teletubbies-die-of-murder/lightweight-serial-framework

介紹

輕量級跨平臺串口通信框架,專為資源受限的嵌入式設(shè)備設(shè)計。單個對象RAM占用最小68字節(jié)左右(不算緩沖區(qū)),ROM占用1-2k字節(jié)左右,功能支持裁剪,資源占用小并不代表低性能,該庫參考了freeRTOS的隊列實現(xiàn),進行簡化處理,保留最核心的功能,對于數(shù)據(jù)的FIFO操作,分析了拷貝原數(shù)據(jù)的劣勢,采用了類似拷貝指針的方式,減少內(nèi)存占用,提高效率。同時代碼風(fēng)格較好,有配套注釋以及作者開發(fā)過程中的思考。

demo

demo使用CW32F030C8 ARM Cortex-M0+ 內(nèi)核單片機,該例程充分發(fā)揮了單片機的性能,提供了單字節(jié)中斷和DMA的框架例程,用戶可參考此例程來快速開始。

例程請復(fù)制以下鏈接至網(wǎng)頁端打開:

https://gitee.com/teletubbies-die-of-murder/lightweight-serial-framework

后期可能會更新的內(nèi)容

發(fā)送同樣增加緩沖區(qū)FIFO方式,先就緒到緩沖區(qū)后,在另一個線程發(fā)送,不在原地發(fā)送

引入DMA半滿全滿中斷API

線程安全的實現(xiàn)方式會再增加一種

特色

面向?qū)ο笏枷?,高?nèi)聚低耦合

資源占用極低,效率高,ROM占用1-2k字節(jié)

數(shù)據(jù)溢出保護,自動切換或鎖定緩沖區(qū)

支持串口單字節(jié)中斷,適配沒有dma的單片機

支持串口DMA或DMA+IDLE中斷

支持輕量級printf,使用第三方xprintf庫節(jié)省內(nèi)存

支持變量轉(zhuǎn)字符串庫,省去printf,進一步減小內(nèi)存

日志輸出功能,在初始化時為用戶提示錯誤信息以及初始化詳情

線程安全設(shè)計,用戶根據(jù)所使用的RTOS實現(xiàn)lock和unlock后,使用外設(shè)是非常安全的

無malloc函數(shù),零動態(tài)內(nèi)存申請

兼容C89版本編譯器

功能上通過配置支持僅發(fā)送,僅接收,或發(fā)送接收都支持

配置項

配置項 作用
USE_ONE_BYTE_IT_MODE 串口單字節(jié)中斷模式 1-啟用,0-不啟用
USE_DMA_MODE 串口DMA模式 1-啟用,0-不啟用
USE_DMA_NOT_HAVE_RX_IDLE_MODE 不支持DMA空閑中斷模式 1-啟用,0-不啟用
USE_DMA_RX_CNT_MODE DMA接收計數(shù)器模式選擇
USE_UART_TX_BIN_DATA 串口發(fā)送二進制數(shù)據(jù)接口 1-啟用,0-不啟用
USE_UART_TX_STR_DATA 串口發(fā)送字符串?dāng)?shù)據(jù)接口 1-啟用,0-不啟用
USE_UART_PRINTF 串口格式化輸出接口 1-啟用,0-不啟用
UART_PRINTF_BUFFER_SIZE 串口printf緩存區(qū)大小
USE_UART_PRINTF_BUF_STATIC 串口printf靜態(tài)緩存區(qū) 1-使用,0-不使用
USE_INFO_LOG 啟用日志打印 1-啟用,0-不啟用
USE_CHECK_INPUT_HANDLE_PARA 檢查輸入?yún)?shù)合法性 1-啟用,0-不啟用
USE_STD_LIB 使用標(biāo)準(zhǔn)庫printf 1-啟用,0-不啟用
USE_STRING_EX_LIB 使用字符串?dāng)U展庫 1-啟用,0-不啟用
USE_UART_TX_RX_MODE_SELECT 串口發(fā)送接收模式選擇 1-啟用,0-不啟用

倉庫架構(gòu)

文件 功能
demo 示例工程
lib 庫文件
other 其他文件

庫文件說明

文件 功能
uart_obj 串口收發(fā)框架核心文件
xprintf 第三方輕量級printf庫
string_ex 自定義擴展字符串庫

多緩沖區(qū)的意義

在生產(chǎn)消費模型中,如果生產(chǎn)的數(shù)據(jù)能在下一次生產(chǎn)之前及時消費,則并不需要多緩沖區(qū),否則需要,因為不加多緩沖區(qū)會發(fā)生數(shù)據(jù)覆蓋或者數(shù)據(jù)丟失的情況。多緩沖區(qū)的意義在于,短時間內(nèi)生產(chǎn)速度大于消費速度,對這種情況進行數(shù)據(jù)緩存,如果一直是生產(chǎn)速度大于消費速度,緩沖區(qū)再大也會被填滿,該問題不是緩沖區(qū)的問題了,是性能跟不上,考慮降低生產(chǎn)速度,優(yōu)化代碼或者更換高性能芯片。多緩沖區(qū)結(jié)合DMA是最優(yōu)的,在解析期間,DMA可以繼續(xù)接收數(shù)據(jù),兩者并行。因此FIFO深度為2為最低標(biāo)準(zhǔn),設(shè)置為1將沒有緩存和并行的效果,實際設(shè)置多少根據(jù)項目需求選擇。

緩沖區(qū)FIFO策略

完全型緩沖區(qū)策略:無論數(shù)據(jù)量大小,收到一包數(shù)據(jù)都固定消耗一個緩沖區(qū),該方式內(nèi)存利用率低,但管理起來簡單,代碼量少。

緊湊型FIFO策略:根據(jù)數(shù)據(jù)量大小,消耗的緩沖區(qū)大小為動態(tài),該方式內(nèi)存利用率高,但管理起來麻煩,需要更多代碼。

tips:目前的FIFO策略為完全型緩沖區(qū)策略,后期看情況更新緊湊型策略

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1662

    瀏覽量

    57994
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    299

    瀏覽量

    1854
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    CW32移植Free-RTOS】CW32開發(fā)者扶持計劃

    CW32配置Free-RTOS全過程,CW32開發(fā)者扶持計劃
    的頭像 發(fā)表于 04-18 09:38 ?7353次閱讀
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b>開發(fā)者扶持計劃

    CW32飯盒派開發(fā)板試用體驗】串口實驗

    CW32飯盒派開發(fā)板實現(xiàn)串口接收并控制LED
    的頭像 發(fā)表于 05-29 09:13 ?42w次閱讀
    【<b class='flag-5'>CW32</b>飯盒派開發(fā)板試用體驗】<b class='flag-5'>串口</b>實驗

    CW32快速開發(fā)入門

    CW32快速開發(fā)入門
    的頭像 發(fā)表于 04-24 18:56 ?3611次閱讀
    <b class='flag-5'>CW32</b>快速開發(fā)入門

    CW32 MCU溫度監(jiān)測應(yīng)用

    監(jiān)測環(huán)境溫度,并通過串口將數(shù)據(jù)發(fā)送到PC端進行顯示。 硬件連接 CW32 MCU LM35溫度傳感器 USB轉(zhuǎn)串口模塊 代碼實現(xiàn) #include \"cw32f030.h\&qu
    發(fā)表于 12-03 08:03

    使用CW32 MCU來實現(xiàn)UART串口通信與GPIO控制

    最近在項目中使用CW32 MCU,完成了一個簡單的UART串口通信和GPIO控制的功能。CW32 MCU的資源相對豐富,特別適合一些低成本、低功耗的嵌入式應(yīng)用。這里分享一下
    發(fā)表于 12-04 08:17

    CW32 UART的數(shù)據(jù)幀結(jié)構(gòu)有哪些特點?

    請問 CW32 UART 的數(shù)據(jù)幀結(jié)構(gòu)有哪些特點?
    發(fā)表于 12-15 06:58

    10個輕量級框架

    這些輕量級框架使用HTML5和CSS3標(biāo)準(zhǔn)來幫助您快速開發(fā)跨平臺的Web移動應(yīng)用和網(wǎng)站。
    發(fā)表于 07-17 08:25

    輕量級的ui框架如何去制作

    原創(chuàng)分享:自制輕量級單片機UI框架框架元素用戶接口代碼開源平時??碿sdn,但是從來沒有自己寫過。正好這幾天需要用單片機做一個簡易的ui界面,于是自己寫了一個輕量級的ui
    發(fā)表于 07-14 07:39

    Dllite_micro (輕量級的 AI 推理框架

    DLLite-Micro 是一個輕量級的 AI 推理框架,可以為 OpenHarmony OS 的輕量設(shè)備和小型設(shè)備提供深度模型的推理能力DLLite-Micro 向開發(fā)者提供清晰、易上手的北向接口
    發(fā)表于 08-05 11:40

    如何自制輕量級單片機UI框架?

    如何自制輕量級單片機UI框架
    發(fā)表于 10-14 06:13

    【應(yīng)用筆記】CW32 自舉程序中使用的 ISP 協(xié)議

    提供的 ISP 模式,通過 UART 串口方便地實現(xiàn)對 CW32 微控制器片上 FLASH主存儲器的擦除和燒寫。本應(yīng)用筆記將介紹如何進入 CW32 微控制器 ISP 模式,以及所使用的
    發(fā)表于 06-06 13:26

    CW32單片機UART波特率設(shè)置介紹

    CW32單片機UART波特率設(shè)置介紹
    的頭像 發(fā)表于 10-24 17:35 ?1939次閱讀
    <b class='flag-5'>CW32</b>單片機<b class='flag-5'>UART</b>波特率設(shè)置介紹

    CW32單片機UART基本數(shù)據(jù)收發(fā)功能介紹

    CW32單片機UART基本數(shù)據(jù)收發(fā)功能介紹
    的頭像 發(fā)表于 10-24 16:50 ?1700次閱讀
    <b class='flag-5'>CW32</b>單片機<b class='flag-5'>UART</b>基本數(shù)據(jù)收發(fā)功能介紹

    應(yīng)用筆記-CW32 自舉程序中使用的 ISP 協(xié)議

    ,通過UART串口方便地實現(xiàn)對CW32微控制器片上FLASH主存儲器的擦除和燒寫。本應(yīng)用筆記將介紹如何進入CW32微控制器ISP模式,以及所使用的ISP協(xié)議,并詳細介紹支持的每個命令。
    發(fā)表于 06-06 13:37 ?7次下載

    基于CW32的物聯(lián)網(wǎng)應(yīng)用

    CW32】基于CW32的物聯(lián)網(wǎng)應(yīng)用
    的頭像 發(fā)表于 11-02 15:55 ?1975次閱讀
    基于<b class='flag-5'>CW32</b>的物聯(lián)網(wǎng)應(yīng)用