打印

悬赏,帮我解决stm32F030 io口外部中断的问题

[复制链接]
3894|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 taijing33 于 2018-7-17 10:50 编辑

void nvic_init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  EXTI_InitTypeDef EXTI_InitStructure;
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
        
          //3.??EXTI?

//        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
        
        //GPIO_PinAFConfig(GPIOF,GPIO_PinSource1,GPIO_AF_1);
        
        
        //GPIO_PinAFConfig(GPIOB,GPIO_PinSource8|GPIO_PinSource9,GPIO_AF_6);
        
        
   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF,EXTI_PinSource1);
         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF,EXTI_PinSource0);
//        EXTI_ClearITPendingBit(EXTI_Line0);
//        EXTI_ClearITPendingBit(EXTI_Line1);
         EXTI_InitStructure.EXTI_Line = EXTI_PinSource0|EXTI_PinSource1;
         EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  //EXTI_Trigger_Rising_Falling
   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
   EXTI_Init(&EXTI_InitStructure);
        
        
         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB,EXTI_PinSource8);
         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB,EXTI_PinSource9);
         EXTI_ClearITPendingBit(EXTI_Line8);
        EXTI_ClearITPendingBit(EXTI_Line9);
         EXTI_InitStructure.EXTI_Line = EXTI_PinSource8|EXTI_PinSource9;
         EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;  //EXTI_Trigger_Rising_Falling
   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
   EXTI_Init(&EXTI_InitStructure);
        
        
        //EXTI_GenerateSWInterrupt(EXTI_Line1);
        
        
  /* ----------------USART1 IRQ Channel configuration----------------- */
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 2;//0-3£ºÖ»ÓÐ4¸öÓÅÏȼ¶  4¸ö¿É±à³ÌµÄÓÅÏȼ¶( ʹÓÃÁË2 λµÄÖжÏÓÅÏȼ¶)
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
        /* ----------------TIM3_IRQn  Channel configuration----------------- */
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 1;//0-3£ºÖ»ÓÐ4¸öÓÅÏȼ¶  4¸ö¿É±à³ÌµÄÓÅÏȼ¶( ʹÓÃÁË2 λµÄÖжÏÓÅÏȼ¶)
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
/* ----------------TIM6_IRQn  Channel configuration----------------- */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 0;//0-3£ºÖ»ÓÐ4¸öÓÅÏȼ¶  4¸ö¿É±à³ÌµÄÓÅÏȼ¶( ʹÓÃÁË2 λµÄÖжÏÓÅÏȼ¶)
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
          NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 3;//0-3£ºÖ»ÓÐ4¸öÓÅÏȼ¶  4¸ö¿É±à³ÌµÄÓÅÏȼ¶( ʹÓÃÁË2 λµÄÖжÏÓÅÏȼ¶)
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  


}

void EXTI0_1_IRQHandler(void)
{
        u8 a=1;
        if((EXTI->PR & EXTI_Line1) != RESET)  //EXTI9?????
    {
  a=1;EXTI_ClearITPendingBit(EXTI_Line1);//????
   }
        if((EXTI->PR & EXTI_Line0) != RESET)  //EXTI9?????
    {
a=1;EXTI_ClearITPendingBit(EXTI_Line0);//????
   }

   
        

   

}

void EXTI4_15_IRQHandler(void)
{
        if((EXTI->PR & EXTI_Line8) != RESET)  //EXTI9?????
    {
;
   }

   EXTI_ClearITPendingBit(EXTI_Line8);//????
         if((EXTI->PR & EXTI_Line9) != RESET)  //EXTI9?????
    {
;
   }

   EXTI_ClearITPendingBit(EXTI_Line9);//????
         
        
}


        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 |GPIO_Pin_9; //¹Ü½ÅºÅ
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //ËÙ¶È
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF; //ÊäÈë Êä³ö ¸´Óà ģÄâ
//        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;//ÍÆÍìÊä³ö  ¿ªÂ©Êä³ö
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//ÉÏÀ­  ÏÂÀ­
        GPIO_Init(GPIOB, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1; //¹Ü½ÅºÅ
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //ËÙ¶È
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF; //ÊäÈë Êä³ö ¸´Óà ģÄâ
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//ÍÆÍìÊä³ö  ¿ªÂ©Êä³ö
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//ÉÏÀ­  ÏÂÀ­
        GPIO_Init(GPIOF, &GPIO_InitStructure);

上面是我单买,我需要PF0.PF1.Pb8.Pb9.能外部进入中断,但是现在只有pf0能进入中断,

另外程序能识别PF1.Pb8.Pb9.的电平变化,就是进步了PF1.Pb8.Pb9.的中断,。
谁能帮我解决,一下,红包200元吧,我也不知道给多少,整个程序在附件里。。。
另外:单片机使用的内部晶振,PF0和1是晶振接口,我也注意到了,

STM32F030F4P6_PB1_LED_PA14_DS18B20.rar

3.05 MB

相关帖子

沙发
taijing33|  楼主 | 2018-7-17 12:20 | 只看该作者
我顶

使用特权

评论回复
板凳
ayb_ice| | 2018-7-17 13:03 | 只看该作者
现在都是HAL库了,这个过时了

使用特权

评论回复
地板
taijing33|  楼主 | 2018-7-17 14:17 | 只看该作者
ayb_ice 发表于 2018-7-17 13:03
现在都是HAL库了,这个过时了

不大用stm32。偶尔用一次。

使用特权

评论回复
5
rand2015| | 2018-7-17 16:58 | 只看该作者
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF; //ÊäÈë Êä³ö ¸´Óà ģÄâ////// GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF; //ÊäÈë Êä³ö ¸´Óà ģÄâ

不能设置为GPIO_Mode_AF,  

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN或 GPIO_PuPd_UP;

使用特权

评论回复
6
taijing33|  楼主 | 2018-7-17 17:41 | 只看该作者
rand2015 发表于 2018-7-17 16:58
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF; //ÊäÈë Êä³ö ¸´Óà ģÄâ////// GPIO_InitS ...

不行呢。郁闷

使用特权

评论回复
7
jcdzxh| | 2018-7-17 22:26 | 只看该作者
我接招,明天弄

使用特权

评论回复
8
jcdzxh| | 2018-7-17 22:32 | 只看该作者
昨天专门测试过,af也能触发外中断,方法是定时器驱动pwm,pwm脚配置外中断,完全没问题

使用特权

评论回复
9
taijing33|  楼主 | 2018-7-18 07:37 | 只看该作者
jcdzxh 发表于 2018-7-17 22:26
我接招,明天弄

谢谢,

使用特权

评论回复
10
jcdzxh| | 2018-7-18 07:47 | 只看该作者
030f4没有b8,b9哦

使用特权

评论回复
11
eydj2008| | 2018-7-18 07:55 | 只看该作者
这是传说中的 大花?  200红包  发群里来

使用特权

评论回复
12
小白123456| | 2018-7-18 09:10 | 只看该作者
这个楼主找个例程看看就好了。自己解决了才是最好的。

使用特权

评论回复
13
jcdzxh| | 2018-7-18 09:22 | 只看该作者
本帖最后由 jcdzxh 于 2018-7-18 09:29 编辑

用070C8试过了没有问题,
我这个板PB8点灯了,就没有用P8测试触发简单测试触发、清中断,没有去抖处理,加上GPIO是悬空,上升沿触发,
用表笔碰触发,所以碰一次会触发多次,正常现象,懂的自然懂。需要帮助加Q:1720-33333


使用特权

评论回复
14
henangongda123| | 2018-7-18 16:29 | 只看该作者
可惜不会STM32

使用特权

评论回复
15
icecut| | 2018-7-18 18:24 | 只看该作者
看样这200块钱还不好转...博弈开始了...先付钱还是先交货????
是不是骗纸????
围观

使用特权

评论回复
评论
icecut 2018-7-19 16:07 回复TA
@taijing33 :你能发出去么....哈哈哈 
taijing33 2018-7-19 08:23 回复TA
这个问题对用过得人来说,应该是举手之劳。悬赏是为了为了增加大家的积极性,当然200块不多。 但是谁解决了 肯定给钱。都是同行做技术的,这点信用肯定有 
16
caijie001| | 2018-7-18 19:10 | 只看该作者
一言不合就放码过来

使用特权

评论回复
17
GEA| | 2018-7-19 16:02 | 只看该作者
打不开程序 尴尬

使用特权

评论回复
18
taijing33|  楼主 | 2018-8-28 07:27 | 只看该作者
EXTI_InitStructure.EXTI_Line = EXTI_PinSource8|EXTI_PinSource9;应该换成 EXTI_InitStructure.EXTI_Line = EXTI_Line 8|EXTI_Line 9;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

162

主题

364

帖子

3

粉丝