91 lines
2.9 KiB
C
91 lines
2.9 KiB
C
|
||
#include "bsp.h"
|
||
|
||
#define EXIT_LINE LL_EXTI_LINE_16
|
||
|
||
pvd_irq_handle_cb pvd_irq_handle_cb_func = NULL;
|
||
/**
|
||
* @brief 配置PVD(电源电压检测)
|
||
*
|
||
* 根据给定的电源电压等级配置PVD(电源电压检测)。
|
||
*
|
||
* @param pwr_level 电源电压等级
|
||
* @param call PVD中断处理回调函数
|
||
*/
|
||
void pvd_configuration(uint32_t pwr_level, pvd_irq_handle_cb call)
|
||
{
|
||
// pvd_irq_handle_cb_func = call;
|
||
// // 启用电源时钟
|
||
// LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR);
|
||
|
||
// // 设置PVD电平阈值,例如设置为2.4V LL_PWR_PVDLEVEL_2
|
||
// LL_PWR_SetPVDLevel(pwr_level);
|
||
|
||
// // 启用PVD
|
||
// LL_PWR_EnablePVD();
|
||
|
||
// // 配置PVD中断
|
||
// LL_EXTI_EnableIT_0_31(EXIT_LINE); // PVD连接到EXTI Line
|
||
// LL_EXTI_EnableRisingTrig_0_31(EXIT_LINE);
|
||
// LL_EXTI_EnableFallingTrig_0_31(EXIT_LINE);
|
||
|
||
// // 启用PVD中断向量
|
||
// NVIC_EnableIRQ(PVD_PVM_IRQn);
|
||
// NVIC_SetPriority(PVD_PVM_IRQn, 0);
|
||
}
|
||
|
||
/**
|
||
* @brief 处理PVD中断
|
||
*
|
||
* 当PVD中断触发时,该函数将被调用以处理中断事件。
|
||
*
|
||
* @note 无返回值
|
||
*/
|
||
void pvd_irq_handle(void)
|
||
{
|
||
// if (LL_EXTI_IsActiveFlag_0_31(EXIT_LINE))
|
||
// {
|
||
// LL_EXTI_ClearFlag_0_31(EXIT_LINE);
|
||
// if (pvd_irq_handle_cb_func != NULL)
|
||
// {
|
||
// pvd_irq_handle_cb_func();
|
||
// }
|
||
// }
|
||
}
|
||
|
||
/**
|
||
* @brief 禁用调试接口
|
||
*
|
||
* 禁用设备的调试接口,包括关闭调试停止模式、调试待机模式和调试睡眠模式。
|
||
* 同时将 SWD 和 JTAG 接口的引脚配置为普通 GPIO。
|
||
*
|
||
* @note disable_debug_interface调用后 SWD 接口会被关闭,ST-LINK 等调试工具无法通过 SWD 连接 MCU,也无法使用 STM32 ST-LINK Utility 软件 通过 ST-LINK 连接MCU解除读保护
|
||
* 解除读保护流程:Read Out Protection : 改为 Level 0 ,调整为 Level 0 后 Flash 中的程序会被自动擦除。注意:千万不要改为 Level 2 ,改成Level 2 后 MCU 将会被彻底锁死,相当于熔断保护,无法通过软件再恢复。
|
||
*/
|
||
void disable_debug_interface(void)
|
||
{
|
||
// // 使能 SYSCFG 时钟
|
||
// LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG);
|
||
|
||
// // 关闭调试接口
|
||
// LL_DBGMCU_DisableDBGStopMode();
|
||
// LL_DBGMCU_DisableDBGStandbyMode();
|
||
// LL_DBGMCU_DisableDBGSleepMode();
|
||
|
||
// // 关闭 SWD 和 JTAG 接口
|
||
// LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||
|
||
// // 配置 SWDIO (PA13) 和 SWCLK (PA14) 引脚为普通 GPIO
|
||
// GPIO_InitStruct.Pin = LL_GPIO_PIN_13 | LL_GPIO_PIN_14;
|
||
// GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
|
||
// GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
||
// LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||
|
||
// // 如果使用的是 JTAG 接口,还需要配置 JTDI (PA15), JTDO (PB3), 和 NJTRST (PB4) 引脚
|
||
// GPIO_InitStruct.Pin = LL_GPIO_PIN_15;
|
||
// LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||
|
||
// GPIO_InitStruct.Pin = LL_GPIO_PIN_3 | LL_GPIO_PIN_4;
|
||
// LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||
}
|