接触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);
-
- }
- }
复制代码
|
什么是内核中断,怎么开启
不好意思,看错了.
SystemInit(); //初始化系统时钟
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
。。。。。。
时钟没设置是因为有默认的,内部时钟,
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 优先级也设置了
我看你比我这个新手还新手啊,这些高级点的芯片都有内部默认的时钟的
将流程比对下。