OpenEdv-开源电子网

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

为什么中断不响应,有的能响应?我把不响应的中断函数发出来,大神帮我查查,谢谢!

[复制链接]

4

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2019-7-26
在线时间
13 小时
发表于 2020-8-9 13:35:10 | 显示全部楼层 |阅读模式
1金钱
#include "rxc6.h"
#include "delay.h"
#include "key.h"
void RXC6_Init(void)
{
         GPIO_InitTypeDef GPIO_InitStructure;
         
         EXTI_InitTypeDef EXTI_InitStructure;
         NVIC_InitTypeDef NVIC_InitStructure;
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);//使能GPIO A B端口时钟。
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  //使能复合时钟。
         //D1_RXC6、PA8设置上拉输入方式
         GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_8;//PA8:rxc6 D1.B键 减量
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //设置成下拉输入
         GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA,PA8.
       
         GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1|GPIO_Pin_3;//PB1,PB3:rxc6 D2.D3
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //设置成下拉输入
         GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB,PB1.PB12
       
       
       
       
         //GPIOA.8          中断线以及中断初始化配置 上升沿触发 //D1 B键遥控减量按钮
          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_Rising;
          EXTI_Init(&EXTI_InitStructure);                  //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
    //GPIOB.1          中断线以及中断初始化配置 上升沿触发 // D键 遥控复位 按钮
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource1);
          EXTI_InitStructure.EXTI_Line=EXTI_Line1;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
          EXTI_Init(&EXTI_InitStructure);                  //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
    //GPIOB.3          中断线以及中断初始化配置 上升沿触发 //A键 遥控增量 按钮
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource3);
          EXTI_InitStructure.EXTI_Line=EXTI_Line3;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
          EXTI_Init(&EXTI_InitStructure);                  //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
                //    //GPIOF.15          中断线以及中断初始化配置 上升沿触发 //遥控置位 按钮
                //          GPIO_EXTILineConfig(GPIO_PortSourceGPIOF,GPIO_PinSource15);
                //          EXTI_InitStructure.EXTI_Line=EXTI_Line15;
                //          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
                //          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
                //          EXTI_Init(&EXTI_InitStructure);                  //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
                //     
                NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn ;                        //B键减量D1_RXC6 PA8所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;        //抢占优先级3,
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x2 ;                                        //子优先级0
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);
               
                NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn ;                        //D键复位D2_RXC6  PB1所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;        //抢占优先级3,
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x1  ;                                        //子优先级2
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);

    NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn ;                        //A键增量D3_RXC6  PB3所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;        //抢占优先级3,
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x3 ;                                        //子优先级1
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);

                //     NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn ;                        //使能按键D4_RXC6所在的外部中断通道
                //          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;        //抢占优先级3,
                //          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0  ;                                        //子优先级0
                //          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
                //          NVIC_Init(&NVIC_InitStructure);
               
        }
  extern  u8 Vol_Reset_Flag;//B键 减量 RXC6,PA8
        extern  u8 V_Adjust;
        void EXTI9_5_IRQHandler(void)
        {
                if(EXTI_GetITStatus(EXTI_Line8) != RESET)
          {
                        delay_ms(5 );
                        if(B_D1_RXC6==1)
                          {
                    V_Adjust--;//逆时针电压减小
                                    CS=0;
                                                UD=0;
                                                INC = 0;
                                                 delay_us(500);
                                                INC = 1;
                                                 delay_us(500);       
        if(V_Adjust<= 1)V_Adjust=1;//数字电位器0-100台阶
                                        CS=1;
                    }
                  EXTI_ClearITPendingBit(EXTI_Line8);
          }
        }       
                void EXTI1_IRQHandler(void )  //遥控器 D键
   {
            delay_ms(5 );
                        if(D_D2_RXC6==1)
                         Vol_Reset_Flag=1;//主程序处理。
                  
                 EXTI_ClearITPendingBit(EXTI_Line1); //清除LINE0上的中断标志位
                                          
           }       
        //extern  u8 Vol_Set_Flag;//RXC6 减量按钮
        void EXTI3_IRQHandler(void)  //遥控器 A键。
        {
           delay_ms(5 );
                if(A_D3_RXC6==1)
                  V_Adjust++;//顺时针电压增加
                    CS=0;
                    UD=1;
                    INC = 0;
                     delay_us(500);
                           INC = 1;
                     delay_us(500);
                    if(V_Adjust>=100)V_Adjust=100;//数字电位器0-100台阶
                    CS=1;
                        EXTI_ClearITPendingBit(EXTI_Line3);
                }
       
        i

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 11:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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