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

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

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:37
  • 最近打卡:2025-04-27 18:22:16

18

主题

30

回帖

476

积分

中级会员

积分
476
发表于 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有下降沿信号,关闭所有灯,三个电机回转
但是去掉比较器模块使能,外部中断就不能正常运行了
QT上位机小佬,努力学习嵌入式中,感谢各位大佬指导
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

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

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 20:52 , Processed in 0.130151 second(s), 58 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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