Skip to content
/ MOE Public
forked from ianhom/MOE

MOE is an event-driven scheduler system for 8/16/32-bit MCUs. MOE means "Minds Of Embedded system", It’s also the name of my lovely baby daughter 😎

License

Notifications You must be signed in to change notification settings

hdp7891000/MOE

 
 

Repository files navigation

MOE

license GitHub release status
中文说明

Smartphone with MOE

The first smartphone with MOE in the world!.......Bazinga!!!


LOGO

Introduce

MOE is an event-driven scheduler system for 8/16/32-bit MCUs. MOE means "Minds Of Embedded system", it’s also the name of my lovely baby daughter 😄
Features with:

Features Description
Event-driven Flexible event queue length, priority event supported.
Timer Useful ms-timer with callback.
Message Easy-use message API for communication between tasks, To-All-Task message with low RAM comsuption supported.
Debug Flexible debug print options for each task or module; Useful easy-assert; CmBacktrace(Hardfault backtrace for Cortex-M)
Protothread Protothread is supported for application module.

For more discussion, please join our QQ Group: 475258651

Supported Platform    

  • MIMXRT1050-EVK.........(coming soon)

How to use

  • Step 1: Port the MOE to your hardware, provide "system clock in ms" and "poll function(if available)", init and run MOE.
/* EXAMPLE CODE */
uint16 GetMsClock(void)    /* Function to get ms clock */
{
    return sg_u16SysClk;  /* System ms clock, increased every 1 ms in hardware timer interrupt */
}

void Poll(void)    /* Function to be Polled */
{
    /* Something you want to do by polling */
    return;
}

void main(void)
{
    ....                         /* Board init operation */
    MOE_Init(GetMsClock, Poll);  /* Init MOE with system clock funtion, and poll function(fill "NULL" if NOT available) */
    MOE_Run();                   /* Start MOE            */
    return;
}
  • Step 2: Create your own tasks or re-use exist app tasks to build your application. (Protothread style application is shown below, For event handler style, please see the source)
/* EXAMPLE CODE */
/* Task 1: Blinking LED */
uint8 Task_PT_Demo_Process(uint8 u8Evt, void *pPara)
{   
    PT_INIT();
    PT_BEGIN();
    MOE_MANDATORY_INIT();  /* Mandatory init, shout call it here only */

    while(1)
    {
        TASK_PT_DEMO_LED_Toggle(LED_RED);
        PT_DELAY(1000);

        TASK_PT_DEMO_LED_Toggle(LED_GREEN);
        PT_DELAY(1000);

        TASK_PT_DEMO_LED_Toggle(LED_BLUE);
        PT_DELAY(1000);
    }
    PT_END();
    return SW_OK;
}
/* EXAMPLE CODE */
/* Task 2: Periodic printing */
uint8 Task_PT_Demo2_Process(uint8 u8Evt, void *pPara)
{    
    PT_INIT(); 
    PT_BEGIN();
    MOE_MANDATORY_INIT();  /* Mandatory init, shout call it here only */

    while(1)
    {
        DBG_PRINT("I am another Task!!\n");
        PT_DELAY(1000);
    }
    PT_END();
    return SW_OK;
}
  • Step 3: Register tasks in Project_Config.h and continue other configuration in the same file.
#define LIST_OF_REG_TASK \
        REG_TASK(Task_PT_Demo_Proces)\
        REG_TASK(Task_PT_Demo2_Proces)
  • Step 4: Run & Enjoy. 😄

Source Tree Structure

Folder Description
App/ App modules which can be re-used in different projects. Please add new app module here for new application requirement
Core/ Core files including scheduler, Event-drivern, timer and message.
Cpu/ Startup and other necessary code for starting MCUs
Debug/ Useful tool & modules for debugging
Driver/ Driver of MCU peripheral and other extended module(sensors or RF parts)
Network/ Stack for kinds fo network(to be done.)
Pub/ Public files including public head file, MACRO and debug file
Utility/ Useful function modules including queue, link list, printf
project/ Files for specific projects including configuration of SW/HW and the main file
Documents/ Description documents including design record, API reference and pictures
Tools/ Useful Tools for configuration, building, debugging, analysis and so on

Useful Documents

Special Thanks

  • 🎉MOE Logo drawing by Miss Cai Jianan.:tada:

About

MOE is an event-driven scheduler system for 8/16/32-bit MCUs. MOE means "Minds Of Embedded system", It’s also the name of my lovely baby daughter 😎

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 100.0%