All Projects β†’ ianhom β†’ MOE

ianhom / MOE

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

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to MOE

SwiftUI-App
This swiftUI Demo is very simple & easy to understand. This swiftUI demo includes On-boarding screens, login screen, forgot password screen, sign up screen, home & logout.
Stars: ✭ 175 (+224.07%)
Mutual labels:  easy-to-use
sht31
sht31 full function driver
Stars: ✭ 28 (-48.15%)
Mutual labels:  mcu
EsperIoT
Small and simple stream-based CEP tool for IoT devices connected to an MQTT broker
Stars: ✭ 18 (-66.67%)
Mutual labels:  event-driven
commander
Build event-driven and event streaming applications with ease
Stars: ✭ 60 (+11.11%)
Mutual labels:  event-driven
umock-c
A pure C mocking library
Stars: ✭ 29 (-46.3%)
Mutual labels:  easy-to-use
api
docs.nekos.moe/
Stars: ✭ 31 (-42.59%)
Mutual labels:  moe
Unity3D-ReactiveScriptables
ScriptableObject based framework / scaffolding that facilitates loosely coupled communication and automatic update propagation between MonoBehaviour components.
Stars: ✭ 25 (-53.7%)
Mutual labels:  event-driven
DM-BOT
πŸ“§ DM-BOT is discord bot that can record direct messages. One of us! You can also reply to those messages! DM-BOT is easy to use & understand! I decided to use Discord.js, it's literally the best.
Stars: ✭ 31 (-42.59%)
Mutual labels:  easy-to-use
SimplePHP
A small query builder project designed to assist daily routines and speed up the process of communicating with the database.
Stars: ✭ 14 (-74.07%)
Mutual labels:  easy-to-use
Dynamic App Loading
Dynamically load apps to zephyr RTOS
Stars: ✭ 31 (-42.59%)
Mutual labels:  mcu
bmp180
bmp180 full function driver
Stars: ✭ 57 (+5.56%)
Mutual labels:  mcu
nodebb
NodeJs components
Stars: ✭ 19 (-64.81%)
Mutual labels:  event-driven
PySiQ
A Python Simple Queue system for your apps
Stars: ✭ 23 (-57.41%)
Mutual labels:  easy-to-use
Vaser
Vaser is a powerful high performance event based network engine library for C# .Net. It’s possible to start multiple servers in one program and use the same network code for all servers. In the network communication are all strings are omitted, instead it is based on a unique binary identifier, which the CPU and memory relieves massively.
Stars: ✭ 23 (-57.41%)
Mutual labels:  event-driven
owt-client-android
Open WebRTC Toolkit client SDK for Android applications.
Stars: ✭ 166 (+207.41%)
Mutual labels:  mcu
krolib
Magic library and DSL to handle complex schedules
Stars: ✭ 19 (-64.81%)
Mutual labels:  schedule
event-gateway
AsyncAPI Event Gateway
Stars: ✭ 35 (-35.19%)
Mutual labels:  event-driven
Lassi-Android
All in 1 picker library for android.
Stars: ✭ 108 (+100%)
Mutual labels:  easy-to-use
libapenetwork
Fast cross-platform async network library
Stars: ✭ 17 (-68.52%)
Mutual labels:  event-driven
incubator-eventmesh
EventMesh is a dynamic event-driven application runtime used to decouple the application and backend middleware layer, which supports a wide range of use cases that encompass complex multi-cloud, widely distributed topologies using diverse technology stacks.
Stars: ✭ 939 (+1638.89%)
Mutual labels:  event-driven

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.πŸŽ‰
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].