px825182307 2016-01-28 07:38 采纳率: 0%
浏览 3788

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 2016-01-28 22:58
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件