| /* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */ | |
| /* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */ | |
| /* ELIGIBILITY FOR ANY PURPOSES. */ | |
| /* (C) Fujitsu Microelectronics Europe GmbH */ | |
| /*------------------------------------------------------------------------ | |
| watchdog.c | |
| - This file contains the function deefinition for hardware watchdog. | |
| -------------------------------------------------------------------------*/ | |
| #include "mb91467d.h" | |
| #include "FreeRTOS.h" | |
| #include "task.h" | |
| #include "watchdog.h" | |
| /*--------------------------------------------------------------------------- | |
| * Setup Watchdog | |
| *---------------------------------------------------------------------------*/ | |
| #if WATCHDOG != WTC_NONE | |
| void InitWatchdog(void) | |
| { | |
| HWWDE_ED = WTC_PER_2_16; /* Set the watchdog period as 655.36 ms */ | |
| } | |
| #endif | |
| /*--------------------------------------------------------------------------- | |
| * The below task clears the watchdog and blocks itself for WTC_CLR_PER ticks. | |
| *---------------------------------------------------------------------------*/ | |
| #if WATCHDOG == WTC_IN_TASK | |
| static void prvWatchdogTask ( void *pvParameters ) | |
| { | |
| const TickType_t xFrequency = WTC_CLR_PER; | |
| TickType_t xLastWakeTime; | |
| /* Get currrent tick count */ | |
| xLastWakeTime = xTaskGetTickCount(); | |
| for( ; ; ) | |
| { | |
| Kick_Watchdog(); | |
| /* Block the task for WTC_CLR_PER ticks (300 ms) at watchdog overflow | |
| period of WTC_PER_2_16 CLKRC cycles (655.36 ms) */ | |
| vTaskDelayUntil( &xLastWakeTime, xFrequency ); | |
| } | |
| } | |
| #endif | |
| /*--------------------------------------------------------------------------- | |
| * The below function creates hardware watchdog task. | |
| *---------------------------------------------------------------------------*/ | |
| #if WATCHDOG == WTC_IN_TASK | |
| void vStartWatchdogTask( unsigned short uxPriority ) | |
| { | |
| xTaskCreate( prvWatchdogTask , "KickWTC", portMINIMAL_STACK_SIZE, ( void * ) NULL, uxPriority, ( TaskHandle_t * ) NULL ); | |
| } | |
| #endif |