balbekova преди 8 години
родител
ревизия
1edc00f09d
променени са 2 файла, в които са добавени 102 реда и са изтрити 0 реда
  1. 71 0
      modules/wdg.c
  2. 31 0
      modules/wdg.h

+ 71 - 0
modules/wdg.c

@@ -0,0 +1,71 @@
+/********************************* (C) РОТЕК ***********************************
+ * @module  wdg
+ * @file    wdg.c
+ * @version 1.0.0
+ * @date    XX.XX.XXXX
+ * $brief   External watchdog (pin PE11)
+ *******************************************************************************
+ * @history     Version  Author         Comment
+ * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
+ *******************************************************************************
+ */
+
+#include "stm32f4xx.h"  
+#include "wdg.h"
+
+/**
+  * @brief  
+  * @retval 
+  */
+void WDG_Init(void)
+{
+  
+//  GPIO_InitTypeDef GPIO_InitStructure;
+  NVIC_InitTypeDef          NVIC_InitStructure;
+  TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
+  
+ // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
+  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM13, ENABLE);
+  
+  /* Port initialization done in "gpio_init" */
+  /* GPIO_InitStructure.GPIO_Pin = WDT_PIN;
+  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
+  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
+  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
+  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
+  GPIO_Init(GPIOE, &GPIO_InitStructure);*/
+  
+  NVIC_InitStructure.NVIC_IRQChannel = TIM8_UP_TIM13_IRQn;
+  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x6;
+  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0;
+  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+  NVIC_Init(&NVIC_InitStructure);
+
+  NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 2);
+  
+  /* APB1 Timer clock is 60Mhz, configure timer clock to 10khz (1 update event per 100 us) */
+  TIM_TimeBaseStructure.TIM_Prescaler = 6000 - 1;
+  /* Configure timer period to 100ms */
+  TIM_TimeBaseStructure.TIM_Period = 1000;
+  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
+  TIM_TimeBaseStructure.TIM_CounterMode	= TIM_CounterMode_Up;
+  TIM_TimeBaseInit(TIM13, &TIM_TimeBaseStructure);
+  
+  TIM_Cmd(TIM13, ENABLE);
+  TIM_ITConfig(TIM13, TIM_IT_Update, ENABLE);
+
+}
+
+/**
+  * @brief  Дергаем пином (сброс внешнего WDT)
+  * @retval 
+  */
+/*void TIM8_UP_TIM13_IRQHandler(void)
+{
+  TIM_ClearITPendingBit(TIM13, TIM_IT_Update);
+  GPIOC->ODR ^= WDT_PIN;
+}*/
+
+
+
+/********************************* (C) РОТЕК **********************************/

+ 31 - 0
modules/wdg.h

@@ -0,0 +1,31 @@
+/********************************* (C) РОТЕК ***********************************
+ * @module  wdg
+ * @file    wdg.h
+ * @version 1.0.0
+ * @date    XX.XX.XXXX
+ * $brief   External watchdog
+ *******************************************************************************
+ * @history     Version  Author         Comment
+ * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
+ *******************************************************************************
+ */
+
+/* Define to prevent recursive  ----------------------------------------------*/
+#ifndef WDG_H
+#define WDG_H
+
+#define WDT_PIN   GPIO_Pin_0
+
+/**
+  * @brief  
+  */
+void WDG_Init(void);
+  
+/**
+  * @brief  Дергаем пином (сброс внешнего WDT)
+  */
+void vTaskWdt(void *pvParameters);
+
+#endif /* #ifndef WDG_H */
+
+/********************************* (C) РОТЕК **********************************/