init_task.c 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. /********************************* (C) РОТЕК ***********************************
  2. * @module init_task
  3. * @file init_task.c
  4. * @version 1.0.0
  5. * @date XX.XX.XXXX
  6. * $brief Инициализация всех задач.
  7. *******************************************************************************
  8. * @history Version Author Comment
  9. * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
  10. *******************************************************************************
  11. */
  12. #include "init_task.h"
  13. #include "common_config.h"
  14. #include "wdg.h"
  15. #include "usart.h"
  16. //#include "port_microrl.h"
  17. //#include "led.h"
  18. //#include "buttons.h"
  19. #include "rtc.h"
  20. #include "stm32f4x7_eth_bsp.h"
  21. #include "netconf.h"
  22. #include "snmp_api.h"
  23. #include "http_server.h"
  24. //#include "sntp.h"
  25. #include "settings_api.h"
  26. #include "main.h"
  27. #include "trap_api.h"
  28. //#include "testing.h"
  29. //#include "ups_monitor.h"
  30. //#include "ups_params.h"
  31. //#include "ups_monitor.h"
  32. //#include <lwip/stats.h>
  33. #ifdef PRINTF_STDLIB
  34. #include <stdio.h>
  35. #endif
  36. #ifdef PRINTF_CUSTOM
  37. #include "tinystdio.h"
  38. #endif
  39. #include "FreeRTOS.h"
  40. #include "task.h"
  41. extern bool dhcp;
  42. /**
  43. * @brief Общая структура настроек
  44. */
  45. extern SETTINGS_t sSettings;
  46. /**
  47. * @brief Хендл для задачи vTaskLedBlink
  48. */
  49. TaskHandle_t xTaskToKill;
  50. static void vTaskDebug(void *pvParameters);
  51. /**
  52. * @brief Разовая синхронизация времени при старте контроллера
  53. */
  54. TaskHandle_t xHandleSntpOnceSinhro = NULL;
  55. /**
  56. * @brief Задача инициализации. Запускает основные задачи девайса и умирает.
  57. * @retval
  58. */
  59. void InitTask(void *params)
  60. {
  61. // -----------------------------------------------------------------------------
  62. xTaskCreate(vTaskWdt, "WDT", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  63. // -----------------------------------------------------------------------------
  64. // -----------------------------------------------------------------------------
  65. // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
  66. //SETTINGS_SetDefaultDebug();
  67. //SETTINGS_Save();
  68. SETTINGS_Load();
  69. // -----------------------------------------------------------------------------
  70. // -----------------------------------------------------------------------------
  71. #ifdef USART_DEBUG_ENABLE
  72. InitUSART();
  73. // MICRORL_Init();
  74. #endif
  75. // -----------------------------------------------------------------------------
  76. // -----------------------------------------------------------------------------
  77. #ifdef LED_ENABLE
  78. // LED_Init();
  79. /* Простая мигалка для подтверждения живучести контроллера */
  80. // xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xTaskToKill);
  81. #endif
  82. // -----------------------------------------------------------------------------
  83. // -----------------------------------------------------------------------------
  84. #ifdef BUTTON_ENABLE
  85. /* BUTTON_Init();
  86. xTaskCreate(vTaskButtons, "Buttons", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);*/
  87. #endif
  88. // -----------------------------------------------------------------------------
  89. // -----------------------------------------------------------------------------
  90. #ifdef RTC_ENABLE
  91. //TM_RTC_Init(TM_RTC_ClockSource_External); // Так было
  92. TM_RTC_Init(TM_RTC_ClockSource_Internal); // TODO Уточнить источинк тактирования
  93. #endif
  94. // -----------------------------------------------------------------------------
  95. // -----------------------------------------------------------------------------
  96. #ifdef UPS_ENABLE
  97. /* UPS_Init();
  98. xTaskCreate(UPS_TaskParsing, "UPS_Parsing", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  99. xTaskCreate(UPS_TaskState, "UPS_State", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  100. xTaskCreate(UPS_Monitor, "UPS_Monitor", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);*/
  101. #endif
  102. // -----------------------------------------------------------------------------
  103. // -----------------------------------------------------------------------------
  104. #ifdef NET_ENABLE
  105. ETH_BSP_Config();
  106. LwIP_Init();
  107. #ifdef WEB_SERVER_ENABLE
  108. HTTP_Init();
  109. #endif
  110. #ifdef SNMP_ENABLE
  111. SNMP_Init();
  112. xTaskCreate(SNMP_SysUpTimeTask, "snmpSysUpTime", configMINIMAL_STACK_SIZE,
  113. NULL, tskIDLE_PRIORITY, NULL);
  114. xTaskCreate(snmp_trap_tread, "snmpTrapTest", 3*configMINIMAL_STACK_SIZE,
  115. NULL, tskIDLE_PRIORITY, NULL);
  116. #endif
  117. #endif
  118. // -----------------------------------------------------------------------------
  119. // -----------------------------------------------------------------------------
  120. // Тестирование
  121. // Тест таблицы трапов
  122. //xTaskCreate(vTestTrap, "Trap_test", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
  123. // -----------------------------------------------------------------------------
  124. // -----------------------------------------------------------------------------
  125. #ifdef DEBUG_FREERTOS
  126. xTaskCreate(vTaskDebug, "Debug", 800, NULL, tskIDLE_PRIORITY, NULL);
  127. #endif
  128. // -----------------------------------------------------------------------------
  129. /* xTaskCreate(vTaskTesting, "Testing", configMINIMAL_STACK_SIZE,
  130. NULL, tskIDLE_PRIORITY, NULL);*/
  131. //TEST_InitRS485();
  132. //TEST_IO();
  133. /* Контроль успешной загрузки. Сброс флага bootry */
  134. /* Сброс флага и сохранение нового значения во флеш памяти происходт после
  135. некоторой задержки для запуска всех задач */
  136. vTaskDelay(4000);
  137. // SETTINGS_ResetBootTry();
  138. // Отправка трапа о перезагрузке в случае статического IP
  139. /* if (!dhcp)
  140. SNMP_SendUserTrap(DEVICE_REBOOTED);
  141. printf("Hello world\r\n");*/
  142. vTaskDelete(NULL);
  143. taskYIELD();
  144. }
  145. static void vTaskDebug(void *pvParameters)
  146. {
  147. char msg[700];
  148. for(;;)
  149. {
  150. vTaskList(msg);
  151. printf(msg);
  152. printf("\n\r\r\n");
  153. #if LWIP_STATS
  154. stats_display();
  155. printf("\r\n\r\n");
  156. #endif
  157. vTaskDelay(5000);
  158. }
  159. }
  160. /********************************* (C) РОТЕК **********************************/