- void USART1_IRQHandler(void)
- {
- uint16_t Got_Data;
- if(USART_GetiTStatus(USART1, USART_IT_RXNE) != RESET)
- {
- Got_Data=USART_ReceiveData(USART1);//1
- delay_ms(10);//2.
- USART_SendData(USART1,Got_Data);//3
- }
-
-
- }
复制代码上面这段中断处理函数由于我故意在里面加了个10ms延时,所以造成发出的和接收的不一致。
问题是:
1.在接收到第一个数据后,进入10MS延时时,第二个数据来了,那么还会触发中断么?我看说明书是说如果读了数据寄存器,那么标志位会清0,那么即使还没有退出这个函数,但是已经可以再次触发中断了,是不是意味着重新执行这个中断函数?
2.我在电脑上的串口助手里不断向
芯片串口发送123456789,但是每次芯片发回来的只有12,请解释原因。
3.如果说现在我需要从串口接收大量数据,并逐个处理这些数据,而处理每个字节的数据要花上很多时间,可能会影响到下个数据的接收,而现在又没有大量的RAM来存储这些数据,那么有什么好的解决办法?
有什么关系吗?是不是影响程序的执行效率,还是会跟别的中断出现冲突?
一周热门 更多>