初级会员

- 积分
- 162
- 金钱
- 162
- 注册时间
- 2012-6-26
- 在线时间
- 0 小时
|

楼主 |
发表于 2012-8-24 12:09:37
|
显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子哥,我把那些都搬到中断里去处理了,程序如下:
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0) != RESET) // 检查指定的EXTI线路触发请求发生与否
{
LED4= ~LED4;
// DATA_564 = (bool) (BUFF[bytenum]&0x01);
// bytenum++;
// if(bytenum >= Snum1)
// bytenum = 0;
// if(bytenum >= 1023)
// bytenum = 0;
}
EXTI_ClearITPendingBit(EXTI_Line0); //清除EXTI0线路挂起位
}
这样处理中断是正确的,但我把注释掉部分
// DATA_564 = (bool) (BUFF[bytenum]&0x01);
// bytenum++;
// if(bytenum >= Snum1)
// bytenum = 0;
// if(bytenum >= 1023)
加上就不正常中断了,是不是这段时间处理得太长了呢? |
|