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 :sunglasses:
The first smartphone with MOE in the world!…….Bazinga!!!
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
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)
```c
/* 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;
}
#define LIST_OF_REG_TASK \
REG_TASK(Task_PT_Demo_Proces)\
REG_TASK(Task_PT_Demo2_Proces)
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 |