Browse Source

add user folder

balbekova 8 năm trước cách đây
mục cha
commit
639bcd3eaa
6 tập tin đã thay đổi với 634 bổ sung0 xóa
  1. 199 0
      user/init_task.c
  2. 25 0
      user/init_task.h
  3. 51 0
      user/main.c
  4. 70 0
      user/main.h
  5. 215 0
      user/stm32f4xx_it.c
  6. 74 0
      user/stm32f4xx_it.h

+ 199 - 0
user/init_task.c

@@ -0,0 +1,199 @@
+/********************************* (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 "buttons.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 "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);
+// -----------------------------------------------------------------------------    
+
+// -----------------------------------------------------------------------------    
+ // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
+  //SETTINGS_SetDefaultDebug();
+  //SETTINGS_Save();
+  SETTINGS_Load();
+// -----------------------------------------------------------------------------    
+  
+// -----------------------------------------------------------------------------  
+#ifdef USART_DEBUG_ENABLE
+  InitUSART();
+ // MICRORL_Init();
+#endif  
+// -----------------------------------------------------------------------------    
+
+// -----------------------------------------------------------------------------  
+#ifdef LED_ENABLE
+//  LED_Init();
+  /* Простая мигалка для подтверждения живучести контроллера */
+//  xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xTaskToKill);
+#endif  
+// -----------------------------------------------------------------------------    
+  
+// -----------------------------------------------------------------------------  
+#ifdef BUTTON_ENABLE  
+ /* BUTTON_Init();
+  xTaskCreate(vTaskButtons, "Buttons", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);*/
+#endif
+// -----------------------------------------------------------------------------    
+  
+// -----------------------------------------------------------------------------    
+#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
+// -----------------------------------------------------------------------------    
+  
+// -----------------------------------------------------------------------------  
+#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  
+// -----------------------------------------------------------------------------      
+   
+// -----------------------------------------------------------------------------  
+// Тестирование
+    
+  // Тест таблицы трапов  
+  //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) РОТЕК **********************************/

+ 25 - 0
user/init_task.h

@@ -0,0 +1,25 @@
+/********************************* (C) РОТЕК ***********************************
+ * @module  init_task
+ * @file    init_task.h
+ * @version 1.0.0
+ * @date    XX.XX.XXXX
+ * $brief   Инициализация всех задач.
+ *******************************************************************************
+ * @history     Version  Author         Comment
+ * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
+ *******************************************************************************
+ */
+
+/* Define to prevent recursive  ----------------------------------------------*/
+#ifndef INIT_TASK_H
+#define INIT_TASK_H
+
+/**
+  * @brief  Задача инициализации. Запускает основные задачи девайса и умирает.
+  */
+void InitTask( void *params);
+
+
+#endif /* #ifndef INIT_TASK_H */
+
+/********************************* (C) РОТЕК **********************************/

+ 51 - 0
user/main.c

@@ -0,0 +1,51 @@
+#include "stm32f4xx.h"
+
+#include "FreeRTOS.h"
+#include "task.h"
+
+#include "gpio.h"
+
+#include "main.h"
+#include "init_task.h"
+
+/* Размещение стека FreeRTOS в CCRAM */
+uint8_t ucHeap[ configTOTAL_HEAP_SIZE ] __attribute__ ((section (".mb1text")));
+/* Секция размещения СRC прошивки */
+uint32_t crc __attribute__ ((section (".crc"))) = 0xAABBCCDD;
+
+ 
+int main()
+{
+  //TIM_Cmd(TIM13, DISABLE);
+  //TIM_ClearITPendingBit(TIM13, TIM_IT_Update);
+  
+	__disable_irq();
+	NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x20000);
+	NVIC_SetPriorityGrouping(0);
+	NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );
+	__enable_irq();
+
+	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
+
+	/* Clear flash error flags if were set */
+	FLASH_ClearFlag(FLASH_FLAG_PGPERR);
+	FLASH_ClearFlag(FLASH_FLAG_PGSERR);
+
+	gpio_init();
+
+
+  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
+  
+   xTaskCreate( InitTask, "InitTask", 1000, NULL, tskIDLE_PRIORITY, NULL);
+  
+  vTaskStartScheduler();
+  
+  return 0;
+/*	while(1)
+	{
+
+	}*/
+
+}
+
+

+ 70 - 0
user/main.h

@@ -0,0 +1,70 @@
+/**
+  ******************************************************************************
+  * @file    main.h
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    31-October-2011
+  * @brief   This file contains all the functions prototypes for the main.c 
+  *          file.
+  ******************************************************************************
+  * @attention
+  *
+  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
+  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
+  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
+  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
+  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+  *
+  * <h2><center>&copy; Portions COPYRIGHT 2011 STMicroelectronics</center></h2>
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f4xx.h"
+#include "stm32f4x7_eth_bsp.h"
+
+
+/* MII and RMII mode selection, for STM324xG-EVAL Board(MB786) RevB ***********/
+#define RMII_MODE
+
+#ifdef USART_DEBUG_ENABLE
+#define PRINT_USART(x) printf(x) 
+#else 
+#define PRINT_USART(x)
+#endif
+
+#define tn_task_sleep(x) vTaskDelay(x)
+   
+//#define DEBUG
+
+#ifdef DEBUG
+#define DBG
+#else
+#define DBG if (0)
+#endif   
+
+   
+/* Exported macro ------------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */  
+void Time_Update(void);
+void Delay(uint32_t nCount);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAIN_H */
+
+
+/*********** Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.*****END OF FILE****/
+
+

+ 215 - 0
user/stm32f4xx_it.c

@@ -0,0 +1,215 @@
+/**
+  ******************************************************************************
+  * @file    stm32f4xx_it.c 
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    31-October-2011
+  * @brief   Main Interrupt Service Routines.
+  *          This file provides template for all exceptions handler and 
+  *          peripherals interrupt service routine.
+  ******************************************************************************
+  * @attention
+  *
+  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
+  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
+  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
+  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
+  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+  *
+  * <h2><center>&copy; Portions COPYRIGHT 2011 STMicroelectronics</center></h2>
+  ******************************************************************************
+  */
+/**
+  ******************************************************************************
+  * <h2><center>&copy; Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.</center></h2>
+  * @file    stm32f4xx_it.c
+  * @author  CMP Team
+  * @version V1.0.0
+  * @date    28-December-2012
+  * @brief   Main Interrupt Service Routines.
+  *          This file provides template for all exceptions handler and 
+  *          peripherals interrupt service routine.  
+  *          Modified to support the STM32F4DISCOVERY, STM32F4DIS-BB and
+  *          STM32F4DIS-LCD modules. 
+  ******************************************************************************
+  * @attention
+  *
+  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
+  * TIME. AS A RESULT, Embest SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
+  * OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
+  * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
+  * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+  ******************************************************************************
+  */
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f4xx_it.h"
+#include "main.h"
+#include "stm32f4x7_eth.h"
+
+/* Scheduler includes */
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+
+/* lwip includes */
+#include "sys.h"
+
+//#include "led.h"
+//#include <stdio.h>
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+extern SemaphoreHandle_t s_xSemaphore;
+/* Private function prototypes -----------------------------------------------*/
+extern void xPortSysTickHandler(void);
+/* Private functions ---------------------------------------------------------*/
+
+/******************************************************************************/
+/*            Cortex-M4 Processor Exceptions Handlers                         */
+/******************************************************************************/
+
+/**
+  * @brief   This function handles NMI exception.
+  * @param  None
+  * @retval None
+  */
+void NMI_Handler(void)
+{
+ // LED_On(RED_STATUS);
+  
+  /* Сбросить флаг системы контроля CSS */ 
+  if (RCC->CIR & RCC_CIR_CSSF) RCC->CIR |= RCC_CIR_CSSC;
+	
+ // DBG printf("NMI exception\r\n");
+
+  vTaskDelay(1010);
+  NVIC_SystemReset();
+  
+}
+
+/**
+  * @brief  This function handles Hard Fault exception.
+  * @param  None
+  * @retval None
+  */
+void HardFault_Handler(void)
+{
+  DBG printf("Hardfault\r\n");
+  /* Блокируем управление ключем на тау секунд*/
+  /* TODO Remove if tested. Not sure why we need gpio control here */
+  /* vTaskDelay shouldn't be used in ISR */
+  //IO_KeyBlockOn();
+  //vTaskDelay(1010);
+  //NVIC_SystemReset();
+  /* Go to infinite loop when Hard Fault exception occurs */
+  
+  /* Print SCB register */
+ /* DBG printf("SCB: 0x%x\n\r", SCB->CFSR);
+  DBG printf("UFSR: 0x%x\n\r", (SCB->CFSR & SCB_CFSR_USGFAULTSR_Msk) >> SCB_CFSR_USGFAULTSR_Pos);
+  DBG printf("BFSR: 0x%x\n\r", (SCB->CFSR & SCB_CFSR_BUSFAULTSR_Msk) >> SCB_CFSR_BUSFAULTSR_Pos);
+  DBG printf("MMFSR: 0x%x\n\r", (SCB->CFSR & SCB_CFSR_MEMFAULTSR_Msk) >> SCB_CFSR_MEMFAULTSR_Pos);*/
+  
+  while (1)
+  {
+  }
+}
+
+/**
+  * @brief  This function handles Memory Manage exception.
+  * @param  None
+  * @retval None
+  */
+void MemManage_Handler(void)
+{
+  /* Go to infinite loop when Memory Manage exception occurs */
+  while (1)
+  {
+  }
+}
+
+/**
+  * @brief  This function handles Bus Fault exception.
+  * @param  None
+  * @retval None
+  */
+void BusFault_Handler(void)
+{
+  /* Go to infinite loop when Bus Fault exception occurs */
+  while (1)
+  {
+  }
+}
+
+/**
+  * @brief  This function handles Usage Fault exception.
+  * @param  None
+  * @retval None
+  */
+void UsageFault_Handler(void)
+{
+  /* Go to infinite loop when Usage Fault exception occurs */
+  while (1)
+  {
+  }
+}
+
+/**
+  * @brief  This function handles Debug Monitor exception.
+  * @param  None
+  * @retval None
+  */
+void DebugMon_Handler(void)
+{
+}
+
+/**
+  * @brief  This function handles ethernet DMA interrupt request.
+  * @param  None
+  * @retval None
+  */
+void ETH_IRQHandler(void)
+{
+#if 1 
+  portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
+
+  /* Frame received */
+  if ( ETH_GetDMAFlagStatus(ETH_DMA_FLAG_R) == SET) 
+  {
+    /* Give the semaphore to wakeup LwIP task */
+    xSemaphoreGiveFromISR( s_xSemaphore, &xHigherPriorityTaskWoken );   
+  }
+	
+  /* Clear the interrupt flags. */
+  /* Clear the Eth DMA Rx IT pending bits */
+  ETH_DMAClearITPendingBit(ETH_DMA_IT_R);
+  ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS);
+	
+  // Switch tasks if necessary. */	
+  if( xHigherPriorityTaskWoken != pdFALSE )
+  {
+    portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
+  }
+#endif
+}
+
+
+/******************************************************************************/
+/*                 STM32F4xx Peripherals Interrupt Handlers                   */
+/*  Add here the Interrupt Handler for the used peripheral(s) (PPP), for the  */
+/*  available peripheral interrupt handler's name please refer to the startup */
+/*  file (startup_stm32f4xx.s).                                               */
+/******************************************************************************/
+/**
+  * @brief  This function handles PPP interrupt request.
+  * @param  None
+  * @retval None
+  */
+/*void PPP_IRQHandler(void)
+{
+}*/
+
+
+/*********** Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.*****END OF FILE****/

+ 74 - 0
user/stm32f4xx_it.h

@@ -0,0 +1,74 @@
+/*
+  ******************************************************************************
+  * @file    stm32f4xx_it.h 
+  * @author  MCD Application Team
+  * @version V1.0.0
+  * @date    31-October-2011
+  * @brief   This file contains the headers of the interrupt handlers.
+  ******************************************************************************
+  * @attention
+  *
+  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
+  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
+  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
+  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
+  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+  *
+  * <h2><center>&copy; Portions COPYRIGHT 2011 STMicroelectronics</center></h2>
+  ******************************************************************************
+  */ 
+/**
+  ******************************************************************************
+  * <h2><center>&copy; Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.</center></h2>
+  * @file    stm32f4xx_it.h
+  * @author  CMP Team
+  * @version V1.0.0
+  * @date    28-December-2012
+  * @brief   This file contains the headers of the interrupt handlers.     
+  *          Modified to support the STM32F4DISCOVERY, STM32F4DIS-BB and
+  *          STM32F4DIS-LCD modules. 
+  ******************************************************************************
+  * @attention
+  *
+  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
+  * TIME. AS A RESULT, Embest SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
+  * OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
+  * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
+  * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F4xx_IT_H
+#define __STM32F4xx_IT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif 
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f4xx.h"
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+/* Exported macro ------------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+
+void NMI_Handler(void);
+void HardFault_Handler(void);
+void MemManage_Handler(void);
+void BusFault_Handler(void);
+void UsageFault_Handler(void);
+void SVC_Handler(void);
+void DebugMon_Handler(void);
+void PendSV_Handler(void);
+void SysTick_Handler(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F4xx_IT_H */
+
+/*********** Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.*****END OF FILE****/