找回密码
 立即注册
查看: 192|回复: 2

为什么必须使能比较器中断模块,才能使INT3中断函数的内容起作用。

[复制链接]
  • TA的每日心情
    开心
    2024-4-17 14:45
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    5

    主题

    7

    回帖

    141

    积分

    注册会员

    积分
    141
    发表于 2024-2-21 15:14:39 | 显示全部楼层 |阅读模式
    这个是初始化的内容

    1. void system_init(void)
    2. {
    3.     WTST  = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    4.     EAXFR = 1; //扩展寄存器(XFR)访问使能
    5.     CKCON = 0; //提高访问XRAM速度
    6.        
    7.         P0M0 = 0x00; P0M1 = 0x00;
    8.         P1M0 = 0x00; P1M1 = 0x00;
    9.         P2M0 = 0x03; P2M1 = 0x00; //lcd 2.4567双向口  2.0 2.1推挽输出
    10.         P3M0 = 0x00; P3M1 = 0x00;
    11.         P4M0 = 0x18; P4M1 = 0x00; //p4.3,p4.4推挽输出
    12.         P5M0 = 0x00; P5M1 = 0x00;
    13.         P6M0 = 0xff; P6M1 = 0x00; //pwm p6  
    14.         P7M0 = 0x70; P7M1 = 0x00; //lcd p7.456推挽输出
    15.   
    16.     ADCTIM = 0x3f;                //设置 ADC 内部时序,ADC采样时间建议设最大值
    17.     ADCCFG = 0x2f;                //设置 ADC 时钟为系统时钟/2/16/16
    18.     ADC_CONTR = 0x80;   //使能 ADC 模块
    19.         UART1_config(2);
    20.         CANInit();
    21.         init(128);
    22.     Timer0_init();
    23.         Timer3_init();
    24.         pwm_init();
    25.         CMPEN = 1;                                  //使能比较器模块
    26.         fule_angle_temp=0;
    27.         water_angle_temp=0;
    28.         zs_angle_temp=0;
    29.         EX3 = 1;    //使能 INT3 下降沿中断
    30.     EA = 1;
    31. }
    复制代码
    目的是int3引脚,有下降沿触发中断函数里面的内容
    1. /********************* INT3中断函数 *************************/
    2. void INT3_int (void) interrupt 11     //进中断时已经清除标志
    3. {
    4.         EA=0;
    5.         HC595DATA &=0x0000;
    6.         HC595_DATAOUT(HC595DATA);
    7.        
    8.         end_stepmotor();
    9.         fule_angle_temp=0;
    10.         water_angle_temp=0;
    11.         zs_angle_temp=0;
    12.         while(low_vol==1)
    13.         {;}
    14.         EA=1;
    15. }
    复制代码
    但是为什么使能了比较器模块(CMPEN = 1; //使能比较器模块),int3中断函数才能正常运行。
    电路里面有3个2200微法电容。
    当int3有下降沿信号,关闭所有灯,三个电机回转
    但是去掉比较器模块使能,外部中断就不能正常运行了
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 101 天

    [LV.6]常住居民II

    41

    主题

    1016

    回帖

    6971

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6971
    QQ
    发表于 2024-2-21 16:48:00 | 显示全部楼层
    没有完整的代码,不排除是不是哪个函数里某个寄存器会相互干扰!建议先用历程里的单独的外部中断3测试一下。然后在一点点的增加自己的代码进去,直到哪一行加进去不行了的话就是那一行的问题。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3044

    回帖

    6863

    积分

    超级版主

    积分
    6863
    发表于 2024-2-23 22:16:18 | 显示全部楼层
    比较器模块 与 外中断INT0~INT4之间,没有任何关联的,各自独立的模块。
    还是仔细检查程序。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 01:05 , Processed in 0.061737 second(s), 38 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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