初级会员

- 积分
- 124
- 金钱
- 124
- 注册时间
- 2019-10-14
- 在线时间
- 24 小时
|
1金钱
开发板:阿波罗
主控芯片:stm32f429IGT6
实验内容:PVR电源管理实验
实验问题:我发现配置PVR中断的时候,设置其边沿与实际情况相反,比如我设置为上升沿,我的外部供电从高到低时才会触发中断,从低到高没办法触发中断;我设置为下升沿,我的外部供电从低到高时才会触发中断,从高到低没办法触发中断;
以下时pvc.c的主函数
- #include "./PVD/pvd.h"
- void PVD_Config(void)
- {
- PWR_PVDTypeDef PWR_PVDTypeStruct;
-
- __HAL_RCC_PWR_CLK_ENABLE(); //使能PWR时钟
-
- PWR_PVDTypeStruct.PVDLevel=PWR_PVDLEVEL_7; //设置PVD电压等级
- PWR_PVDTypeStruct.Mode=PWR_PVD_MODE_IT_FALLING; //设置触发边沿(此边沿触发是反向的 原因未知)
-
- HAL_PWR_ConfigPVD(&PWR_PVDTypeStruct); //配置PVD
- HAL_PWR_EnablePVD(); //使能PVD
-
- HAL_NVIC_SetPriority(PVD_IRQn,0,0); //设置PVD中断
- HAL_NVIC_EnableIRQ(PVD_IRQn);
- }
- //PVD中断服务函数
- void PVD_IRQHandler(void)
- {
- HAL_PWR_PVD_IRQHandler();
- }
- //PVD中断回调函数
- void HAL_PWR_PVDCallback(void)
- {
- PBout(0)=~PBout(0);
- PBout(1)=~PBout(1);
- }
复制代码
以下时PVC的头文件
- #ifndef _PVD_H_
- #define _PVD_H_
- #include "stm32f4xx.h"
- #include "sys.h"
- void PVD_Config(void);
- #endif /* _PVD_H_ */
复制代码 以下是main.c
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "./KEY_EXTI/key_exti.h"
- #include "./LED/led.h"
- #include "./PVD/pvd.h"
- int main(void)
- {
- HAL_Init(); //初始化HAL库
- Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhz
- delay_init(180);
- //Key_EXTI_Init();
- Led_GPIO_Config();
- PVD_Config();
-
- while(1);
- }
复制代码 完整工程请见附件
|
|