作者j19920816 (Kaung)
看板ASM
標題[問題] STM32F103ZE的中斷
時間Thu Jan 25 16:07:16 2018
小弟最近在學STM32還是個初學者,用的是open103z板子,
然後遇到中斷的問題,一直都無法正確動作,想說是不是腳未配置的時候出問題,
但是LED是可以亮的,只是按下按鍵無法進中斷函式,
Google很多資料改了很多次也不行,所以想問看看哪邊出了問題,
先附上電路圖
https://imgur.com/qdsI2hN
用到PF6和PF7連接的LED還有PG6的按鍵,
再來是我腳位配置
void gpio_Init()
{
GPIO_InitTypeDef GPIO_InitStruc;
EXTI_InitTypeDef EXTI_InitStruc;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF |
RCC_APB2Periph_GPIOG,ENABLE);
//LED Configuration
GPIO_InitStruc.GPIO_Pin=GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStruc.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruc.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOF,&GPIO_InitStruc);
GPIO_SetBits(GPIOF,GPIO_Pin_6 | GPIO_Pin_7);
//Button Configuration
GPIO_InitStruc.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStruc.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOG,&GPIO_InitStruc);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource6);
EXTI_InitStruc.EXTI_Line=EXTI_Line6;
EXTI_InitStruc.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStruc.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStruc.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStruc);
}
void NVIC_config()
{
NVIC_InitTypeDef NVIC_InitStruc;
NVIC_InitStruc.NVIC_IRQChannel=EXTI9_5_IRQn;
NVIC_InitStruc.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStruc.NVIC_IRQChannelSubPriority=0;
NVIC_InitStruc.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStruc);
}
再來是在stm32f10x_it.c的中斷函式
extern int switchFlag; //switchFlag=0
void EXTI9_5_IRQHandler()
{
if(EXTI_GetITStatus(EXTI_Line6))
switchFlag=~switchFlag;
EXTI_ClearITPendingBit(EXTI_Line6);
}
希望大家可以指出我的問題0.0
感謝大家
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.82.176.164
※ 文章網址: https://webptt.com/m.aspx?n=bbs/ASM/M.1516867647.A.112.html
※ 編輯: j19920816 (115.82.176.164), 01/25/2018 16:15:38
1F:→ MasterChang: 建議用CubeMX直接生成代碼框架01/25 16:55
問題解決了,問題是出在switchFlag這個變數,~switchFlag會變-1,但是主程式我判斷
1
※ 編輯: j19920816 (115.82.176.164), 01/25/2018 18:01:27
2F:推 chuegou: 你應該用!而不是~ 01/25 19:20
3F:→ chuegou: 然後 pg6雖然內部可以設定上拉 但是我在外部還是會給 01/25 19:21
4F:→ wang3166: + "NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);" 02/21 16:48