| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 | /********************************* (C) РОТЕК *********************************** * @module  init_task * @file    init_task.c * @version 1.0.0 * @date    XX.XX.XXXX * $brief   Инициализация всех задач. ******************************************************************************* * @history     Version  Author         Comment * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release. ******************************************************************************* */  #include "init_task.h"#include "common_config.h"   #include "wdg.h"#include "usart.h"//#include "port_microrl.h"#include "led.h"#include "rng.h"#include "buttons.h"#include "jumper.h"#include "rtc.h"#include "stm32f4x7_eth_bsp.h"#include "netconf.h"#include "snmp_api.h"#include "http_server.h"#include "sntp.h"#include "settings_api.h"#include "main.h"#include "trap_api.h"#include "megatec.h"//#include "testing.h"#include "ups_monitor.h"//#include "ups_params.h"//#include "ups_monitor.h"//#include <lwip/stats.h>#ifdef PRINTF_STDLIB#include <stdio.h>#endif#ifdef PRINTF_CUSTOM#include "tinystdio.h"#endif#include "FreeRTOS.h"#include "task.h" extern bool dhcp;	/**  * @brief  Общая структура настроек  */extern SETTINGS_t sSettings;/**  * @brief Хендл для задачи vTaskLedBlink  */TaskHandle_t xTaskToKill;static void vTaskDebug(void *pvParameters);/**  * @brief  Разовая синхронизация времени при старте контроллера  */TaskHandle_t xHandleSntpOnceSinhro = NULL;/**  * @brief  Задача инициализации. Запускает основные задачи девайса и умирает.  * @retval   */void InitTask(void *params){// -----------------------------------------------------------------------------     // xTaskCreate(vTaskWdt, "WDT", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);// -----------------------------------------------------------------------------      InitUSART();  ups_megatec_init();// -----------------------------------------------------------------------------     // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);/*  SETTINGS_SetDefaultDebug();  SETTINGS_Save();*/  SETTINGS_Load();  set_mode_jumper();// -----------------------------------------------------------------------------      // -----------------------------------------------------------------------------  #ifdef USART_DEBUG_ENABLE  InitUSART(); // MICRORL_Init();#endif  // -----------------------------------------------------------------------------    // -----------------------------------------------------------------------------  #ifdef LED_ENABLE  LED_Init();  /* Простая мигалка для подтверждения живучести контроллера */  xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);//&xTaskToKill#endif  // -----------------------------------------------------------------------------      // -----------------------------------------------------------------------------  #ifdef BUTTON_ENABLE    BUTTON_Init();  xTaskCreate(vTaskButtons, "Buttons", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);#endif// -----------------------------------------------------------------------------        //xTaskCreate( d_inouts_task,  "inouts_task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL); // 	xTaskCreate( d_inouts_test, "d_inouts_test", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);// -----------------------------------------------------------------------------    #ifdef RTC_ENABLE    TM_RTC_Init(TM_RTC_ClockSource_External);  // Так было // TM_RTC_Init(TM_RTC_ClockSource_Internal);  // TODO Уточнить источинк тактирования#endif// -----------------------------------------------------------------------------        // -----------------------------------------------------------------------------#ifdef UPS_ENABLE /* UPS_Init();  xTaskCreate(UPS_TaskParsing, "UPS_Parsing", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);  xTaskCreate(UPS_TaskState, "UPS_State", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);*/  xTaskCreate(UPS_Monitor, "UPS_Monitor", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);#endif// -----------------------------------------------------------------------------      /* Random number generator */  RNG_Init();// -----------------------------------------------------------------------------  #ifdef NET_ENABLE  ETH_BSP_Config();  LwIP_Init();  #ifdef WEB_SERVER_ENABLE  HTTP_Init();#endif  #ifdef SNMP_ENABLE  SNMP_Init();	  	xTaskCreate(SNMP_SysUpTimeTask, "snmpSysUpTime", configMINIMAL_STACK_SIZE,              NULL, tskIDLE_PRIORITY, NULL);		xTaskCreate(snmp_trap_tread, "snmpTrapTest", 3*configMINIMAL_STACK_SIZE,              NULL, tskIDLE_PRIORITY, NULL);   #endif	    #endif  // -----------------------------------------------------------------------------      	 /* SNTP */	 SNTP_Init();	 xTaskCreate(vTaskOnceSynchro, "sntpOnceSinhro", 2*configMINIMAL_STACK_SIZE,				 NULL, tskIDLE_PRIORITY, &xHandleSntpOnceSinhro);	 xTaskCreate(vTaskPeriodicSynchro, "sntpPeriodicSinhro", 2*configMINIMAL_STACK_SIZE,				 NULL, tskIDLE_PRIORITY, NULL);// -----------------------------------------------------------------------------  // Тестирование      // Тест таблицы трапов    //xTaskCreate(vTestTrap, "Trap_test", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);// -----------------------------------------------------------------------------      // -----------------------------------------------------------------------------        #ifdef DEBUG_FREERTOS  xTaskCreate(vTaskDebug, "Debug", 800, NULL, tskIDLE_PRIORITY, NULL);#endif  // -----------------------------------------------------------------------------       /* xTaskCreate(vTaskTesting, "Testing", configMINIMAL_STACK_SIZE,              NULL, tskIDLE_PRIORITY, NULL);*/    //TEST_InitRS485();  //TEST_IO();    /* Контроль успешной загрузки. Сброс флага bootry */  /* Сброс флага и сохранение нового значения во флеш памяти происходт после     некоторой задержки для запуска всех задач */  vTaskDelay(4000);   SETTINGS_ResetBootTry();    // Отправка трапа о перезагрузке в случае статического IP /* if (!dhcp)    SNMP_SendUserTrap(DEVICE_REBOOTED);    printf("Hello world\r\n");*/    vTaskDelete(NULL);     taskYIELD();}static void vTaskDebug(void *pvParameters) {  char msg[700];  for(;;)  {	vTaskList(msg);	printf(msg);	printf("\n\r\r\n");     #if LWIP_STATS	stats_display();	printf("\r\n\r\n");#endif	vTaskDelay(5000);  }   }/********************************* (C) РОТЕК **********************************/
 |