作者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/cn.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