![]() |
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 /******************************************************************************/ 00051 #ifndef __DT_H__ 00052 #define __DT_H__ 00053 00054 /******************************************************************************/ 00055 /* Include files */ 00056 /******************************************************************************/ 00057 #include "mcu.h" 00058 #include "pdl_user.h" 00059 00060 #if (defined(PDL_PERIPHERAL_DT_ACTIVE)) 00061 00062 /* C binding of definitions if building with C++ compiler */ 00063 #ifdef __cplusplus 00064 extern "C" 00065 { 00066 #endif 00067 00117 00118 /****************************************************************************** 00119 * Global type definitions 00120 ******************************************************************************/ 00125 typedef FM0P_DTIM_TypeDef stc_dtn_t; 00126 00133 typedef enum en_dt_mode 00134 { 00135 DtFreeRun = 0, 00136 DtPeriodic = 1, 00137 DtOneShot = 2 00138 } en_dt_mode_t; 00139 00146 typedef enum en_dt_prescaler 00147 { 00148 DtPrescalerDiv1 = 0, 00149 DtPrescalerDiv16 = 1, 00150 DtPrescalerDiv256 = 2 00151 } en_dt_prescaler_t; 00152 00159 typedef enum en_dt_countersize 00160 { 00161 DtCounterSize16 = 0, 00162 DtCounterSize32 = 1 00163 } en_dt_countersize_t; 00164 00169 typedef enum en_dt_channel 00170 { 00171 DtChannel0 = 0, 00172 DtChannel1 = 1, 00173 DtMaxChannels = 2 00174 } en_dt_channel_t; 00175 00182 typedef struct stc_dt_channel_config 00183 { 00184 uint8_t u8Mode; 00185 uint8_t u8PrescalerDiv; 00186 uint8_t u8CounterSize; 00187 } stc_dt_channel_config_t; 00188 00193 typedef void (*dt_cb_func_ptr_t)(void); 00194 00195 /****************************************************************************** 00196 * Global definitions 00197 ******************************************************************************/ 00198 #define DT0 (*((volatile stc_dtn_t *) FM0P_DTIM_BASE)) 00199 00200 /* for TimerPre of TimerXControl */ 00201 #define DT_PRE_TIMER_DIV_1 (0x00) 00202 #define DT_PRE_TIMER_DIV_16 (0x01) 00203 #define DT_PRE_TIMER_DIV_256 (0x02) 00204 00205 /******************************************************************************/ 00206 /* Local type definitions ('typedef') */ 00207 /******************************************************************************/ 00208 00210 typedef enum en_dt_instance_index 00211 { 00212 #if (PDL_PERIPHERAL_ENABLE_DT == PDL_ON) 00213 DtInstanceIndexDt0 = 0u, 00214 #endif 00215 DtInstanceIndexMax 00216 } en_dt_instance_index_t; 00217 00219 typedef struct stc_dt_intern_data 00220 { 00222 dt_cb_func_ptr_t pfnIntCallbackIntern[DtMaxChannels] ; 00223 } stc_dt_intern_data_t ; 00224 00226 typedef struct stc_dt_instance_data 00227 { 00228 volatile stc_dtn_t* pstcInstance; 00229 stc_dt_intern_data_t stcInternData; 00230 } stc_dt_instance_data_t; 00231 00232 /******************************************************************************/ 00233 /* Global variable definitions ('extern') */ 00234 /******************************************************************************/ 00235 00236 /******************************************************************************/ 00237 /* Global function prototypes (definition in C source) */ 00238 /******************************************************************************/ 00239 #if (PDL_INTERRUPT_ENABLE_DT == PDL_ON) 00240 /* External function */ 00241 void DtIrqHandler(uint8_t u8Ch); 00242 en_result_t Dt_EnableInt(dt_cb_func_ptr_t pfnIntCallback, 00243 uint8_t u8Ch); 00244 en_result_t Dt_DisableInt(uint8_t u8Ch); 00245 #endif 00246 00247 /* Init/Deinit */ 00248 en_result_t Dt_Init(stc_dt_channel_config_t* pstcConfig, 00249 uint8_t u8Ch 00250 ); 00251 en_result_t Dt_DeInit(uint8_t u8Ch); 00252 00253 /* Function/Int Enable/Disable */ 00254 en_result_t Dt_EnableCount(uint8_t u8Ch); 00255 en_result_t Dt_DisableCount(uint8_t u8Ch); 00256 00257 /* Get/Clr Status/Int flag */ 00258 boolean_t Dt_GetIntFlag(uint8_t u8Ch); 00259 boolean_t Dt_GetMaskIntFlag(uint8_t u8Ch); 00260 en_result_t Dt_ClrIntFlag(uint8_t u8Ch); 00261 00262 /* Write/Read count value */ 00263 en_result_t Dt_WriteLoadVal(uint32_t u32LoadVal, 00264 uint8_t u8Ch); 00265 en_result_t Dt_WriteBgLoadVal(uint32_t u32BgLoadVal, 00266 uint8_t u8Ch); 00267 uint32_t Dt_ReadCurCntVal(uint8_t u8Ch); 00268 00270 00271 #ifdef __cplusplus 00272 } 00273 #endif 00274 00275 #endif /* #if (defined(PDL_PERIPHERAL_DT_ACTIVE)) */ 00276 00277 #endif /* __DT_H__ */ 00278 /******************************************************************************/ 00279 /* EOF (not truncated) */ 00280 /******************************************************************************/