关于PIT的用法小弟寻老司机帮忙
老哥们快来啊 ,小弟等不及了
中断闪烁,技术2次
触发条件写在那?
这是demo?
这是demo?
小编探讨一下你的陈序啊!
你单片机的频率是40M吗?就是PLL之后的频率
我刚好也在做这个系列
小编探讨一下你的陈序啊!
你单片机的频率是40M吗?就是PLL之后的频率
我刚好也在做这个系列
PIT的中断周期是2HZ,在主循环里一直检测PB0的状态,如果是低电平就在PIT中断里开始计数,计数值是2的倍数就将PP0翻转一次,就能实现1HZ闪烁了
这是我自己写的
PLL之后是32M的。
是在主循环里还是在中断部分写呢?
我目前写到中断里了,中断里的程序是这样写的
{if (PITTF==0x01)
PITTF=0x01;
LED=~LED;
i++;
if (i>=4)
LED=1;}
这样写可以吗?
这样写LED的闪烁频率就是2HZ了
功能可以实现,但是我写了很多个,因为需要6个中断程序如下
void interrupt PIT_INTER(void)
{
if (PITTF==0x01&&BP_MCU==1) {
PITTF=0x01;
LEDCPU=~LEDCPU;
i++;
if(i>=2)
LEDCPU=1;
}
if (PITTF==0x01&&START_MCU==1) {
PITTF=0x01;
LEDCPU=~LEDCPU;
i++;
if(i>=4)
LEDCPU=1;
}
if (PITTF==0x01&&D_MCU==0) {
PITTF=0x01;
LEDCPU=~LEDCPU;
i++;
if(i>=6)
LEDCPU=1;
}
if (PITTF==0x01&&R_MCU==1) {
PITTF=0x01;
LEDCPU=~LEDCPU;
i++;
if(j>=8)
LEDCPU=1;
}
if (PITTF==0x01&&AIRHIGH_MCU==0) {
PITTF=0x01;
LEDCPU=~LEDCPU;
i++;
if(i>=10)
LEDCPU=1;
}
if (PITTF==0x01&&CHARGE_MCU==0) {
PITTF=0x01;
LEDCPU=~LEDCPU;
i++;
if(i>=12)
LEDCPU=1;
}
这样写的话,可以吗?有一个中断发生了之后,在有其他中断还能响应吗?比如第一个中断闪两次发生并执行完毕,第二个条件也需要触发,闪三次,可以实现吗?