aoteman
发表于 2025-4-27 11:01:30
DebugLab 发表于 2025-4-27 10:57
打开EAXFR呢,没看到,检查错误上来就先看EAXFR和PxMx
https://www.stcaimcu.com/forum.php?mod=viewthread ...
好的,我来加上
DebugLab
发表于 2025-4-27 11:24:13
aoteman 发表于 2025-4-27 11:01
好的,我来加上
需要设置的寄存器如下,按需要设置
初始化:
//PxINT
// P0INTE=0x00;
// P1INTE=0x00;
// P2INTE=0x00;
// P3INTE=0x00;
// P4INTE=0x00;
// P5INTE=0x00;
// P6INTE=0x00;
// P7INTE=0x00;
// P0IM0=0x00;
// P0IM1=0x00;
// P1IM0=0x00;
// P1IM1=0x00;
// P2IM0=0x00;
// P2IM1=0x00;
// P3IM0=0x00;
// P3IM1=0x00;
// P4IM0=0x00;
// P4IM1=0x00;
// P5IM0=0x00;
// P5IM1=0x00;
// P6IM0=0x00;
// P6IM1=0x00;
// P7IM0=0x00;
// P7IM1=0x00;
// P0WKUE=0x00;
// P1WKUE=0x00;
// P2WKUE=0x00;
// P3WKUE=0x00;
// P4WKUE=0x00;
// P5WKUE=0x00;
// P6WKUE=0x00;
// P7WKUE=0x00;EA=1;中断:
//void P0INT_ISR(void) interrupt P0INT_VECTOR
//{
// if(P0INTF&0x01)
// {
// P0INTF&=~0x01;
// }
// if(P0INTF&0x02)
// {
// P0INTF&=~0x02;
// }
// if(P0INTF&0x04)
// {
// P0INTF&=~0x04;
// }
// if(P0INTF&0x08)
// {
// P0INTF&=~0x08;
// }
// if(P0INTF&0x10)
// {
// P0INTF&=~0x10;
// }
// if(P0INTF&0x20)
// {
// P0INTF&=~0x20;
// }
// if(P0INTF&0x40)
// {
// P0INTF&=~0x40;
// }
// if(P0INTF&0x80)
// {
// P0INTF&=~0x80;
// }
//}
//void P1INT_ISR(void) interrupt P1INT_VECTOR
//{
// if(P1INTF&0x01)
// {
// P1INTF&=~0x01;
// }
// if(P1INTF&0x02)
// {
// P1INTF&=~0x02;
// }
// if(P1INTF&0x04)
// {
// P1INTF&=~0x04;
// }
// if(P1INTF&0x08)
// {
// P1INTF&=~0x08;
// }
// if(P1INTF&0x10)
// {
// P1INTF&=~0x10;
// }
// if(P1INTF&0x20)
// {
// P1INTF&=~0x20;
// }
// if(P1INTF&0x40)
// {
// P1INTF&=~0x40;
// }
// if(P1INTF&0x80)
// {
// P1INTF&=~0x80;
// }
//}
//void P2INT_ISR(void) interrupt P2INT_VECTOR
//{
// if(P2INTF&0x01)
// {
// P2INTF&=~0x01;
// }
// if(P2INTF&0x02)
// {
// P2INTF&=~0x02;
// }
// if(P2INTF&0x04)
// {
// P2INTF&=~0x04;
// }
// if(P2INTF&0x08)
// {
// P2INTF&=~0x08;
// }
// if(P2INTF&0x10)
// {
// P2INTF&=~0x10;
// }
// if(P2INTF&0x20)
// {
// P2INTF&=~0x20;
// }
// if(P2INTF&0x40)
// {
// P2INTF&=~0x40;
// }
// if(P2INTF&0x80)
// {
// P2INTF&=~0x80;
// }
//}
//void P3INT_ISR(void) interrupt P3INT_VECTOR
//{
// if(P3INTF&0x01)
// {
// P3INTF&=~0x01;
// }
// if(P3INTF&0x02)
// {
// P3INTF&=~0x02;
// }
// if(P3INTF&0x04)
// {
// P3INTF&=~0x04;
// }
// if(P3INTF&0x08)
// {
// P3INTF&=~0x08;
// }
// if(P3INTF&0x10)
// {
// P3INTF&=~0x10;
// }
// if(P3INTF&0x20)
// {
// P3INTF&=~0x20;
// }
// if(P3INTF&0x40)
// {
// P3INTF&=~0x40;
// }
// if(P3INTF&0x80)
// {
// P3INTF&=~0x80;
// }
//}
//void P4INT_ISR(void) interrupt P4INT_VECTOR
//{
// if(P4INTF&0x01)
// {
// P4INTF&=~0x01;
// }
// if(P4INTF&0x02)
// {
// P4INTF&=~0x02;
// }
// if(P4INTF&0x04)
// {
// P4INTF&=~0x04;
// }
// if(P4INTF&0x08)
// {
// P4INTF&=~0x08;
// }
// if(P4INTF&0x10)
// {
// P4INTF&=~0x10;
// }
// if(P4INTF&0x20)
// {
// P4INTF&=~0x20;
// }
// if(P4INTF&0x40)
// {
// P4INTF&=~0x40;
// }
// if(P4INTF&0x80)
// {
// P4INTF&=~0x80;
// }
//}
//void P5INT_ISR(void) interrupt P5INT_VECTOR
//{
// if(P5INTF&0x01)
// {
// P5INTF&=~0x01;
// }
// if(P5INTF&0x02)
// {
// P5INTF&=~0x02;
// }
// if(P5INTF&0x04)
// {
// P5INTF&=~0x04;
// }
// if(P5INTF&0x08)
// {
// P5INTF&=~0x08;
// }
// if(P5INTF&0x10)
// {
// P5INTF&=~0x10;
// }
// if(P5INTF&0x20)
// {
// P5INTF&=~0x20;
// }
// if(P5INTF&0x40)
// {
// P5INTF&=~0x40;
// }
// if(P5INTF&0x80)
// {
// P5INTF&=~0x80;
// }
//}
//void P6INT_ISR(void) interrupt P6INT_VECTOR
//{
// if(P6INTF&0x01)
// {
// P6INTF&=~0x01;
// }
// if(P6INTF&0x02)
// {
// P6INTF&=~0x02;
// }
// if(P6INTF&0x04)
// {
// P6INTF&=~0x04;
// }
// if(P6INTF&0x08)
// {
// P6INTF&=~0x08;
// }
// if(P6INTF&0x10)
// {
// P6INTF&=~0x10;
// }
// if(P6INTF&0x20)
// {
// P6INTF&=~0x20;
// }
// if(P6INTF&0x40)
// {
// P6INTF&=~0x40;
// }
// if(P6INTF&0x80)
// {
// P6INTF&=~0x80;
// }
//}
//void P7INT_ISR(void) interrupt P7INT_VECTOR
//{
// if(P7INTF&0x01)
// {
// P7INTF&=~0x01;
// }
// if(P7INTF&0x02)
// {
// P7INTF&=~0x02;
// }
// if(P7INTF&0x04)
// {
// P7INTF&=~0x04;
// }
// if(P7INTF&0x08)
// {
// P7INTF&=~0x08;
// }
// if(P7INTF&0x10)
// {
// P7INTF&=~0x10;
// }
// if(P7INTF&0x20)
// {
// P7INTF&=~0x20;
// }
// if(P7INTF&0x40)
// {
// P7INTF&=~0x40;
// }
// if(P7INTF&0x80)
// {
// P7INTF&=~0x80;
// }
//}
xiaocake
发表于 2025-4-27 14:00:26
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。
换用INT0和INT1(对应引脚是P3.2和P3.3),同时支持上升沿和下降沿中断。
ercircle
发表于 2025-4-27 14:48:17
xiaocake 发表于 2025-4-27 14:00
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。
换用INT0和INT1(对应引脚是P3.2和P3.3) ...
这个是IO中断,和外部中断不一样的
aoteman
发表于 2025-4-27 15:10:48
xiaocake 发表于 2025-4-27 14:00
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。
换用INT0和INT1(对应引脚是P3.2和P3.3) ...
不行啊,外部中断不支持上升沿触发,我要Pwm的占空比,需要读下降沿和上升沿之间的间隔时间
aoteman
发表于 2025-4-27 15:11:39
xiaocake 发表于 2025-4-27 14:00
P3.6和P3.7对应的外部中断 INT2和INT3 都只支持下降沿中断。。。
换用INT0和INT1(对应引脚是P3.2和P3.3) ...
而且在打板子项目交付来不及
aoteman
发表于 2025-4-27 15:47:55
ercircle 发表于 2025-4-27 14:48
这个是IO中断,和外部中断不一样的
只说了不一样区别在什么地方,硬件原理吗,对于应用层,貌似都是边沿出发为主
ercircle
发表于 2025-4-27 15:52:40
aoteman 发表于 2025-4-27 15:47
只说了不一样区别在什么地方,硬件原理吗,对于应用层,貌似都是边沿出发为主 ...
对于开发者,区别就是寄存器配置差异,和中断差异。
aoteman
发表于 2025-4-28 07:50:06
ercircle 发表于 2025-4-27 15:52
对于开发者,区别就是寄存器配置差异,和中断差异。
多谢大神,加上汇编可以触发边沿中断了,谢了,我也是第一次用Stc的IO中断,以往也都是多用外部中断,封贴!!!
haiyang201
发表于 2025-4-28 08:51:14
1325986650 发表于 2025-4-27 08:17
本身PWM就可以输出你需要的几个占空比。为啥要用中断?
if(Zoom_speed= ...
他是要检测占空比,而不是输出