mirror of
https://github.com/apache/nuttx.git
synced 2026-06-05 07:12:54 +08:00
Add STM32 watchdog configuration
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4617 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
@@ -233,6 +233,12 @@ config DEBUG_SPI
|
|||||||
---help---
|
---help---
|
||||||
Enable I2C driver debug output (disabled by default)
|
Enable I2C driver debug output (disabled by default)
|
||||||
|
|
||||||
|
config DEBUG_WATCHDOG
|
||||||
|
bool "Enable watchdog timer debug output"
|
||||||
|
default n
|
||||||
|
---help---
|
||||||
|
Enable watchdog timer debug output (disabled by default)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
config DEBUG_SYMBOLS
|
config DEBUG_SYMBOLS
|
||||||
|
|||||||
@@ -363,7 +363,9 @@ HY-Mini specific Configuration Options
|
|||||||
CONFIG_STM32_TIM5
|
CONFIG_STM32_TIM5
|
||||||
CONFIG_STM32_TIM6
|
CONFIG_STM32_TIM6
|
||||||
CONFIG_STM32_TIM7
|
CONFIG_STM32_TIM7
|
||||||
|
CONFIG_STM32_IWDG
|
||||||
CONFIG_STM32_WWDG
|
CONFIG_STM32_WWDG
|
||||||
|
CONFIG_STM32_IWDG
|
||||||
CONFIG_STM32_SPI2
|
CONFIG_STM32_SPI2
|
||||||
CONFIG_STM32_SPI4
|
CONFIG_STM32_SPI4
|
||||||
CONFIG_STM32_USART2
|
CONFIG_STM32_USART2
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
############################################################################
|
############################################################################
|
||||||
# configs/hymini-stm32v/src/Makefile
|
# configs/hymini-stm32v/src/Makefile
|
||||||
#
|
#
|
||||||
# Copyright (C) 2009-2011 Gregory Nutt. All rights reserved.
|
# Copyright (C) 2009-2012 Gregory Nutt. All rights reserved.
|
||||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
# Laurent Latil <laurent@latil.nom.fr>
|
# Laurent Latil <laurent@latil.nom.fr>
|
||||||
#
|
#
|
||||||
@@ -59,6 +59,10 @@ ifeq ($(CONFIG_USBMSC),y)
|
|||||||
CSRCS += up_usbmsc.c
|
CSRCS += up_usbmsc.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_WATCHDOG),y)
|
||||||
|
CSRCS += up_watchdog.c
|
||||||
|
endif
|
||||||
|
|
||||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||||
|
|
||||||
SRCS = $(ASRCS) $(CSRCS)
|
SRCS = $(ASRCS) $(CSRCS)
|
||||||
|
|||||||
@@ -0,0 +1,136 @@
|
|||||||
|
/************************************************************************************
|
||||||
|
* configs/hymini-stm32v/src/up_watchdog.c
|
||||||
|
* arch/arm/src/board/up_watchdog.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||||
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||||
|
* used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||||
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Included Files
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#include <nuttx/watchdog.h>
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "stm32_wdg.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_WATCHDOG
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Definitions
|
||||||
|
************************************************************************************/
|
||||||
|
/* Configuration *******************************************************************/
|
||||||
|
/* Wathdog hardware should be enabled */
|
||||||
|
|
||||||
|
#if !defined(CONFIG_STM32_WWDG) && !defined(CONFIG_STM32_IWDG)
|
||||||
|
# warning "One of CONFIG_STM32_WWDG or CONFIG_STM32_IWDG must be defined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Select the path to the registered watchdog timer device */
|
||||||
|
|
||||||
|
#ifndef CONFIG_STM32_WDG_DEVPATH
|
||||||
|
# ifdef CONFIG_EXAMPLES_WATCHDOG_DEVPATH
|
||||||
|
# define CONFIG_STM32_WDG_DEVPATH CONFIG_EXAMPLES_WATCHDOG_DEVPATH
|
||||||
|
# else
|
||||||
|
# define CONFIG_STM32_WDG_DEVPATH "/dev/watchdog0"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Use the un-calibrated LSI frequency if we have nothing better */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_IWDG) && !defined(CONFIG_STM32_LSIFREQ)
|
||||||
|
# define CONFIG_STM32_LSIFREQ STM32_LSI_FREQUENCY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debug ***************************************************************************/
|
||||||
|
/* Non-standard debug that may be enabled just for testing the watchdog timer */
|
||||||
|
|
||||||
|
#ifndef CONFIG_DEBUG
|
||||||
|
# undef CONFIG_DEBUG_WATCHDOG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_WATCHDOG
|
||||||
|
# define wdgdbg dbg
|
||||||
|
# define wdglldbg lldbg
|
||||||
|
# ifdef CONFIG_DEBUG_VERBOSE
|
||||||
|
# define wdgvdbg vdbg
|
||||||
|
# define wdgllvdbg llvdbg
|
||||||
|
# else
|
||||||
|
# define wdgvdbg(x...)
|
||||||
|
# define wdgllvdbg(x...)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define wdgdbg(x...)
|
||||||
|
# define wdglldbg(x...)
|
||||||
|
# define wdgvdbg(x...)
|
||||||
|
# define wdgllvdbg(x...)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Private Functions
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: up_wdginitialize()
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Perform architecuture-specific initialization of the Watchdog hardware.
|
||||||
|
* This interface must be provided by all configurations using
|
||||||
|
* apps/examples/watchdog
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int up_wdginitialize(void)
|
||||||
|
{
|
||||||
|
/* Initialize tha register the watchdog timer device */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_WWDG)
|
||||||
|
stm32_wwdginitialize(CONFIG_STM32_WDG_DEVPATH);
|
||||||
|
return OK;
|
||||||
|
#elif defined(CONFIG_STM32_IWDG)
|
||||||
|
stm32_iwdginitialize(CONFIG_STM32_WDG_DEVPATH, CONFIG_STM32_LSIFREQ);
|
||||||
|
return OK;
|
||||||
|
#else
|
||||||
|
return -ENODEV;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_WATCHDOG */
|
||||||
@@ -118,6 +118,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -464,6 +464,7 @@ STM3210E-EVAL-specific Configuration Options
|
|||||||
CONFIG_STM32_TIM6
|
CONFIG_STM32_TIM6
|
||||||
CONFIG_STM32_TIM7
|
CONFIG_STM32_TIM7
|
||||||
CONFIG_STM32_WWDG
|
CONFIG_STM32_WWDG
|
||||||
|
CONFIG_STM32_IWDG
|
||||||
CONFIG_STM32_SPI2
|
CONFIG_STM32_SPI2
|
||||||
CONFIG_STM32_SPI4
|
CONFIG_STM32_SPI4
|
||||||
CONFIG_STM32_USART2
|
CONFIG_STM32_USART2
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -152,6 +152,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -72,6 +72,10 @@ ifeq ($(CONFIG_CAN),y)
|
|||||||
CSRCS += up_can.c
|
CSRCS += up_can.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_WATCHDOG),y)
|
||||||
|
CSRCS += up_watchdog.c
|
||||||
|
endif
|
||||||
|
|
||||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||||
|
|
||||||
SRCS = $(ASRCS) $(CSRCS)
|
SRCS = $(ASRCS) $(CSRCS)
|
||||||
|
|||||||
@@ -0,0 +1,136 @@
|
|||||||
|
/************************************************************************************
|
||||||
|
* configs/stm3210e-eval/src/up_watchdog.c
|
||||||
|
* arch/arm/src/board/up_watchdog.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||||
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||||
|
* used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||||
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Included Files
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#include <nuttx/watchdog.h>
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "stm32_wdg.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_WATCHDOG
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Definitions
|
||||||
|
************************************************************************************/
|
||||||
|
/* Configuration *******************************************************************/
|
||||||
|
/* Wathdog hardware should be enabled */
|
||||||
|
|
||||||
|
#if !defined(CONFIG_STM32_WWDG) && !defined(CONFIG_STM32_IWDG)
|
||||||
|
# warning "One of CONFIG_STM32_WWDG or CONFIG_STM32_IWDG must be defined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Select the path to the registered watchdog timer device */
|
||||||
|
|
||||||
|
#ifndef CONFIG_STM32_WDG_DEVPATH
|
||||||
|
# ifdef CONFIG_EXAMPLES_WATCHDOG_DEVPATH
|
||||||
|
# define CONFIG_STM32_WDG_DEVPATH CONFIG_EXAMPLES_WATCHDOG_DEVPATH
|
||||||
|
# else
|
||||||
|
# define CONFIG_STM32_WDG_DEVPATH "/dev/watchdog0"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Use the un-calibrated LSI frequency if we have nothing better */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_IWDG) && !defined(CONFIG_STM32_LSIFREQ)
|
||||||
|
# define CONFIG_STM32_LSIFREQ STM32_LSI_FREQUENCY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debug ***************************************************************************/
|
||||||
|
/* Non-standard debug that may be enabled just for testing the watchdog timer */
|
||||||
|
|
||||||
|
#ifndef CONFIG_DEBUG
|
||||||
|
# undef CONFIG_DEBUG_WATCHDOG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_WATCHDOG
|
||||||
|
# define wdgdbg dbg
|
||||||
|
# define wdglldbg lldbg
|
||||||
|
# ifdef CONFIG_DEBUG_VERBOSE
|
||||||
|
# define wdgvdbg vdbg
|
||||||
|
# define wdgllvdbg llvdbg
|
||||||
|
# else
|
||||||
|
# define wdgvdbg(x...)
|
||||||
|
# define wdgllvdbg(x...)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define wdgdbg(x...)
|
||||||
|
# define wdglldbg(x...)
|
||||||
|
# define wdgvdbg(x...)
|
||||||
|
# define wdgllvdbg(x...)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Private Functions
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: up_wdginitialize()
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Perform architecuture-specific initialization of the Watchdog hardware.
|
||||||
|
* This interface must be provided by all configurations using
|
||||||
|
* apps/examples/watchdog
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int up_wdginitialize(void)
|
||||||
|
{
|
||||||
|
/* Initialize tha register the watchdog timer device */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_WWDG)
|
||||||
|
stm32_wwdginitialize(CONFIG_STM32_WDG_DEVPATH);
|
||||||
|
return OK;
|
||||||
|
#elif defined(CONFIG_STM32_IWDG)
|
||||||
|
stm32_iwdginitialize(CONFIG_STM32_WDG_DEVPATH, CONFIG_STM32_LSIFREQ);
|
||||||
|
return OK;
|
||||||
|
#else
|
||||||
|
return -ENODEV;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_WATCHDOG */
|
||||||
@@ -133,6 +133,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ CONFIG_STM32_TIM5=n
|
|||||||
CONFIG_STM32_TIM6=n
|
CONFIG_STM32_TIM6=n
|
||||||
CONFIG_STM32_TIM7=n
|
CONFIG_STM32_TIM7=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI4=n
|
CONFIG_STM32_SPI4=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -460,6 +460,7 @@ STM3220G-EVAL-specific Configuration Options
|
|||||||
CONFIG_STM32_TIM13
|
CONFIG_STM32_TIM13
|
||||||
CONFIG_STM32_TIM14
|
CONFIG_STM32_TIM14
|
||||||
CONFIG_STM32_WWDG
|
CONFIG_STM32_WWDG
|
||||||
|
CONFIG_STM32_IWDG
|
||||||
CONFIG_STM32_SPI2
|
CONFIG_STM32_SPI2
|
||||||
CONFIG_STM32_SPI3
|
CONFIG_STM32_SPI3
|
||||||
CONFIG_STM32_USART2
|
CONFIG_STM32_USART2
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -80,8 +80,8 @@ ifeq ($(CONFIG_NSH_ARCHINIT),y)
|
|||||||
CSRCS += up_nsh.c
|
CSRCS += up_nsh.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_FPU),y)
|
ifeq ($(CONFIG_WATCHDOG),y)
|
||||||
CSRCS += up_ostest.c
|
CSRCS += up_watchdog.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||||
|
|||||||
@@ -0,0 +1,136 @@
|
|||||||
|
/************************************************************************************
|
||||||
|
* configs/stm3220g-eval/src/up_watchdog.c
|
||||||
|
* arch/arm/src/board/up_watchdog.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||||
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||||
|
* used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||||
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Included Files
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#include <nuttx/watchdog.h>
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "stm32_wdg.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_WATCHDOG
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Definitions
|
||||||
|
************************************************************************************/
|
||||||
|
/* Configuration *******************************************************************/
|
||||||
|
/* Wathdog hardware should be enabled */
|
||||||
|
|
||||||
|
#if !defined(CONFIG_STM32_WWDG) && !defined(CONFIG_STM32_IWDG)
|
||||||
|
# warning "One of CONFIG_STM32_WWDG or CONFIG_STM32_IWDG must be defined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Select the path to the registered watchdog timer device */
|
||||||
|
|
||||||
|
#ifndef CONFIG_STM32_WDG_DEVPATH
|
||||||
|
# ifdef CONFIG_EXAMPLES_WATCHDOG_DEVPATH
|
||||||
|
# define CONFIG_STM32_WDG_DEVPATH CONFIG_EXAMPLES_WATCHDOG_DEVPATH
|
||||||
|
# else
|
||||||
|
# define CONFIG_STM32_WDG_DEVPATH "/dev/watchdog0"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Use the un-calibrated LSI frequency if we have nothing better */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_IWDG) && !defined(CONFIG_STM32_LSIFREQ)
|
||||||
|
# define CONFIG_STM32_LSIFREQ STM32_LSI_FREQUENCY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debug ***************************************************************************/
|
||||||
|
/* Non-standard debug that may be enabled just for testing the watchdog timer */
|
||||||
|
|
||||||
|
#ifndef CONFIG_DEBUG
|
||||||
|
# undef CONFIG_DEBUG_WATCHDOG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_WATCHDOG
|
||||||
|
# define wdgdbg dbg
|
||||||
|
# define wdglldbg lldbg
|
||||||
|
# ifdef CONFIG_DEBUG_VERBOSE
|
||||||
|
# define wdgvdbg vdbg
|
||||||
|
# define wdgllvdbg llvdbg
|
||||||
|
# else
|
||||||
|
# define wdgvdbg(x...)
|
||||||
|
# define wdgllvdbg(x...)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define wdgdbg(x...)
|
||||||
|
# define wdglldbg(x...)
|
||||||
|
# define wdgvdbg(x...)
|
||||||
|
# define wdgllvdbg(x...)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Private Functions
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: up_wdginitialize()
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Perform architecuture-specific initialization of the Watchdog hardware.
|
||||||
|
* This interface must be provided by all configurations using
|
||||||
|
* apps/examples/watchdog
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int up_wdginitialize(void)
|
||||||
|
{
|
||||||
|
/* Initialize tha register the watchdog timer device */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_WWDG)
|
||||||
|
stm32_wwdginitialize(CONFIG_STM32_WDG_DEVPATH);
|
||||||
|
return OK;
|
||||||
|
#elif defined(CONFIG_STM32_IWDG)
|
||||||
|
stm32_iwdginitialize(CONFIG_STM32_WDG_DEVPATH, CONFIG_STM32_LSIFREQ);
|
||||||
|
return OK;
|
||||||
|
#else
|
||||||
|
return -ENODEV;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_WATCHDOG */
|
||||||
@@ -171,6 +171,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -630,6 +630,7 @@ STM3240G-EVAL-specific Configuration Options
|
|||||||
CONFIG_STM32_TIM13
|
CONFIG_STM32_TIM13
|
||||||
CONFIG_STM32_TIM14
|
CONFIG_STM32_TIM14
|
||||||
CONFIG_STM32_WWDG
|
CONFIG_STM32_WWDG
|
||||||
|
CONFIG_STM32_IWDG
|
||||||
CONFIG_STM32_SPI2
|
CONFIG_STM32_SPI2
|
||||||
CONFIG_STM32_SPI3
|
CONFIG_STM32_SPI3
|
||||||
CONFIG_STM32_USART2
|
CONFIG_STM32_USART2
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -84,6 +84,10 @@ ifeq ($(CONFIG_ARCH_FPU),y)
|
|||||||
CSRCS += up_ostest.c
|
CSRCS += up_ostest.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_WATCHDOG),y)
|
||||||
|
CSRCS += up_watchdog.c
|
||||||
|
endif
|
||||||
|
|
||||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||||
|
|
||||||
SRCS = $(ASRCS) $(CSRCS)
|
SRCS = $(ASRCS) $(CSRCS)
|
||||||
|
|||||||
@@ -174,6 +174,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=n
|
CONFIG_STM32_USART2=n
|
||||||
|
|||||||
@@ -633,6 +633,7 @@ STM32F4Discovery-specific Configuration Options
|
|||||||
CONFIG_STM32_TIM13
|
CONFIG_STM32_TIM13
|
||||||
CONFIG_STM32_TIM14
|
CONFIG_STM32_TIM14
|
||||||
CONFIG_STM32_WWDG
|
CONFIG_STM32_WWDG
|
||||||
|
CONFIG_STM32_IWDG
|
||||||
CONFIG_STM32_SPI2
|
CONFIG_STM32_SPI2
|
||||||
CONFIG_STM32_SPI3
|
CONFIG_STM32_SPI3
|
||||||
CONFIG_STM32_USART2
|
CONFIG_STM32_USART2
|
||||||
@@ -835,3 +836,10 @@ Where <subdir> is one of the following:
|
|||||||
Special PWM-only debug options:
|
Special PWM-only debug options:
|
||||||
|
|
||||||
CONFIG_DEBUG_QENCODER
|
CONFIG_DEBUG_QENCODER
|
||||||
|
|
||||||
|
3. This examples supports the watchdog timer test (apps/examples/watchdog)
|
||||||
|
buty this must be manually enabled by selecting:
|
||||||
|
|
||||||
|
CONFIG_WATCHDOG=y : Enables watchdog timer driver support
|
||||||
|
CONFIG_STM32_WWDG=y : Enables the WWDG timer facility, OR
|
||||||
|
CONFIG_STM32_IWDG=y : Enables the IWDG timer facility (but not both)
|
||||||
|
|||||||
@@ -61,3 +61,7 @@ ifeq ($(CONFIG_CDCACM),y)
|
|||||||
CONFIGURED_APPS += examples/cdcacm
|
CONFIGURED_APPS += examples/cdcacm
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_WATCHDOG),y)
|
||||||
|
CONFIGURED_APPS += examples/watchdog
|
||||||
|
endif
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
@@ -1010,6 +1011,18 @@ CONFIG_USBMSC_PRODUCTSTR="USBdev Storage"
|
|||||||
CONFIG_USBMSC_VERSIONNO=0x0399
|
CONFIG_USBMSC_VERSIONNO=0x0399
|
||||||
CONFIG_USBMSC_REMOVABLE=y
|
CONFIG_USBMSC_REMOVABLE=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Watchdog timer configuration
|
||||||
|
#
|
||||||
|
# CONFIG_WATCHDOG - Enable overall watchdog timer driver support.
|
||||||
|
#
|
||||||
|
# The STM32 also needs one of the following enabled:
|
||||||
|
#
|
||||||
|
# CONFIG_STM32_WWDG=y, OR
|
||||||
|
# CONFIG_STM32_IWDG=y (but not both)
|
||||||
|
#
|
||||||
|
CONFIG_WATCHDOG=n
|
||||||
|
|
||||||
#
|
#
|
||||||
# Graphics related configuration settings
|
# Graphics related configuration settings
|
||||||
#
|
#
|
||||||
@@ -1355,6 +1368,41 @@ CONFIG_EXAMPLES_CDCACM_TRACEINTERRUPTS=n
|
|||||||
# CONFIG_EXAMPLES_PWM_DURATION - The initial PWM pulse train duration in sectonds.
|
# CONFIG_EXAMPLES_PWM_DURATION - The initial PWM pulse train duration in sectonds.
|
||||||
# as a percentage. Default: 5 seconds
|
# as a percentage. Default: 5 seconds
|
||||||
|
|
||||||
|
#
|
||||||
|
# Settings for examples/watchdog
|
||||||
|
#
|
||||||
|
|
||||||
|
# This test depends on these specific Watchdog/NSH configurations settings (your
|
||||||
|
# specific watchdog hardware settings might require additional settings).
|
||||||
|
#
|
||||||
|
# CONFIG_WATCHDOG- Enables watchdog timer support support.
|
||||||
|
# CONFIG_NSH_BUILTIN_APPS - Build the watchdog time test as an NSH
|
||||||
|
# built-in function. Default: Not built! The example can only be used
|
||||||
|
# as an NSH built-in application
|
||||||
|
#
|
||||||
|
# The STM32 also needs one of the following enabled:
|
||||||
|
#
|
||||||
|
# CONFIG_STM32_WWDG=y, OR
|
||||||
|
# CONFIG_STM32_IWDG=y (but not both)
|
||||||
|
#
|
||||||
|
# Specific configuration options for this example include:
|
||||||
|
#
|
||||||
|
# CONFIG_EXAMPLES_WATCHDOG_DEVPATH - The path to the Watchdog device.
|
||||||
|
# Default: /dev/watchdog0
|
||||||
|
# CONFIG_EXAMPLES_WATCHDOG_PINGTIME - Time in milliseconds that the example
|
||||||
|
# will ping the watchdog before letting the watchdog expire. Default: 5000
|
||||||
|
# milliseconds
|
||||||
|
# CONFIG_EXAMPLES_WATCHDOG_PINGDELAY - Time delay between pings in
|
||||||
|
# milliseconds. Default: 500 milliseconds.
|
||||||
|
# CONFIG_EXAMPLES_WATCHDOG_TIMEOUT - The watchdog timeout value in
|
||||||
|
# milliseconds before the watchdog timer expires. Default: 2000
|
||||||
|
# milliseconds.
|
||||||
|
#
|
||||||
|
# CONFIG_EXAMPLES_WATCHDOG_DEVPATH
|
||||||
|
# CONFIG_EXAMPLES_WATCHDOG_PINGTIME
|
||||||
|
# CONFIG_EXAMPLES_WATCHDOG_PINGDELAY
|
||||||
|
# CONFIG_EXAMPLES_WATCHDOG_TIMEOUT
|
||||||
|
|
||||||
#
|
#
|
||||||
# Stack and heap information
|
# Stack and heap information
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ CONFIG_STM32_TIM12=n
|
|||||||
CONFIG_STM32_TIM13=n
|
CONFIG_STM32_TIM13=n
|
||||||
CONFIG_STM32_TIM14=n
|
CONFIG_STM32_TIM14=n
|
||||||
CONFIG_STM32_WWDG=n
|
CONFIG_STM32_WWDG=n
|
||||||
|
CONFIG_STM32_IWDG=n
|
||||||
CONFIG_STM32_SPI2=n
|
CONFIG_STM32_SPI2=n
|
||||||
CONFIG_STM32_SPI3=n
|
CONFIG_STM32_SPI3=n
|
||||||
CONFIG_STM32_USART2=y
|
CONFIG_STM32_USART2=y
|
||||||
|
|||||||
@@ -68,6 +68,10 @@ ifeq ($(CONFIG_QENCODER),y)
|
|||||||
CSRCS += up_qencoder.c
|
CSRCS += up_qencoder.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_WATCHDOG),y)
|
||||||
|
CSRCS += up_watchdog.c
|
||||||
|
endif
|
||||||
|
|
||||||
COBJS = $(CSRCS:.c=$(OBJEXT))
|
COBJS = $(CSRCS:.c=$(OBJEXT))
|
||||||
|
|
||||||
SRCS = $(ASRCS) $(CSRCS)
|
SRCS = $(ASRCS) $(CSRCS)
|
||||||
|
|||||||
@@ -0,0 +1,136 @@
|
|||||||
|
/************************************************************************************
|
||||||
|
* configs/stm32f4discovery/src/up_watchdog.c
|
||||||
|
* arch/arm/src/board/up_watchdog.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||||
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||||
|
* used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||||
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||||
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Included Files
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
#include <nuttx/watchdog.h>
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "stm32_wdg.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_WATCHDOG
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Definitions
|
||||||
|
************************************************************************************/
|
||||||
|
/* Configuration *******************************************************************/
|
||||||
|
/* Wathdog hardware should be enabled */
|
||||||
|
|
||||||
|
#if !defined(CONFIG_STM32_WWDG) && !defined(CONFIG_STM32_IWDG)
|
||||||
|
# warning "One of CONFIG_STM32_WWDG or CONFIG_STM32_IWDG must be defined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Select the path to the registered watchdog timer device */
|
||||||
|
|
||||||
|
#ifndef CONFIG_STM32_WDG_DEVPATH
|
||||||
|
# ifdef CONFIG_EXAMPLES_WATCHDOG_DEVPATH
|
||||||
|
# define CONFIG_STM32_WDG_DEVPATH CONFIG_EXAMPLES_WATCHDOG_DEVPATH
|
||||||
|
# else
|
||||||
|
# define CONFIG_STM32_WDG_DEVPATH "/dev/watchdog0"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Use the un-calibrated LSI frequency if we have nothing better */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_IWDG) && !defined(CONFIG_STM32_LSIFREQ)
|
||||||
|
# define CONFIG_STM32_LSIFREQ STM32_LSI_FREQUENCY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debug ***************************************************************************/
|
||||||
|
/* Non-standard debug that may be enabled just for testing the watchdog timer */
|
||||||
|
|
||||||
|
#ifndef CONFIG_DEBUG
|
||||||
|
# undef CONFIG_DEBUG_WATCHDOG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_DEBUG_WATCHDOG
|
||||||
|
# define wdgdbg dbg
|
||||||
|
# define wdglldbg lldbg
|
||||||
|
# ifdef CONFIG_DEBUG_VERBOSE
|
||||||
|
# define wdgvdbg vdbg
|
||||||
|
# define wdgllvdbg llvdbg
|
||||||
|
# else
|
||||||
|
# define wdgvdbg(x...)
|
||||||
|
# define wdgllvdbg(x...)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define wdgdbg(x...)
|
||||||
|
# define wdglldbg(x...)
|
||||||
|
# define wdgvdbg(x...)
|
||||||
|
# define wdgllvdbg(x...)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Private Functions
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: up_wdginitialize()
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Perform architecuture-specific initialization of the Watchdog hardware.
|
||||||
|
* This interface must be provided by all configurations using
|
||||||
|
* apps/examples/watchdog
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int up_wdginitialize(void)
|
||||||
|
{
|
||||||
|
/* Initialize tha register the watchdog timer device */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_WWDG)
|
||||||
|
stm32_wwdginitialize(CONFIG_STM32_WDG_DEVPATH);
|
||||||
|
return OK;
|
||||||
|
#elif defined(CONFIG_STM32_IWDG)
|
||||||
|
stm32_iwdginitialize(CONFIG_STM32_WDG_DEVPATH, CONFIG_STM32_LSIFREQ);
|
||||||
|
return OK;
|
||||||
|
#else
|
||||||
|
return -ENODEV;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_WATCHDOG */
|
||||||
+3
-2
@@ -478,6 +478,7 @@ FAR void *watchdog_register(FAR const char *path,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
DEBUGASSERT(path && lower);
|
DEBUGASSERT(path && lower);
|
||||||
|
wdvdbg("Registering: %s\n", path);
|
||||||
|
|
||||||
/* Allocate the upper-half data structure */
|
/* Allocate the upper-half data structure */
|
||||||
|
|
||||||
@@ -548,14 +549,14 @@ void watchdog_unregister(FAR void *handle)
|
|||||||
FAR struct watchdog_upperhalf_s *upper;
|
FAR struct watchdog_upperhalf_s *upper;
|
||||||
FAR struct watchdog_lowerhalf_s *lower;
|
FAR struct watchdog_lowerhalf_s *lower;
|
||||||
|
|
||||||
wdvdbg("cmd: %d arg: %ld\n", cmd, arg);
|
|
||||||
|
|
||||||
/* Recover the pointer to the upper-half driver state */
|
/* Recover the pointer to the upper-half driver state */
|
||||||
|
|
||||||
upper = (FAR struct watchdog_upperhalf_s *)handle;
|
upper = (FAR struct watchdog_upperhalf_s *)handle;
|
||||||
lower = upper->lower;
|
lower = upper->lower;
|
||||||
DEBUGASSERT(upper && lower);
|
DEBUGASSERT(upper && lower);
|
||||||
|
|
||||||
|
wdvdbg("Unregistering: %s\n", upper->path);
|
||||||
|
|
||||||
/* Disable the watchdog timer */
|
/* Disable the watchdog timer */
|
||||||
|
|
||||||
DEBUGASSERT(lower->ops->stop); /* Required */
|
DEBUGASSERT(lower->ops->stop); /* Required */
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user