CMSIS Example - osMutex osMutexWait osMutexRelease

osMutexDef( Mutex );
osMutexId mutex;

void Thread0( void * arg);
void Thread1( void * arg);

osThreadDef( Thread0, Thread0, osPriorityNormal, 512 );
osThreadDef( Thread1, Thread1, osPriorityAboveNormal, 512 );


void Thread0( void * arg)
{
  while(1)
  {
    osMutexWait( mutex, osWaitForever );
    osDelay( 10 );
    osMutexRelease( mutex );
    osDelay( 10 );
  }
}

void Thread1( void * arg)
{
  while(1)
  {
    osMutexWait( mutex, osWaitForever );
    osDelay( 10 );
    osMutexRelease( mutex );
    osDelay( 10 );
  }
}

int main( void )
{
  osKernelInitialize();

  osThreadCreate( osThread(Thread0), (void *)100 );
  osThreadCreate( osThread(Thread1), (void *)200 );

  mutex = osMutexCreate( osMutex(Mutex) );

  osKernelStart();

  return 0;
}
posted @ 2014-07-18 19:49  IAmAProgrammer  阅读(3101)  评论(0编辑  收藏  举报