0

STMCubeMX で提供されている cmsis_os.c と cmsis_os.h を使用しています。cmsis_os.c を修正する必要がある場所が少なくとも 2 か所見つかりました。

最初の1つ:

#elif( configSUPPORT_STATIC_ALLOCATION == 1 )
  return xTimerCreateStatic((const char *)"",
                      1, // period should be filled when starting the Timer using osTimerStart
                      (type == osTimerPeriodic) ? pdTRUE : pdFALSE,
                      (void *) argument,
                      (TaskFunction_t)timer_def->ptimer,
                      (StaticTimer_t *)timer_def->controlblock);  
#else
  return xTimerCreate((const char *)"",
                      1, // period should be filled when starting the Timer using osTimerStart
                      (type == osTimerPeriodic) ? pdTRUE : pdFALSE,
                      (void *) argument,
                      (TaskFunction_t)timer_def->ptimer);
#endif

TaskFunction_t を TimerCallbackFunction_t に置き換える必要がありますか?

2番目のもの:

osEvent osSignalWait (int32_t signals, uint32_t millisec)
{
  osEvent ret;

#if( configUSE_TASK_NOTIFICATIONS == 1 )

  TickType_t ticks;

  ret.value.signals = 0;  
  ticks = 0;
  if (millisec == osWaitForever) {
    ticks = portMAX_DELAY;
  }

私はそれがなければならないと思います:

osEvent osSignalWait (int32_t signals, uint32_t millisec)
{
  osEvent ret;

#if( configUSE_TASK_NOTIFICATIONS == 1 )

  TickType_t ticks;

  if (signals == 0)
    signals = ~0x80000000;

  ret.value.signals = 0;  
  ticks = 0;
  if (millisec == osWaitForever) {
    ticks = portMAX_DELAY;
  }

どう思いますか?

元のファイルではなく、パッチを適用したファイルを STMCubeMX で生成する方法はありますか?

ありがとう、アルベルト

4

0 に答える 0