資料介紹
軟件簡介
BabyOS適用于MCU項目,她是一套管理功能模塊和外設驅動的框架。
對項目而言,縮短開發(fā)周期。項目開發(fā)時選擇適用的功能模塊及驅動。直接進入功能代碼編寫的階段。
對工程師而言,減少重復工作。調試過的功能模塊和驅動代碼放入BabyOS中管理,以后項目可以直接使用,去掉重復調試的工作。
代碼結構
BabyOS代碼分為3部分:
BabyOS倉庫:功能模塊和驅動 ,一般情況下用戶不需要改動,可以將此倉庫作為子模塊。
BabyOS_Config:配置文件和設備注冊文件
BabyOS_Hal:硬件抽象層, 不同分支對應不同硬件平臺,選擇對應平臺下載,沒有合適的則選擇master分支
適用項目
使用裸機開發(fā)的項目推薦基于BabyOS進行。
使用操作系統(tǒng)開發(fā)的項目,BabyOS可作為功能庫及驅動庫使用。
使用方法
基于STM32F107上使用SPIFLASH及KV功能模塊為例
1.添加文件
BabyOS //可作git子模塊使用 ├── bos │?? ├── algorithm //常用算法,無需添加其中文件 │?? ├── core //核心文件,全部包含至工程 │?? ├── drivers //驅動文件,選擇spiflash驅動添加至工程 │?? ├── modules //功能模塊,全部添加至工程,由配置文件b_config.h配置 │?? ├── thirdparty //第三方代碼,選擇SFUD第三方代碼添加至工程 │?? └── utils //實用代碼,選擇delay部分代碼添加至工程 ├── doc //相關文檔 ├── LICENSE //開源協(xié)議 └── README.md BabyOS_Config //克隆后放入工程目錄,全部添加至工程 BabyOS_Hal //克隆后放入工程目錄,添加hal、gpio、uart、spi部分
//進入用戶工程目錄執(zhí)行 git submodule add https://gitee.com/notrynohigh/BabyOS.git git clone https://gitee.com/notrynohigh/BabyOS_Config.git //克隆配置文件及設備注冊文件 git clone https://gitee.com/notrynohigh/BabyOS_Hal.git //克隆后切換到對應平臺的分支,如果沒有則采用master分支作為模板
2.增加系統(tǒng)定時器
//例如使用滴答定時器,中斷服務函數(shù)調用:void bHalIncSysTick(void); //注:定時器的周期與b_config.h里_TICK_FRQ_HZ要匹配
3.選擇功能模塊
b_config.h進行配置,勾選其中的KV Enable/Disable項
4.注冊設備
//b_device_list.h,在里面添加使用的外設。例如項目只需要使用SPIFlash,那么添加如下代碼: // 設備 驅動 描述 B_DEVICE_REG(SPIFLASH, bSPIFLASH_Driver[0], "flash") //如果沒有注冊任何設備,取消B_DEVICE_REG(null, bNullDriver, "null")的注釋 //B_DEVICE_REG(null, bNullDriver, "null")
5.修改硬件接口
b_hal.h中根據(jù)實際連接圖修改GPIO和SPI號
#define HAL_SPIFLASH_QSPI_EN 0 #define HAL_SPIFLASH_TOTAL_NUMBER 1 #define HAL_SPIFLASH_IF {{B_HAL_QSPI_INVALID, B_HAL_SPI_1, {B_HAL_GPIOB, B_HAL_PIN12}},}
6.修改硬件抽象層SPI部分
(依賴硬件平臺,使用STM32 HAL庫為例)
//b_hal_spi.c int bHalSPI_Send(bHalSPINumber_t spi, uint8_t *pbuf, uint16_t len) { if(pbuf == NULL) { return -1; } switch(spi) { case B_HAL_SPI_1: HAL_SPI_Transmit(&hspi1, pbuf, len, 0xfff); break; default: break; } return 0; } int bHalSPI_Receive(bHalSPINumber_t spi, uint8_t *pbuf, uint16_t len) { if(pbuf == NULL) { return -1; } switch(spi) { case B_HAL_SPI_1: HAL_SPI_Receive(&hspi1, pbuf, len, 0xfff); break; default: break; } return 0; }
7.修改硬件抽象層GPIO部分
(依賴硬件平臺,使用STM32 HAL庫為例)
void bHalGPIO_WritePin(uint8_t port, uint8_t pin, uint8_t s) { GPIO_PinState sta = (s) ? GPIO_PIN_SET : GPIO_PIN_RESET; HAL_GPIO_WritePin(GPIO_PortTable[port], GPIO_PinTable[pin], sta); }
8.基于SPIFLASH使用KV功能
#include "b_os.h" //頭文件 //b_config.h配置文件中使能KV存儲 int main() { uint8_t buf[128]; bInit(); //初始化,外設的初始化會在此處調用 if(0 == bKV_Init(SPIFLASH, 0xA000, 4096 * 4, 4096)) //初始化KV存儲,指定存儲設備SPIFLASH { b_log("bKV_Init ok...\r\n"); } //存儲鍵值對(可用于存儲系統(tǒng)配置信息) bKV_Set("name", (uint8_t *)"BabyOS", 7); bKV_Get("name", buf); b_log("name:%s\r\n", buf); //...... while(1) { //..... bExec(); //循環(huán)調用此函數(shù) //..... } }
如果不使用功能模塊,單獨對設備進行操作,使用如下方式進行:
//舉例使用SPIFLASH讀取數(shù)據(jù),從0地址讀取128個字節(jié)數(shù)據(jù)至buf { int fd = -1; fd = bOpen(SPIFLASH, BCORE_FLAG_RW); if(fd == -1) { return; } bLseek(fd, 0); bRead(fd, buf, 128); bClose(fd); }
更多使用介紹:
- 學習單片機和嵌入式開發(fā)?這個項目是你入坑的不二之選
- 將Swift語言應用到MCU開發(fā)中,項目實例演示!
- RISC-V MCU開發(fā) (三):代碼編輯
- 8051 MCU反編譯開發(fā)方法記錄[
- 參考Linux 單片機項目驅動開發(fā)
- 適用于MCU項目的代碼框架BabyOS
- ThinkPHP 6.0完全開發(fā)手冊資源下載 13次下載
- PSoC開發(fā)流程和一般MCU開發(fā)流程有什么區(qū)別?資料下載
- 嵌入式系統(tǒng)的應用框架詳細資料分析
- Python單元測試框架是什么?及如何使用詳細代碼說明 2次下載
- ThinkPHP開發(fā)視頻教程之使用ThinkPHP5.0開發(fā)微信小程序商場開發(fā)教程 25次下載
- 如何使用MPLAB C32語言開發(fā)工具為32位應用編寫代碼的詳細資料概述
- MPASM匯編器MPLINK目標鏈接器和MPLIB目標庫管理器為單片機開發(fā)代碼
- AN1292與電機控制應用程序框架對比 2次下載
- 用Vivado-HLS為軟件提速 8次下載
- 如何使用IDEA編寫項目代碼 1315次閱讀
- 基于SSM框架的新聞管理系統(tǒng) 1385次閱讀
- Python一鍵轉化代碼為流程圖 4101次閱讀
- 在單片機中使用的RTOS代碼框架 1168次閱讀
- 聊聊PHP的web應用程序開發(fā)框架存在的漏洞有哪些 1834次閱讀
- LINS算法的框架與代碼分析 3271次閱讀
- 使用IDEA編寫項目代碼的實用小技巧 2368次閱讀
- HDF驅動框架中USB DDK的解析與開發(fā)指導 2259次閱讀
- 使用鴻蒙JS框架寫出來的JS代碼長什么樣 2341次閱讀
- 基于鴻蒙的JS框架ace_lite_jsfwk開發(fā) 2890次閱讀
- 現(xiàn)在流行的Web APP開發(fā)框架有哪些 1.1w次閱讀
- 區(qū)塊鏈應用開發(fā)框架Forge介紹 2309次閱讀
- Python自動化測試框架有哪些? 4687次閱讀
- arm的開發(fā)環(huán)境有哪些_使用Eclipse搭建ARM架構MCU開發(fā)環(huán)境 1.9w次閱讀
- Activiti與Spring Boot的項目開發(fā) 6430次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網(wǎng)絡安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論