Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

WM_Timer в StemWin не работает

Сб фев 01, 2020 15:06:11

День добрый.

Начал играться с StemWin. Пытаюсь сделать чтение датчика и вывод на график по таймеру. Вот только не могу никак в обработчик событий попасть. Похоже, что таймер не запускается.

Имеет ли кто опыт с подобным?

Код:
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  int     NCode;
  int     Id;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Graph'
    //

    hItem = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_0);
    GRAPH_SetBorder(hItem, 3, 3, 3, 3);
    // USER START (Optionally insert additional code for further widget initialization)

   hTimer = WM_CreateTimer(pMsg->hWin, 0, 100, 0);

    // USER END
    break;

  case WM_TIMER:
     GUI_Exec();
     WM_RestartTimer(pMsg->hWin, 100);
     break;

  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_BUTTON_0: // Notifications sent by '/2'
      switch(NCode) {

      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    case ID_BUTTON_1: // Notifications sent by '*2'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    // USER START (Optionally insert additional code for further Ids)
    // USER END
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

Re: WM_Timer в StemWin не работает

Пн фев 03, 2020 13:51:32

Потерял полдня, но разобрался….
Может кому полезно будет:
stm32f4xx_it.c
Код:
/* Private user code ———————————————————*/
/* USER CODE BEGIN 0 */
#include «GUI.h»
volatile GUI_TIMER_TIME OS_TimeMS;
/* USER CODE END 0 */
void SysTick_Handler(void)
{
/* USER CODE BEGIN SysTick_IRQn 0 */
/* USER CODE END SysTick_IRQn 0 */
HAL_IncTick();
/* USER CODE BEGIN SysTick_IRQn 1 */
OS_TimeMS++;
/* USER CODE END SysTick_IRQn 1 */
}
Ответить