| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /**
- ****************************************************************************************************
- * @file fm33lc0xx_fl_iwdt.c
- * @author FMSH Application Team
- * @brief Src file of IWDT FL Module
- ****************************************************************************************************
- * @attention
- *
- * Copyright (c) [2019] [Fudan Microelectronics]
- * THIS SOFTWARE is licensed under the Mulan PSL v1.
- * can use this software according to the terms and conditions of the Mulan PSL v1.
- * You may obtain a copy of Mulan PSL v1 at:
- * http://license.coscl.org.cn/MulanPSL
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
- * PURPOSE.
- * See the Mulan PSL v1 for more details.
- *
- ****************************************************************************************************
- */
- /* Includes ------------------------------------------------------------------*/
- #include "fm33lc0xx_fl_rcc.h"
- #include "fm33lc0xx_fl_iwdt.h"
- #include "fm33_assert.h"
- /** @addtogroup FM33LC0XX_FL_Driver
- * @{
- */
- /** @addtogroup IWDT
- * @{
- */
- /* Private macros ------------------------------------------------------------*/
- /** @addtogroup IWDT_FL_Private_Macros
- * @{
- */
- #define IS_IWDT_INSTANCE(INTANCE) ((INTANCE) == IWDT)
- #define IS_FL_IWDT_WINDOWSVEL(__VALUE__) ((__VALUE__) < 0xFFF)
- #define IS_FL_IWDT_OVERFLOWPERIOD(__VALUE__) (((__VALUE__) == FL_IWDT_PERIOD_125MS)||\
- ((__VALUE__) == FL_IWDT_PERIOD_250MS)||\
- ((__VALUE__) == FL_IWDT_PERIOD_500MS)||\
- ((__VALUE__) == FL_IWDT_PERIOD_1000MS)||\
- ((__VALUE__) == FL_IWDT_PERIOD_2000MS)||\
- ((__VALUE__) == FL_IWDT_PERIOD_4000MS)||\
- ((__VALUE__) == FL_IWDT_PERIOD_8000MS)||\
- ((__VALUE__) == FL_IWDT_PERIOD_16000MS))
- /**
- * @}
- */
- /** @addtogroup IWDT_FL_EF_Init
- * @{
- */
- /**
- * @brief 复位IWDT外设
- *
- * @note 此函数只能用于配制前复位外设,因为IWDT开启后不可以关闭
- *
- * @param IWDTx 外设入口地址
- *
- * @retval 错误状态,可能值:
- * -FL_PASS 外设寄存器值恢复复位值
- * -FL_FAIL 未成功执行
- */
- FL_ErrorStatus FL_IWDT_DeInit(IWDT_Type *IWDTx)
- {
- assert_param(IS_IWDT_INSTANCE(IWDTx));
- return FL_PASS;
- }
- /**
- * @brief 配置IWDT
- *
- * @note IWTD使能后将无法关闭,直到下一次芯片复位
- *
- * @param IWDTx 外设入口地址
- * @param IWDT_InitStruct 指向 @ref FL_IWDT_InitTypeDef 结构体的指针
- *
- * @retval 错误状态,可能值:
- * -FL_PASS 配置成功
- * -FL_FAIL 配置过程发生错误
- */
- FL_ErrorStatus FL_IWDT_Init(IWDT_Type *IWDTx, FL_IWDT_InitTypeDef *IWDT_InitStruct)
- {
- FL_ErrorStatus status = FL_PASS;
- /* 入口参数检查 */
- assert_param(IS_IWDT_INSTANCE(IWDTx));
- assert_param(IS_FL_IWDT_WINDOWSVEL(IWDT_InitStruct->iwdtWindows));
- assert_param(IS_FL_IWDT_OVERFLOWPERIOD(IWDT_InitStruct->overflowPeriod));
- /* 开启总线时钟 */
- FL_RCC_EnableGroup1BusClock(FL_RCC_GROUP1_BUSCLK_IWDT);
- /* 配置独立看门狗溢出周期 */
- FL_IWDT_SetPeriod(IWDTx, IWDT_InitStruct->overflowPeriod);
- /* 配置独立看门狗清狗窗口*/
- FL_IWDT_WriteWindow(IWDTx, IWDT_InitStruct->iwdtWindows);
- /* 启动看门狗 */
- FL_IWDT_ReloadCounter(IWDTx);
- return status;
- }
- /**
- * @brief 将 @ref FL_IWDT_InitTypeDef 结构体初始化为默认配置
- * @param IWDT_InitStruct 指向 @ref FL_IWDT_InitTypeDef 结构体的指针
- *
- * @retval None
- */
- void FL_IWDT_StructInit(FL_IWDT_InitTypeDef *IWDT_InitStruct)
- {
- /* 默认不使用窗口 */
- IWDT_InitStruct->iwdtWindows = 0;
- /*最长溢出时间*/
- IWDT_InitStruct->overflowPeriod = FL_IWDT_PERIOD_500MS;
- }
- /**
- *@}
- */
- /**
- *@}
- */
- /**
- *@}
- */
- /******************************************* END OF FILE *******************************************/
|