你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2883|回复: 3

STM32 EXTI外部中断进不了中断程序,指高手指点

[复制链接]

1

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-3-15 16:03:04 | 显示全部楼层 |阅读模式
#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
 
void LED_Init(void)
{
 /* GPIOD Periph clock enable */
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
 /* Configure PD6 and PD13 in output pushpull mode */
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_13;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_Init(GPIOD, &GPIO_InitStructure);
 /*GPIOC Periph clock enable*/
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;  //choose gpio pin
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;   //set gpio speed
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //set gpio mode
 GPIO_Init(GPIOC, &GPIO_InitStructure);      //initial gpio port
}
 
void GPIO_EXTIConfigration(void)
{
 //GPIOE Periph clock enable
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
 //set pe2 pe3 pe4 pe5 input mode
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOE, &GPIO_InitStructure);      //initial gpio port
/*       ENABLE AFIO CLOCK    */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
/*   connect gpio to exti   */   
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource3);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource4);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5);
//   config EXTI initial
    EXTI_InitStructure.EXTI_Line = EXTI_Line2|EXTI_Line3|EXTI_Line4|EXTI_Line5;
 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
 EXTI_Init(&EXTI_InitStructure);
   
}
 
void NVIC_Configration(void)
{
    NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);    //system default NVIC VECTTAB TO FLASH, so needn't
 NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn|EXTI3_IRQn|EXTI4_IRQn|EXTI9_5_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0f ;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0f;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
 NVIC_Init(&NVIC_InitStructure);
}
void main()
{
LED_Init(); 
GPIO_EXTIConfigration();
  NVIC_Configration();
while(1)
{
;
}
}
中断子程序:
/*
 *
 *
 *
 *
 */
 void EXTI2_IRQHandler(void)
   {
    if( (EXTI_GetITStatus(EXTI_Line2))!=0 )
     {
        GPIOD->BSRR = 0x00000040;
  EXTI_ClearITPendingBit(EXTI_Line2);
  
     }
 }
/*
 *
 *
 *
 *
 */
 void EXTI3_IRQHandler(void)
 {
    if( (EXTI_GetITStatus(EXTI_Line3))!=0 )
     {
     GPIOD->BSRR = 0x00002000;
  EXTI_ClearITPendingBit(EXTI_Line3);
  
     }
 }
/*
 *
 *
 *
 *
 */
 void EXTI4_IRQHandler(void)
 {
    if( (EXTI_GetITStatus(EXTI_Line4))!=0 )
     {
     GPIOC->BSRR = 0x00000080;
  EXTI_ClearITPendingBit(EXTI_Line4);
     }
 
 }
/*
 *
 *
 *
 *
 */
 void EXTI9_5_IRQHandler(void)
 {
    if( (EXTI_GetITStatus(EXTI_Line5))!=0 )
     {
     GPIOC->BSRR = 0x00000040;
  EXTI_ClearITPendingBit(EXTI_Line5);
     }
 
 }
 
 利用开发板仿真的时候可以看到对应的peng = 1,却进不了中断程序,请前辈帮忙指点     
 
回复

使用道具 举报

1

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2013-3-17 11:26:37 | 显示全部楼层

RE:STM32 EXTI外部中断进不了中断程序,指高手指点

怎么没有朋友帮忙看下啊  自己顶起吧
还是先看看STM32权威指南
回复 支持 反对

使用道具 举报

1

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2013-3-17 11:29:26 | 显示全部楼层

RE:STM32 EXTI外部中断进不了中断程序,指高手指点

好像没什么人气  看大部分求助的贴子都没有人回复啊!
回复 支持 反对

使用道具 举报

1

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2013-3-25 17:35:59 | 显示全部楼层

RE:STM32 EXTI外部中断进不了中断程序,指高手指点

问题已经解决,给新手门分享一下:
几个EXTI中断同时初始化的时候出错,
只要分开初始化就可以啦!
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版