芯片是stm32f103C8T6,PVD掉電檢測,中斷服務函式是通過串口發送資料。可是并沒有發送,不知道是沒有進入中斷,還是進入了中斷,但電壓值過低,串口發送資料失敗。求大神看看,寫了好久沒解決問題。代碼如下:
void PVD_Init(void)
{
SystemInit();
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//PWRê1?ü
/* 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)
{
;
}
}
uj5u.com熱心網友回復:
用LED做指示即可uj5u.com熱心網友回復:
沒有用啊。 試過了的uj5u.com熱心網友回復:
對應時鐘開啟了嗎轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/100086.html
標籤:單片機/工控
