2 px825182307 px825182307 于 2016.01.28 15:38 提问

stm32 PVD掉电检测,进不了中断

芯片是stm32f103C8T6,PVD掉电检测,中断服务函数是通过串口发送数据。可是并没有发送,不知道是没有进入中断,还是进入了中断,但电压值过低,串口发送数据失败。求大神看看,写了好久没解决问题。代码如下:

void PVD_Init(void)
{
SystemInit();

EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//PWRʹÄÜ

/* Configure EXTI Line16(PVD Output) to generate an interrupt on rising and
 falling edges */

EXTI_ClearITPendingBit(EXTI_Line16);
EXTI_InitStructure.EXTI_Line = EXTI_Line16;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}

void PVD_NVIC(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

/* Configure one bit for preemption priority */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

/* Enable the PVD Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

void PVD_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line16) != RESET)
{
GPIO_SetBits(GPIOA,GPIO_Pin_1);
start();//串口发送数据
EXTI_ClearITPendingBit(EXTI_Line16);
}
}

int main()
{
.....

PWR_PVDLevelConfig(PWR_PVDLevel_2V9);
PWR_PVDCmd(ENABLE);

PVD_Init();
PVD_NVIC();

....
while(1)
{
;
}

}

1个回答

devmiao
devmiao   Ds   Rxr 2016.01.29 06:58
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
stm32F4电源管理PVD掉电数据存储
很多时候,我们希望我们的单片机在掉电后,可以对一些数据进行保存,下次上电可以读取这些数据,继续工作。现在我项目用到的是STM32F4单片机,利用STM32F4自带的PVD电源管理配置如下:初始化PVD:void PWR_PVD_Init(void) { NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_Ini
STM32关于PVD低电压能检测的知识
下面对上面2张图和表格中的数据做一个简要的解释: 1)PVD = Programmable Votage Detector 可编程电压监测器 它的作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。在给出表格的上半部分就是可编程的监视阀值数据。当供电电压又恢复到给定的阀值以上时,也会产生一个中断,通知软件供电恢复。供电下降的阀值与供电上升的PVD阀值有一个固
STM32学习笔记4(失败的尝试)-掉电检测+Flash存取
看到STM32有PVD的掉电检测功能,flash也可以直接存取;就动了用flash掉电保存参数的念头。 1、搞定Flash擦、写函数。 void  F_ErasePage(u32 Page_Address) {  U32 tmp;  while((FLASH->SR&FLASH_FLAG_BSY)==FLASH_FLAG_BSY)  {  //PutCnstStr2Usart1
stm32 HAL PVD 电源监测
pvd.c void PVD_Init(void) {     __HAL_RCC_PWR_CLK_ENABLE();     PWR_PVDTypeDef PWR_PVDStruct;          PWR_PVDStruct.PVDLevel = PWR_PVDLEVEL_6;             // 2.8V     PWR_PVDStruct.Mode = PWR_
STM32 可编程电压监测器(PVD)
1)PVD = Programmable Votage Detector 可编程电压监测器   它的作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。在给出表格的上半部分就是可编程的监视阀值数据。当供电电压又恢复到给定的阀值以上时,也会产生一个中断,通知软件供电恢复。供电下降的阀值与供电上升的PVD阀值有一个固定的差值,这就是表中的VPVDhyst(PVD迟滞
STM32 flash epprom 将数据保存在STM32中,掉电也保存
STM32 flash epprom 将数据保存在STM32中,掉电也保存 例程
stm32 PVD 可编程电压监测器
stm32 PVD 可编程电压监测器 作者:Changing发表时间:11-16 20:30分类:电子相关1 Comment 前一篇:单片机4*4矩阵键盘 当前是最后一篇     PVD (Programmable Votage Detector) ,即可编程电压监测器 。stm32库函数手册中没有细讲这个模块,只是在 PWM一章中列出了两个相关函数。但是这个功
stm32 通过stm32 cubemx配置中断函数(io中断)
①  将io口选择为GPIO_EXIT ②  在配置中修改一些参数  ③ GPIO:配置为上升沿触发,下拉电阻。 ④  NVIC: 以上为中断函数的io口的配置过程。       void EXTIx_IRQHandler() {     HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);//中
stm32掉电前的数据存储到flash
********************************************************************************************* 对FLASH 的操作 *********************************************************************************************
stm32的可编程电压检测PVD
PVD检测一般用于stm32在电源降到临界值时,