123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /********************************* (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 "gpio.h"
- #include "wdg.h"
- /**
- * @brief
- * @retval
- */
- void WDG_Init(void)
- {
-
- NVIC_InitTypeDef NVIC_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM13, ENABLE);
- 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);
- gpio_invert_output(_WDG);
- }
- /**
- * @brief Дергаем пином (сброс внешнего WDT)
- */
- void WDT_Reset(void)
- {
- gpio_invert_output(_WDG);
- }
- /********************************* (C) РОТЕК **********************************/
|