Skip to content

lamer0k/RtosWrapper

Repository files navigation

RTOS wrapper for students

This the example of RTOS wrapper for FreeRTOS for Stm32F411 microcontroller

To use the wrapper, it needs to copy the next folder:

– CMSIS

– Rtos

also it needs to define forceinline macros (#define forceinline _Pragma("inline=forced") for IAR) in Rtos\wrapper\FreeRtos\rtosdefs.hpp file See more information on https://habr.com/ru/post/420467/

Example of creating a task:

using namespace OsWrapper ;
class MyTask : public Thread<static_cast<std::size_t>(StackDepth::minimal)>
{

public:
  virtual void Execute() override
  {
    while(true)
    {
      if (button.IsPressed())
      {
        event.Signal();
      }
      Sleep(300ms);
  }

  MyTask(OsWrapper::Event& event, UserButton& button) : event(event), button(button)
  {
  }
private:
  OsWrapper::Event& event;
  UserButton& button ;
} ;

and another task:

class Led1Task : public OsWrapper::Thread<128U>
{
public:
  virtual void Execute() override
  {
    for(;;)
    {
      if (event.Wait() != 0)
      {
        ledsCntr.NextMode();
      }
      ledsCntr.Update();
    }
  }

  Led1Task(OsWrapper::Event& event, LedsController& controller) : event(event), ledsCntr(controller)
  {
  }
private:
  OsWrapper::Event& event ;
  LedsController& ledsCntr;
} ;

and used it

OsWrapper::Event event{500ms, 1};

MyTask myTask(event, UserButton::GetInstance());
Led1Task led1Task(event);

int main()
{
 using namespace OsWrapper;
 Rtos::CreateThread(myTask, "myTask", ThreadPriority::lowest);
 Rtos::CreateThread(led1Task, "Led1Task");
 Rtos::Start();

return 0;
}

How to run the example

It needs to copy CortexLib (https://github.com/lamer0k/CortexLib) to have the next folder structure:

 - CortexLib
   -- AbstractHardware
   -- Common
 - RtosWrapper
   -- AHardware
   -- Application
   -- CMSIS
   -- Common
   -- MyTasks
   -- Rtos

Then it is possible to just open the RtosWrapper directory in the JetBrains Clion. Or if you use IAR 8.40.2 open the test.eww workspace or iarproject.ewp project.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published