初级会员

- 积分
- 149
- 金钱
- 149
- 注册时间
- 2018-5-8
- 在线时间
- 27 小时
|
2金钱
看到原子的例程里面,外部中断的时候,喜欢加上delayms(10);这样都没问题,使得我确信中断他是能够打断这个延时函数的,
但是在串口中断里面调用了延时函数,两个字节的数据过来明显是会丢数据的,这个让人费解,只要我吧数据读走了,下次中断再来
应该也能接收到数据才对呀,
可是实际上是 在串口里面加了延时或者别的耗时的事情以后,串口来数据的时候就不会再进中断了??
void USART1_IRQHandler(void) //串口1中断服务程序
{
u8 Res;
mycnt++;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res =USART_ReceiveData(USART1); //读取接收到的数据
delay_ms(10);//做点别的事情,用延时函数代替
}
}
外部不停的发数据给串口,串口中断里面变量mycnt,不会一直跟着加,显然没有进入中断呀,这是什么原理??
|
|