当前位置: 首页 > 资讯 > >正文

焦点简讯:嵌入式程序上下文切换和解耦的工具

来源:面包芯语    时间:2023-05-06 08:23:58

关注+星标公众号,不错过精彩内容

作者 |NevermindZZT


(相关资料图)

cpost是一个c语言编写的,用于c语言程序上下文切换和解耦的工具。

cpost使用

以使用在嵌入式无操作系统中为例,主要用作中断延迟处理的情况

配置系统tick

配置cpost.h中的宏CPOST_GET_TICK(),配置成获取系统tick

配置处理进程

在main loop调用cpostProcess函数,通过cpost执行的函数都会在cpostProcess中执行

cevent使用

cevent使用注册的方式监听事件,会依赖于编译环境,目前支持keil,iar,和gcc,对于gcc,需要修改链接文件(.ld),在只读数据区添加:

_cevent_start = .;KEEP (*(cEvent))_cevent_end = .;

初始化cevent

系统初始化时,调用ceventInit

ceventInit();

注册cevent事件监听

在c文件中,调用CEVENT_EXPORT导出事件监听

CEVENT_EXPORT(0, handler, (void *)param);

发送cevent事件

在事件发生的地方,调用ceventPost抛出事件

ceventPost(0);

post

cpost提供一个统一接口cpost(...)进行事件抛出,此接口通过宏定义,需要在 c99 以上的标准运行

#define cpost(...) \        cpostAddHandler(&((CpostParam){__VA_ARGS__}))

参数

typedef struct{    void *handler;    void *param;    size_t delay;    struct {        unsigned char flag : 2;        unsigned char paramDiff: 1;    } attrs;} CpostParam;

handler被抛出执行的函数

param传递给函数的参数

delay延迟时间

attrs.flag任务冲突时处理 flag

attrs.paramDiff比较任务时是否区分参数

...抛出的参数,用于构造CpostParam对象

event post

event post接口会抛出事件,事件定义为一个unsigned short整形,建议通过宏定义所有事件

void ceventPost(unsigned short event);

参数

event事件

event export

event post接口会静态注册一个事件监听,注意,此接口实际上为定义一个全局的常量,所以需要写在函数体外

CEVENT_EXPORT(_event, _func, ...)

参数

_event被监听的事件

_func事件发生时,执行的函数

...需要传递给_func函数的参数

声明:本文部分素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

X 关闭

推荐内容

最近更新

Copyright ©  2015-2022 南非机械网版权所有  备案号:沪ICP备2022005074号-13   联系邮箱:58 55 97 3@qq.com