8 years, 1 month ago.

Problems with mutex in Nucleo F091?

Hello. I am reading about these multithreading features and I find them interesting.

I am currently trying it using a STM32F091.

When I try the following code:

#include "mbed.h"
#include "rtos.h"
 
DigitalOut led1(LED1);
DigitalOut led2(PA_0);

DigitalIn mybutton(USER_BUTTON); 

uint32_t mywait=500;
//Mutex stdio_mutex; //<===========HERE THE PROBLEM


void led2_thread(void const *args) {
    while(true)
    {
     if (mybutton == 0) { // Button is pressed
          led2 = !led2;
      
      //   stdio_mutex.lock();
         mywait=mywait+100;
        if(mywait>1000) mywait=100;
       // stdio_mutex.unlock();
    
        }

     }
}

int main() {
    Thread thread(led2_thread);
    
    while (true) {
        
        led1 = !led1;
        Thread::wait(mywait);
    }
}

However , in order to protect the variable mywait I am thinking of using mutex. However even the mere declaration of a mutex (not even using it!) produces that the program does not work anymore.

Can someone please help me with this??

Thanks a lot

Question relating to:

Be the first to answer this question.