亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

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

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

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

嵌入式框架Zorb Framework搭建方案

工程師進(jìn)階筆記 ? 來源:github.com ? 2023-11-05 17:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、Zorb簡(jiǎn)介

Zorb Framework是一個(gè)基于面向?qū)ο蟮乃枷雭泶罱ㄒ粋€(gè)輕量級(jí)的嵌入式框架。

搭建Zorb Framework的目的是為在不能運(yùn)行Linux的芯片上快速開發(fā)應(yīng)用,不用反復(fù)造輪子。

Zorb Framework的初步設(shè)計(jì)功能有:

1、時(shí)間系統(tǒng)功能zf_time

2、環(huán)形緩沖區(qū)功能zf_buffer

3、列表功能zf_list

4、狀態(tài)機(jī)功能zf_fsm

5、事件功能zf_event

6、定時(shí)器功能zf_timer

7、任務(wù)功能zf_task

前6個(gè)功能,就可以實(shí)現(xiàn)純事件驅(qū)動(dòng)的程序,基本可以滿足中小型嵌入式應(yīng)用程序開發(fā)的需求。加上任務(wù)功能,是為了滿足部分程序?qū)?shí)時(shí)性要求較高的需求。當(dāng)然,也可以將前6個(gè)功能裁剪出來,然后運(yùn)行在現(xiàn)有的嵌入式系統(tǒng)上面,這樣子也可以滿足實(shí)時(shí)性的需求。

二、嵌入式環(huán)境搭建

采用STM32F429開發(fā)板作為硬件運(yùn)行環(huán)境,硬件資源用到串口1和systick,其中串口1提供調(diào)試打印功能,systick提供系統(tǒng)時(shí)間計(jì)數(shù)功能。

6b6e5776-7a2f-11ee-939d-92fbcf53809c.png

關(guān)于硬件環(huán)境的搭建不多說,可以參照開發(fā)板提供的例程來搭建,板級(jí)初始化完成了調(diào)試串口和systick的初始化。

/******************************************************************************
*描述:硬件環(huán)境初始化
*參數(shù):無
*返回:無
******************************************************************************/
voidBSP_init(void)
{
/*嵌套向量中斷控制器組選擇*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

/*初始化調(diào)試串口*/
Debug_USART_init();

/*Systick初始化*/
SystemTick_init();
}

/******************************************************************************
*描述:硬件底層程序
*參數(shù):無
*返回:無
******************************************************************************/
voidBSP_process(void)
{

}

三、調(diào)試輸出

開發(fā)一個(gè)程序,最開始也最重要的是搭建調(diào)試的環(huán)境,我們采用串口1作為調(diào)試輸出(printf映射),然后調(diào)試信息分為三個(gè)等級(jí),后續(xù)上位機(jī)可以根據(jù)不同等級(jí)進(jìn)行高亮提示:

/**
*****************************************************************************
*@filezf_debug.h
*@authorZorb
*@versionV1.0.0
*@date2018-06-28
*@brief調(diào)試輸出的頭文件
*****************************************************************************
*@history
*
*1.Date:2018-06-28
*Author:Zorb
*Modification:建立文件
*
*****************************************************************************
*/

#ifndef__ZF_DEBUG_H__
#define__ZF_DEBUG_H__

#ifdef__cplusplus
extern"C"{
#endif

#include"stdio.h"
#include"stdbool.h"

#defineLOG_D0;/*信息等級(jí):正常*/
#defineLOG_W1;/*信息等級(jí):告警*/
#defineLOG_E2;/*信息等級(jí):錯(cuò)誤*/

#define_ZF_DEBUG/*定義調(diào)試功能*/
#defineZF_DEBUG_ONtrue/*啟用調(diào)試功能*/

#ifdef_ZF_DEBUG
#ifZF_DEBUG_ON
#defineZF_DEBUG(rank,x...)do
{
charcode[10]="[rank=0]";
code[6]='0'+(char)rank;
if(code[6]!='0')
{
printf("%s",code);
}
printf(x);
}while(0)
#else
#defineZF_DEBUG(rank,x...)
#endif/*ZF_DEBUG_ON*/
#endif/*_ZF_DEBUG*/

#ifdef__cplusplus
}
#endif

#endif/*__ZF_DEBUG_H__*/

/********************************ENDOFFILE********************************/

四、實(shí)現(xiàn)斷言

在開發(fā)過程中,在關(guān)鍵地方進(jìn)行一些斷言,可以方便定位bug。

/**
*****************************************************************************
*@filezf_assert.h
*@authorZorb
*@versionV1.0.0
*@date2018-06-28
*@brief斷言的頭文件
*****************************************************************************
*@history
*
*1.Date:2018-06-28
*Author:Zorb
*Modification:建立文件
*
*****************************************************************************
*/

#ifndef__ZF_ASSERT_H__
#define__ZF_ASSERT_H__

#ifdef__cplusplus
extern"C"{
#endif

#include"stdint.h"

#define_ZF_ASSERT/*定義斷言功能*/
#defineZF_ASSERT_ONtrue/*啟用斷言功能*/

#ifdef_ZF_ASSERT
#ifZF_ASSERT_ON
#defineZF_ASSERT(expression_)((expression_)?
(void)0:ZF_assertHandle((uint8_t*)__FILE__,(int)__LINE__));
#else
#defineZF_ASSERT(expression_)
#endif/*ZF_ASSERT_ON*/
#endif/*_ZF_ASSERT*/

/*斷言產(chǎn)生時(shí)的處理*/
voidZF_assertHandle(uint8_t*pFileName,intline);

#ifdef__cplusplus
}
#endif

#endif/*__ZF_ASSERT_H__*/

/********************************ENDOFFILE********************************/

斷言的處理很簡(jiǎn)單,就是告訴我們?cè)谀膫€(gè)文件哪一行出錯(cuò)就可以,實(shí)現(xiàn)如下

/**
*****************************************************************************
*@filezf_assert.c
*@authorZorb
*@versionV1.0.0
*@date2018-06-28
*@brief斷言的實(shí)現(xiàn)
*****************************************************************************
*@history
*
*1.Date:2018-06-28
*Author:Zorb
*Modification:建立文件
*
*****************************************************************************
*/

#include"zf_assert.h"
#include"zf_debug.h"

/******************************************************************************
*描述:斷言產(chǎn)生時(shí)的處理
*參數(shù):(in)-pFileName 文件名
*(in)-line行數(shù)
*返回:無
******************************************************************************/
voidZF_assertHandle(uint8_t*pFileName,intline)
{
ZF_DEBUG(LOG_E,"file:%sline:%d:asserted
",pFileName,line);

while(1);
}

/********************************ENDOFFILE********************************/

五、建立時(shí)間系統(tǒng)

為了減少框架對(duì)資源的消耗,所以初步設(shè)定框架的最小時(shí)間周期為1ms,因此我們需要設(shè)置systick的定時(shí)周期為1ms,然后每次進(jìn)入中斷為我們的框架計(jì)數(shù)即可。

/******************************************************************************
*描述:SysTick中斷服務(wù)程序
*參數(shù):無
*返回:無
******************************************************************************/
voidSysTick_Handler(void)
{
/*為zorbframework提供計(jì)時(shí)*/
ZF_timeTick();
}

現(xiàn)在時(shí)間系統(tǒng)提供的功能比較基礎(chǔ),只有系統(tǒng)滴答計(jì)數(shù)和系統(tǒng)死等待延時(shí),后面我們開發(fā)定時(shí)器功能和任務(wù)功能的時(shí)候會(huì)重新擴(kuò)展時(shí)間系統(tǒng)。

/**
*****************************************************************************
*@filezf_time.h
*@authorZorb
*@versionV1.0.0
*@date2018-06-28
*@brief系統(tǒng)時(shí)間的頭文件
*****************************************************************************
*@history
*
*1.Date:2018-06-28
*Author:Zorb
*Modification:建立文件
*
*****************************************************************************
*/

#ifndef__ZF_TIME_H__
#define__ZF_TIME_H__

#ifdef__cplusplus
extern"C"{
#endif

#include"stdbool.h"
#include"stdint.h"

/*系統(tǒng)滴答周期(ms)*/
#defineZF_TICK_PERIOD1

/*獲取系統(tǒng)滴答數(shù)*/
#defineZF_SYSTICK()ZF_getSystemTick()

/*獲取系統(tǒng)時(shí)間(ms)*/
#defineZF_SYSTIME_MS()ZF_getSystemTimeMS()

/*系統(tǒng)延時(shí)(ms)*/
#defineZF_DELAY_MS(ms_)do
{
if(ms_%ZF_TICK_PERIOD)
{
ZF_delayTick((ms_/ZF_TICK_PERIOD)+1);
}
else
{
ZF_delayTick(ms_/ZF_TICK_PERIOD);
}
}while(0)

/*獲取系統(tǒng)滴答數(shù)*/
uint32_tZF_getSystemTick(void);

/*獲取系統(tǒng)時(shí)間(ms)*/
uint32_tZF_getSystemTimeMS(void);

/*系統(tǒng)延時(shí)*/
voidZF_delayTick(uint32_ttick);

/*系統(tǒng)滴答程序(需掛在硬件的時(shí)間中斷里邊)*/
voidZF_timeTick(void);

#ifdef__cplusplus
}
#endif

#endif/*__ZF_TIME_H__*/

/********************************ENDOFFILE********************************/

六、最后

本篇實(shí)現(xiàn)的功能比較基礎(chǔ),但是整個(gè)框架開發(fā)的根基,后面所有擴(kuò)展的功能都需要在此環(huán)境下進(jìn)行開發(fā)。搭建良好的調(diào)試輸出環(huán)境,可以幫我們快速定位bug的所在,從而提高開發(fā)效率。

審核編輯:湯梓紅

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

    關(guān)注

    5150

    文章

    19665

    瀏覽量

    317452
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3298

    瀏覽量

    118887
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1588

    瀏覽量

    79917
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5679

    瀏覽量

    104632
  • 環(huán)境搭建
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    9260

原文標(biāo)題:【嵌入式框架】搭建調(diào)試輸出、建立時(shí)間系統(tǒng)

文章出處:【微信號(hào):工程師進(jìn)階筆記,微信公眾號(hào):工程師進(jìn)階筆記】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    嵌入式框架Zorb Framework狀態(tài)機(jī)的實(shí)現(xiàn)

    Zorb Framework是一個(gè)基于面向?qū)ο蟮乃枷雭?b class='flag-5'>搭建一個(gè)輕量級(jí)的嵌入式框架。
    的頭像 發(fā)表于 11-29 09:33 ?2086次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>框架</b><b class='flag-5'>Zorb</b> <b class='flag-5'>Framework</b>狀態(tài)機(jī)的實(shí)現(xiàn)

    嵌入式框架EFC是什么? 使用EFC的設(shè)計(jì)方案有哪些實(shí)例?

    什么是框架?如何設(shè)計(jì)框架?嵌入式框架EFC是什么?使用EFC的設(shè)計(jì)方案有哪些實(shí)例?
    發(fā)表于 04-27 06:23

    嵌入式框架

    1.overview 圖1-1 嵌入式框架嵌入式系統(tǒng)分為硬件以及軟件兩大部分,大多數(shù)人參與的是嵌入式軟件設(shè)計(jì),更多的是接觸的是上層軟件系統(tǒng)部分,可以分為兩大類型
    發(fā)表于 10-27 08:26

    如何搭建嵌入式C語(yǔ)言單元測(cè)試自動(dòng)化框架

    關(guān)于嵌入式C語(yǔ)言單元測(cè)試自動(dòng)化框架搭建思路
    發(fā)表于 12-15 07:35

    如何搭建嵌入式Linux開發(fā)環(huán)境

    關(guān)于嵌入式Linux開發(fā)環(huán)境搭建,請(qǐng)參考以下帖子:嵌入式Linux開發(fā)環(huán)境搭建-(1)安裝VMware Workstation虛擬機(jī)嵌入式L
    發(fā)表于 12-16 08:31

    基于Nios II的嵌入式開發(fā)模式的搭建方案  

    介紹了Nios II的軟件開發(fā)環(huán)境,然后詳細(xì)闡述如何在Nios II平臺(tái)下搭建RTEMS嵌入式開發(fā)環(huán)境。 1.引言 隨著技術(shù)的不斷發(fā)展,嵌入式技術(shù)逐漸成為計(jì)算機(jī)技術(shù)的一個(gè)重要分支。由于嵌入式
    發(fā)表于 10-17 10:47 ?0次下載
    基于Nios II的<b class='flag-5'>嵌入式</b>開發(fā)模式的<b class='flag-5'>搭建</b><b class='flag-5'>方案</b>  

    嵌入式開發(fā)環(huán)境的搭建

    本文詳細(xì)介紹了嵌入式開發(fā)環(huán)境的搭建。這個(gè)教程在僅使用附帶的光盤鏡像文件里的資料的情況下,所搭建嵌入式 ARM 開發(fā)環(huán)境可以滿足 ARM 核為 ARM920T 及 CORTEX-A8
    的頭像 發(fā)表于 02-01 16:39 ?8839次閱讀
    <b class='flag-5'>嵌入式</b>開發(fā)環(huán)境的<b class='flag-5'>搭建</b>

    嵌入式應(yīng)用框架EAF詳解

    EAF是Embedded Application Framework 的縮寫,即嵌入式應(yīng)用框架。嵌入式應(yīng)用框架是 Application
    發(fā)表于 12-02 11:30 ?3185次閱讀

    關(guān)于嵌入式應(yīng)用框架(EAF)的探索

    EAF是Embedded Application Framework 的縮寫,即嵌入式應(yīng)用框架。
    發(fā)表于 12-10 14:28 ?1046次閱讀

    關(guān)于嵌入式應(yīng)用框架(EAF)的分析

    EAF是Embedded Application Framework 的縮寫,即嵌入式應(yīng)用框架嵌入式應(yīng)用框架是 Application
    發(fā)表于 01-01 09:50 ?1783次閱讀

    嵌入式系統(tǒng)框架----硬件篇

    1.系統(tǒng)框架圖對(duì)于一個(gè)嵌入式系統(tǒng),最重要的當(dāng)然是運(yùn)算以及存儲(chǔ)單元,基本的嵌入式系統(tǒng)可以簡(jiǎn)化成如下系統(tǒng)框架圖:
    發(fā)表于 10-20 11:51 ?3次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>框架</b>----硬件篇

    嵌入式系統(tǒng)移植-01嵌入式基本概念,嵌入式開發(fā)環(huán)境搭建,目標(biāo)機(jī)搭建,TFTP服務(wù)搭建,NFS服務(wù)搭建

    文章目錄系統(tǒng)移植概述及環(huán)境搭建嵌入式基本概念嵌入式系統(tǒng)的應(yīng)用領(lǐng)域什么是嵌入式系統(tǒng)用嵌入式系統(tǒng)硬件組成部分通用
    發(fā)表于 10-20 17:21 ?10次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)移植-01<b class='flag-5'>嵌入式</b>基本概念,<b class='flag-5'>嵌入式</b>開發(fā)環(huán)境<b class='flag-5'>搭建</b>,目標(biāo)機(jī)<b class='flag-5'>搭建</b>,TFTP服務(wù)<b class='flag-5'>搭建</b>,NFS服務(wù)<b class='flag-5'>搭建</b>

    嵌入式系統(tǒng)框架----軟件篇

    1.overview 圖1-1 嵌入式框架嵌入式系統(tǒng)分為硬件以及軟件兩大部分,大多數(shù)人參與的是嵌入式
    發(fā)表于 10-20 19:21 ?6次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>框架</b>----軟件篇

    嵌入式linux安裝qt,嵌入式Linux版本Qt5.4快速部署

    摘要:Qt是一個(gè)領(lǐng)先的跨平臺(tái)應(yīng)用和UI 開發(fā)框架(Framework),使用標(biāo)準(zhǔn)C++,適用于桌面,嵌入式和移動(dòng)平臺(tái)。本文著重就利用Boot to Qt 軟件包來實(shí)現(xiàn)Qt5在嵌入式AR
    發(fā)表于 11-02 10:51 ?0次下載
    <b class='flag-5'>嵌入式</b>linux安裝qt,<b class='flag-5'>嵌入式</b>Linux版本Qt5.4快速部署

    嵌入式框架模板構(gòu)建方案

    嵌入式框架模板構(gòu)建方案關(guān)鍵內(nèi)容python3.xmakoyaml實(shí)戰(zhàn)演習(xí)main.pyimport yamlfrom mako.template import Templateimport
    發(fā)表于 12-29 19:00 ?2次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>框架</b>模板構(gòu)建<b class='flag-5'>方案</b>