Sunday, December 7, 2014

BRTOS with Nucleo F401RE

I creaded a small demo for testing the BRTOS (Brazilian Real-Time Operating System) in my Nucleo board with Coocox COIDE and ARM GCC.

BRTOS is a  lightweight preemptive real time operating system designed for low end microcontrollers.

More info about BRTOS:

https://code.google.com/p/brtos/

https://brtosblog.wordpress.com/

In this demo, clock is configured as:

External 8MHz from STLINK V2.

  • Main clock: 84MHz
  • AHB clock: 84MHz
  • APB1 clock: 42MHz
  • APB2 clcok: 84MHz
  • Timers clock: 84MHz
  • SDIO clock: 48MHz


Check more info about clock config for NucleoF401 in this post.
Flash Prefetch enabled and 2 wait states (minimum for 84MHz and 3.3V).

This demo uses two tasks. One of them flashes the LED and prints a string with a counter in serial every second.
The second task is used to handle the user button switch press event. When the user press the button a string is printed in serial.
Using a mutex to avoid conflicts with two tasks sharing the serial.
Serial used is USART2 that is connected in STLINK V2-1 and becomes a Virtual Serial Com port when STLINK is connected.

The demo code is hosted at my GitHub account:

https://github.com/miguelmoreto/NucleoF401-COIDE-BRTOS

2 comments:

  1. tasks.c file:

    /*Re-enable exti line interrupt */
    EXTI_Init(&EXTI_InitStructure);

    Why "Re-enable"? Just clear EXTI pending bit if it is set.

    ReplyDelete
    Replies
    1. Hello Tjuln,

      sorry for this too late response, only today I saw your massage. I probably missed the notification email whem you wrote.

      The interrupt is re-enabled because it is disabled at the handler. This is to avoid that the switch bounce fires the interrupt many times. The EXTI pending bit is cleared in the interrupt handler

      I don't know if this is the best way to do this, but it worked fine.

      Best regards,

      Miguel

      Delete