20230731_XiaoFuZi_emb/ZheDaXiaoFuZi/Src/Usr/Driver/Ldrv/Self-Destruction/McuSelfDestructionDrv.c
Rjh913828050 a8560d741e 类型:重构
内容:重新整理项目文件分类
人员:任家豪
2023-10-08 16:10:23 +08:00

117 lines
5.9 KiB
C

#include "McuSelfDestructionDrv.h"
/* 自毁中断回调函数 */
static GpioTypeCallback gMcuSelfDestructionDrvCallback;
/* 终端触发IO口1 */
#define MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_PIN GPIO_PIN_10
#define MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_PORT GPIOE
#define MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_MODE GPIO_MODE_OUTPUT_PP
#define MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_PULL GPIO_PULLDOWN
#define MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_SPEED GPIO_SPEED_FREQ_HIGH
/* 终端触发IO口2 */
#define MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_PIN GPIO_PIN_11
#define MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_PORT GPIOE
#define MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_MODE GPIO_MODE_OUTPUT_PP
#define MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_PULL GPIO_PULLDOWN
#define MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_SPEED GPIO_SPEED_FREQ_HIGH
/* 终端触发IO口3 */
#define MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_PIN GPIO_PIN_12
#define MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_PORT GPIOE
#define MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_MODE GPIO_MODE_OUTPUT_PP
#define MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_PULL GPIO_PULLDOWN
#define MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_SPEED GPIO_SPEED_FREQ_HIGH
/* 终端触发IO口4 */
#define MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_PIN GPIO_PIN_13
#define MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_PORT GPIOE
#define MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_MODE GPIO_MODE_OUTPUT_PP
#define MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_PULL GPIO_PULLDOWN
#define MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_SPEED GPIO_SPEED_FREQ_HIGH
/* 终端响应口 */
#define MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PIN GPIO_PIN_14
#define MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PORT GPIOD
#define MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_MODE GPIO_MODE_OUTPUT_PP
#define MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PULL GPIO_PULLDOWN
#define MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_SPEED GPIO_SPEED_FREQ_HIGH
/* 关闭自毁监检测 */
static void McuSelfDestructionDrvOffCheck(void);
/* 打开自毁检测 */
static void McuSelfDestructionDrvOnCheck(void);
/* 初始化 */
void McuSelfDestructionDrvInit(GpioTypeCallback Callback)
{
McuBspGpioInit(MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PIN,
MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_MODE, MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_SPEED,
MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PULL, 0, NULL);
McuBspGpioSetLevel(MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PIN, MCU_BSP_GPIO_OUT_LOW);
gMcuSelfDestructionDrvCallback = Callback;
}
/* 设置自毁模式 */
void McuSelfDestructionDrvSetMode(uint32_t mode)
{
if (mode != 0) {
McuSelfDestructionDrvOnCheck();
} else {
McuSelfDestructionDrvOffCheck();
}
}
/* 打开或关闭自毁信号 */
void McuSelfDestructionDrvOnOff(int OnOff)
{
if (OnOff == 0) {
McuBspGpioSetLevel(MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PIN, MCU_BSP_GPIO_OUT_LOW);
} else {
McuBspGpioSetLevel(MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_CTRL_POWER_GPIO_PIN, MCU_BSP_GPIO_OUT_HIGH);
}
}
/* 获取当前引脚的状态 */
int McuSelfDestructionDrvGetSta(void)
{
int rt = 0;
if (1 == McuBspGpioGetLevel(MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_PIN)) {
rt = 1;
}
if (1 == McuBspGpioGetLevel(MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_PIN)) {
rt = 1;
}
if (1 == McuBspGpioGetLevel(MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_PIN)) {
rt = 1;
}
if (1 == McuBspGpioGetLevel(MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_PIN)) {
rt = 1;
}
return rt;
}
/* 关闭自毁监检测 */
static void McuSelfDestructionDrvOffCheck(void)
{
McuBspGpioInit(MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_PIN,
GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL);
McuBspGpioInit(MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_PIN,
GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL);
McuBspGpioInit(MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_PIN,
GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL);
McuBspGpioInit(MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_PIN,
GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL);
}
/* 打开自毁检测 */
static void McuSelfDestructionDrvOnCheck(void)
{
McuBspGpioInit(MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT1_INT_GPIO_PIN,
GPIO_MODE_IT_RISING_FALLING, GPIO_SPEED_FREQ_HIGH, GPIO_PULLDOWN, MCU_BSP_GPIO_EXTI15_10, gMcuSelfDestructionDrvCallback);
McuBspGpioInit(MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT2_INT_GPIO_PIN,
GPIO_MODE_IT_RISING_FALLING, GPIO_SPEED_FREQ_HIGH, GPIO_PULLDOWN, MCU_BSP_GPIO_EXTI15_10, gMcuSelfDestructionDrvCallback);
McuBspGpioInit(MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT3_INT_GPIO_PIN,
GPIO_MODE_IT_RISING_FALLING, GPIO_SPEED_FREQ_HIGH, GPIO_PULLDOWN, MCU_BSP_GPIO_EXTI15_10, gMcuSelfDestructionDrvCallback);
McuBspGpioInit(MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_PORT, MCU_DRV_SELF_DESTRUCTION_INPUT4_INT_GPIO_PIN,
GPIO_MODE_IT_RISING_FALLING, GPIO_SPEED_FREQ_HIGH, GPIO_PULLDOWN, MCU_BSP_GPIO_EXTI15_10, gMcuSelfDestructionDrvCallback);
}