198 lines
6.0 KiB
C
198 lines
6.0 KiB
C
|
/** ##########################################################################
|
|||
|
** Filename :
|
|||
|
** Project :
|
|||
|
** Module :
|
|||
|
** Processor :
|
|||
|
** Version :
|
|||
|
** Compiler :
|
|||
|
** Date/Time :
|
|||
|
** Abstract :
|
|||
|
** Contents :
|
|||
|
** Note :
|
|||
|
**
|
|||
|
** (c) Copyright dmdz Co.,Ltd
|
|||
|
** --------------------------------------------------------------------------
|
|||
|
** R E V I S I O N H I S T O R Y
|
|||
|
** --------------------------------------------------------------------------
|
|||
|
** Date Ver Author Description
|
|||
|
|
|||
|
** -20230602- --V1.0-- --mingyea--- --修改--
|
|||
|
|
|||
|
** #########################################################################*/
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
- I N C L U D E F I L E S
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
#include "svd.h"
|
|||
|
#include "nvic.h"
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
- D E F I N E S / M A C R O S
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
- T Y P E D E F I N I T I O N S
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
- S T A T I C V A R I A B L E S
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
* G L O B A L V A R I A B L E S
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
- C O N S T A N T S
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
- F U N C T I O N P R O T O T Y P E
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype :
|
|||
|
|Called by :
|
|||
|
|Preconditions :
|
|||
|
|Input parameters :
|
|||
|
|Output parameters :
|
|||
|
|Return value :
|
|||
|
|Description : SVD初始化
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void svd_init(void)
|
|||
|
{
|
|||
|
//FL_GPIO_InitTypeDef GPIO_InitStruct;
|
|||
|
FL_NVIC_ConfigTypeDef InterruptConfigStruct;
|
|||
|
FL_SVD_InitTypeDef SVD_InitStruct;
|
|||
|
|
|||
|
#if 0
|
|||
|
GPIO_InitStruct.pin = FL_GPIO_PIN_15;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_ANALOG;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|||
|
#endif
|
|||
|
|
|||
|
SVD_InitStruct.SVSChannel = FL_DISABLE;
|
|||
|
SVD_InitStruct.digitalFilter = FL_ENABLE;
|
|||
|
SVD_InitStruct.referenceVoltage = FL_SVD_REFERENCE_1P0V;
|
|||
|
SVD_InitStruct.workMode = FL_SVD_WORK_MODE_CONTINUOUS;
|
|||
|
SVD_InitStruct.enablePeriod = FL_SVD_ENABLE_PERIOD_62P5MS;
|
|||
|
SVD_InitStruct.warningThreshold = FL_SVD_WARNING_THRESHOLD_GROUP11; //必须4.2以上
|
|||
|
FL_SVD_Init(SVD, &SVD_InitStruct);
|
|||
|
|
|||
|
/* 清除欠压标志 */
|
|||
|
FL_SVD_ClearFlag_PowerFall(SVD);
|
|||
|
/* 使能欠压中断 */
|
|||
|
FL_SVD_EnableIT_PowerFall(SVD);
|
|||
|
|
|||
|
/* 清除过压标志 */
|
|||
|
FL_SVD_ClearFlag_PowerRise(SVD);
|
|||
|
/* 使能过压中断 */
|
|||
|
FL_SVD_EnableIT_PowerRise(SVD);
|
|||
|
|
|||
|
InterruptConfigStruct.preemptPriority = NVIC_PRIORITY_SVD; //优先级改为最高
|
|||
|
FL_NVIC_Init(&InterruptConfigStruct, SVD_IRQn);
|
|||
|
|
|||
|
FL_SVD_Enable(SVD);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype :
|
|||
|
|Called by :
|
|||
|
|Preconditions :
|
|||
|
|Input parameters :
|
|||
|
|Output parameters :
|
|||
|
|Return value :
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void svd_task(void)
|
|||
|
{
|
|||
|
//SVD锁存判断
|
|||
|
if(FL_RESET == FL_SVD_GetLatchedPowerStatus(SVD)) // SVD内部滤波后的电压检测标志,仅在使能数字滤波时有意义;软件避免写此寄存器。
|
|||
|
{
|
|||
|
// SVD检测到欠压
|
|||
|
// ...
|
|||
|
}
|
|||
|
#if 0
|
|||
|
if(SVDState == SPOWEROFF)
|
|||
|
{
|
|||
|
// SVD检测到欠压
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
// SVD检测到欠压恢复
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype :
|
|||
|
|Called by :
|
|||
|
|Preconditions :
|
|||
|
|Input parameters :
|
|||
|
|Output parameters :
|
|||
|
|Return value :
|
|||
|
|Description : SVD中断配置
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void SVD_Interrupt_Init(void)
|
|||
|
{
|
|||
|
FL_NVIC_ConfigTypeDef InterruptConfigStruct;
|
|||
|
|
|||
|
/* 使能过压和欠压中断 */
|
|||
|
FL_SVD_ClearFlag_PowerRise(SVD);
|
|||
|
FL_SVD_ClearFlag_PowerFall(SVD);
|
|||
|
FL_SVD_EnableIT_PowerRise(SVD);
|
|||
|
FL_SVD_EnableIT_PowerFall(SVD);
|
|||
|
|
|||
|
/* 配置NVIC中断 */
|
|||
|
InterruptConfigStruct.preemptPriority = NVIC_PRIORITY_SVD;
|
|||
|
FL_NVIC_Init(&InterruptConfigStruct, SVD_IRQn);
|
|||
|
|
|||
|
/* 基于SVD监测结果初始赋值 */
|
|||
|
/* 注意:如果有使能数字滤波,应使用SVDR查询;如未使能数字滤波,应使用SVDO查询 */
|
|||
|
//eSVDResult = SVD_SVDO_POLL();
|
|||
|
}
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype :
|
|||
|
|Called by :
|
|||
|
|Preconditions :
|
|||
|
|Input parameters :
|
|||
|
|Output parameters :
|
|||
|
|Return value :
|
|||
|
|Description : SVD中断反初始化
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
|
|||
|
void SVD_Interrupt_DeInit(void)
|
|||
|
{
|
|||
|
/* 禁能过压和欠压中断 */
|
|||
|
FL_SVD_ClearFlag_PowerRise(SVD);
|
|||
|
FL_SVD_ClearFlag_PowerFall(SVD);
|
|||
|
FL_SVD_DisableIT_PowerRise(SVD);
|
|||
|
FL_SVD_DisableIT_PowerFall(SVD);
|
|||
|
|
|||
|
/* 清除NVIC Pending位 */
|
|||
|
NVIC_ClearPendingIRQ(SVD_IRQn);
|
|||
|
/* 禁能NVIC中断 */
|
|||
|
NVIC_DisableIRQ(SVD_IRQn);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|