- 用 DLD154V4B vd1_task/per_channel 替换 vds_task 复杂算法
- 移除 FUNCTION_B/二次判断/快速变化/多重确认等增强特性
- 保留平坦性离开算法 (CN200910309382),每通道独立状态
- 灵敏度表改为 DLD154V4B 4级: {216,108,36,10} / {108,72,18,9}
- 清理废弃类型: FltHistoryManager, Loop_ACS_Info, StageRangeConfig 等
- 首次添加 vd960DBN 完整源码
144 lines
3.3 KiB
C
144 lines
3.3 KiB
C
/**
|
|
**************************************************************************
|
|
* @file at32f421_wdt.c
|
|
* @brief contains all the functions for the wdt firmware library
|
|
**************************************************************************
|
|
* Copyright notice & Disclaimer
|
|
*
|
|
* The software Board Support Package (BSP) that is made available to
|
|
* download from Artery official website is the copyrighted work of Artery.
|
|
* Artery authorizes customers to use, copy, and distribute the BSP
|
|
* software and its related documentation for the purpose of design and
|
|
* development in conjunction with Artery microcontrollers. Use of the
|
|
* software is governed by this copyright notice and the following disclaimer.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED ON "AS IS" BASIS WITHOUT WARRANTIES,
|
|
* GUARANTEES OR REPRESENTATIONS OF ANY KIND. ARTERY EXPRESSLY DISCLAIMS,
|
|
* TO THE FULLEST EXTENT PERMITTED BY LAW, ALL EXPRESS, IMPLIED OR
|
|
* STATUTORY OR OTHER WARRANTIES, GUARANTEES OR REPRESENTATIONS,
|
|
* INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
|
|
*
|
|
**************************************************************************
|
|
*/
|
|
|
|
#include "at32f421_conf.h"
|
|
|
|
/** @addtogroup AT32F421_periph_driver
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup WDT
|
|
* @brief WDT driver modules
|
|
* @{
|
|
*/
|
|
|
|
#ifdef WDT_MODULE_ENABLED
|
|
|
|
/** @defgroup WDT_private_functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief wdt enable ,the reload value will be sent to the counter
|
|
* @param none
|
|
* @retval none
|
|
*/
|
|
void wdt_enable(void)
|
|
{
|
|
WDT->cmd = WDT_CMD_ENABLE;
|
|
}
|
|
|
|
/**
|
|
* @brief reload wdt counter
|
|
* @param none
|
|
* @retval none
|
|
*/
|
|
void wdt_counter_reload(void)
|
|
{
|
|
WDT->cmd = WDT_CMD_RELOAD;
|
|
}
|
|
|
|
/**
|
|
* @brief set wdt counter reload value
|
|
* @param reload_value (0x0000~0x0FFF)
|
|
* @retval none
|
|
*/
|
|
void wdt_reload_value_set(uint16_t reload_value)
|
|
{
|
|
WDT->rld = reload_value;
|
|
}
|
|
|
|
/**
|
|
* @brief set wdt division divider
|
|
* @param division
|
|
* this parameter can be one of the following values:
|
|
* - WDT_CLK_DIV_4
|
|
* - WDT_CLK_DIV_8
|
|
* - WDT_CLK_DIV_16
|
|
* - WDT_CLK_DIV_32
|
|
* - WDT_CLK_DIV_64
|
|
* - WDT_CLK_DIV_128
|
|
* - WDT_CLK_DIV_256
|
|
* @retval none
|
|
*/
|
|
void wdt_divider_set(wdt_division_type division)
|
|
{
|
|
WDT->div_bit.div = division;
|
|
}
|
|
|
|
/**
|
|
* @brief enable or disable wdt cmd register write
|
|
* @param new_state (TRUE or FALSE)
|
|
* @retval none
|
|
*/
|
|
void wdt_register_write_enable( confirm_state new_state)
|
|
{
|
|
if(new_state == FALSE)
|
|
{
|
|
WDT->cmd = WDT_CMD_LOCK;
|
|
}
|
|
else
|
|
{
|
|
WDT->cmd = WDT_CMD_UNLOCK;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief get wdt flag
|
|
* @param wdt_flag
|
|
* this parameter can be one of the following values:
|
|
* - WDT_DIVF_UPDATE_FLAG: division value update complete flag.
|
|
* - WDT_RLDF_UPDATE_FLAG: reload value update complete flag.
|
|
* @retval state of wdt flag
|
|
*/
|
|
flag_status wdt_flag_get(uint16_t wdt_flag)
|
|
{
|
|
flag_status status = RESET;
|
|
|
|
if ((WDT->sts & wdt_flag) != (uint16_t)RESET)
|
|
{
|
|
status = SET;
|
|
}
|
|
else
|
|
{
|
|
status = RESET;
|
|
}
|
|
|
|
return status;
|
|
}
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|