OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4727|回复: 3

外部中断 进不了中断函数。。。可以告诉我是哪里错了吗?调试了一天了。真的不懂

[复制链接]

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2013-10-12
在线时间
9 小时
发表于 2013-11-7 20:18:40 | 显示全部楼层 |阅读模式
NVIC_InitTypeDef NVICINIT;
EXTI_InitTypeDef EXTIINIT;
void my_SYSCLK_init()
{
RCC_HSEConfig(RCC_HSE_ON);
while(RCC_GetFlagStatus(RCC_FLAG_HSERDY)==RESET);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_2); 
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);  //时钟没问题,测试过了,led灯能亮
}


void my_GPIOinit()
{GPIO_InitTypeDef  init;
init.GPIO_Pin  =GPIO_Pin_8;
init.GPIO_Mode =GPIO_Mode_Out_PP;
init.GPIO_Speed=GPIO_Speed_50MHz; //led0灭  A8
GPIO_Init(GPIOA,&init);
GPIO_SetBits(GPIOA,GPIO_Pin_8);

     init.GPIO_Pin=GPIO_Pin_2; //led1灭  D2
init.GPIO_Speed=GPIO_Speed_50MHz;
init.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOD,&init);
GPIO_SetBits(GPIOD,GPIO_Pin_2);

init.GPIO_Pin=GPIO_Pin_15; //pa15   pa13  上拉输入  A13   PA15
init.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOA,&init);
 
init.GPIO_Pin=GPIO_Pin_13;
init.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOA,&init);  
}

void my_exti_init()
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);     //设置组1

NVICINIT.NVIC_IRQChannel=EXTI15_10_IRQn;
NVICINIT.NVIC_IRQChannelPreemptionPriority=0;    //配置外部中断优先级,并使能中断
NVICINIT.NVIC_IRQChannelSubPriority=2;
NVICINIT.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVICINIT);

EXTIINIT.EXTI_Line=EXTI_Line13 ;
EXTIINIT.EXTI_Mode=EXTI_Mode_Interrupt;
EXTIINIT.EXTI_Trigger=EXTI_Trigger_Falling;    //初始化外部中断13为下降沿触发
EXTI_Init(&EXTIINIT);
  EXTIINIT.EXTI_Line=EXTI_Line15 ;
EXTIINIT.EXTI_Mode=EXTI_Mode_Interrupt;
EXTIINIT.EXTI_Trigger=EXTI_Trigger_Falling;    //初始化外部中断15为下降沿触发
EXTI_Init(&EXTIINIT);
 
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource13);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource15);    //初始化外部中断15为PA15口

EXTI_GenerateSWInterrupt(EXTI_Line13);
EXTI_GenerateSWInterrupt(EXTI_Line15);    //软件中断

}


main()
{my_SYSCLK_init();
 my_GPIOinit();
 my_exti_init();
 while(1);
}



it.c的函数

void EXTI15_10_IRQHandler()
{   GPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_RESET);      //让 led0亮  A8   用于测试中断是否进入
if(EXTI_GetITStatus(EXTI_Line15))
{
EXTI_ClearITPendingBit(EXTI_Line15);
}
 
 if(EXTI_GetITStatus(EXTI_Line13))
{
EXTI_ClearITPendingBit(EXTI_Line13);
}
}






正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2013-11-7 22:55:16 | 显示全部楼层
聪明的人回去参考别人的代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2013-10-12
在线时间
9 小时
 楼主| 发表于 2013-11-8 00:33:38 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢 。已经解决了。
回复 支持 反对

使用道具 举报

14

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2014-3-5
在线时间
0 小时
发表于 2014-3-7 08:54:15 | 显示全部楼层
回复【3楼】slzfqzh:
---------------------------------
请问楼主怎么解决的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 03:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表