F103外部中断不能执行
接触32没多久,昨天写了一个外部中断的实验,怎么调试都不能执行中断,看了书上的例程,是一样的。不知道问题在哪,求助void GPIO_EXIT_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);//PA8-KEY
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource8);
EXTI_InitStructure.EXTI_Line = EXTI_Line8;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9 | GPIO_Pin_8; //PD8、9--LED
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
int main(void)
{
GPIO_EXIT_Init();
GPIO_SetBits(GPIOD, GPIO_Pin_8);
while(1)
{
GPIO_SetBits(GPIOD, GPIO_Pin_8);
}
}
void EXIT9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line8)!=RESET)
{
// GPIO_WriteBit(GPIOD,GPIO_Pin_8,
// (BitAction)(1-GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_8)));
GPIO_WriteBit(GPIOD, GPIO_Pin_9, (BitAction)((1-GPIO_ReadOutputDataBit(GPIOD, GPIO_Pin_9))));
EXTI_ClearITPendingBit(EXTI_Line8);
}
}
没开内核中断. mark0668 发表于 2016-5-4 12:48
没开内核中断.
什么是内核中断,怎么开启 wanyisq 发表于 2016-5-4 12:54
什么是内核中断,怎么开启
不好意思,看错了. 怎么看的main函数中没有系统初始化?中断向量也没有设置?main函数一开始加上这两句试试
SystemInit(); //初始化系统时钟
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 系统时钟,都没有写:lol wozaihuayu 发表于 2016-5-4 15:51
怎么看的main函数中没有系统初始化?中断向量也没有设置?main函数一开始加上这两句试试
SystemInit(); ...
。。。。。。
时钟没设置是因为有默认的,内部时钟,
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);优先级也设置了 riansum 发表于 2016-5-4 20:04
系统时钟,都没有写
我看你比我这个新手还新手啊,这些高级点的芯片都有内部默认的时钟的 STM32固件库里有现存的EXTI中断工程,看看人家怎么写的。
将流程比对下。
问题解决了BitAction去掉就好了:L。。。。。
页:
[1]