![]() |
PDL for FM0+
Version1.0
Peripheral Driverl Library for FM0+
|
00001 /******************************************************************************* 00002 * Copyright (C) 2013 Spansion LLC. All Rights Reserved. 00003 * 00004 * This software is owned and published by: 00005 * Spansion LLC, 915 DeGuigne Dr. Sunnyvale, CA 94088-3453 ("Spansion"). 00006 * 00007 * BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND 00008 * BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT. 00009 * 00010 * This software contains source code for use with Spansion 00011 * components. This software is licensed by Spansion to be adapted only 00012 * for use in systems utilizing Spansion components. Spansion shall not be 00013 * responsible for misuse or illegal use of this software for devices not 00014 * supported herein. Spansion is providing this software "AS IS" and will 00015 * not be responsible for issues arising from incorrect user implementation 00016 * of the software. 00017 * 00018 * SPANSION MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE, 00019 * REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS), 00020 * ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING, 00021 * WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED 00022 * WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED 00023 * WARRANTY OF NONINFRINGEMENT. 00024 * SPANSION SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT, 00025 * NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT 00026 * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, 00027 * LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR 00028 * INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT, 00029 * INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA, 00030 * SAVINGS OR PROFITS, 00031 * EVEN IF SPANSION HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 00032 * YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR 00033 * INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED 00034 * FROM, THE SOFTWARE. 00035 * 00036 * This software may be replicated in part or whole for the licensed use, 00037 * with the restriction that this Disclaimer and Copyright notice must be 00038 * included with each copy of this software, whether used in part or whole, 00039 * at all times. 00040 */ 00041 /******************************************************************************/ 00052 /******************************************************************************/ 00053 /* Include files */ 00054 /******************************************************************************/ 00055 #include "reset.h" 00056 #include <string.h> 00057 00058 #if (defined(PDL_PERIPHERAL_RESET_ACTIVE)) 00059 00065 00066 /******************************************************************************/ 00067 /* Local pre-processor symbols/macros ('#define') */ 00068 /******************************************************************************/ 00069 00070 /******************************************************************************/ 00071 /* Global variable definitions (declared in header file with 'extern') */ 00072 /******************************************************************************/ 00073 stc_reset_result_t stcStoredResetCause; 00074 00075 00076 /******************************************************************************/ 00077 /* Local type definitions ('typedef') */ 00078 /******************************************************************************/ 00079 00080 /******************************************************************************/ 00081 /* Local function prototypes ('static') */ 00082 /******************************************************************************/ 00083 00084 /******************************************************************************/ 00085 /* Local variable definitions ('static') */ 00086 /******************************************************************************/ 00087 00088 /******************************************************************************/ 00089 /* Function implementation - global ('extern') and local ('static') */ 00090 /******************************************************************************/ 00091 00108 en_result_t Reset_GetCause(stc_reset_result_t* pstcResult) 00109 { 00110 stc_crg_rst_str_field_t stcReadResetCause; 00111 00112 stcReadResetCause = FM0P_CRG->RST_STR_f; 00113 00114 // Check Power-on bit 00115 if (1 == stcReadResetCause.PONR) 00116 { 00117 pstcResult->bPowerOn = TRUE; 00118 } 00119 else 00120 { 00121 pstcResult->bPowerOn = FALSE; 00122 } 00123 00124 // Check INITX/External Reset bit 00125 if (1 == stcReadResetCause.INITX) 00126 { 00127 pstcResult->bInitx = TRUE; 00128 } 00129 else 00130 { 00131 pstcResult->bInitx = FALSE; 00132 } 00133 00134 // Check Software Watchdog bit 00135 if (1 == stcReadResetCause.SWDT) 00136 { 00137 pstcResult->bSoftwareWatchdog = TRUE; 00138 } 00139 else 00140 { 00141 pstcResult->bSoftwareWatchdog = FALSE; 00142 } 00143 00144 // Check Hardware Watchdog bit 00145 if (1 == stcReadResetCause.HWDT) 00146 { 00147 pstcResult->bHardwareWatchdog = TRUE; 00148 } 00149 else 00150 { 00151 pstcResult->bHardwareWatchdog = FALSE; 00152 } 00153 00154 // Check Clock Supervisor bit 00155 if (1 == stcReadResetCause.CSVR) 00156 { 00157 pstcResult->bClockSupervisor = TRUE; 00158 } 00159 else 00160 { 00161 pstcResult->bClockSupervisor = FALSE; 00162 } 00163 00164 // Check Anomalous Frequency bit 00165 if (1 == stcReadResetCause.FCSR) 00166 { 00167 pstcResult->bAnomalousFrequency = TRUE; 00168 } 00169 else 00170 { 00171 pstcResult->bAnomalousFrequency = FALSE; 00172 } 00173 00174 // Check Software Reset bit 00175 if (1 == stcReadResetCause.SRST) 00176 { 00177 pstcResult->bSoftware = TRUE; 00178 } 00179 else 00180 { 00181 pstcResult->bSoftware = FALSE; 00182 } 00183 00184 // Copy reset cause structure argument contents to global reset cause structure 00185 memcpy(&stcStoredResetCause, pstcResult, sizeof(stcStoredResetCause)); 00186 00187 return Ok; 00188 } // Reset_GetCause 00189 00201 en_result_t Reset_GetStoredCause( stc_reset_result_t* pstcResult ) 00202 { 00203 // Copy global reset cause structure contents to reset cause structure argument 00204 memcpy(pstcResult, &stcStoredResetCause, sizeof(stcStoredResetCause)); 00205 00206 return Ok; 00207 } 00208 00210 00211 #endif // #if (defined(PDL_PERIPHERAL_RESET_ACTIVE)) 00212 00213 /******************************************************************************/ 00214 /* EOF (not truncated) */ 00215 /******************************************************************************/