新手想要实现stm32接收固定连续数据并插入其他数据,0.3秒周期。
于是在正点原子的串口中断程序中的if((USART_RX_STA&0x8000)==0)的else中加入了几行printf发送程序,也就是进入中断判断是否接收到0x0A进行编辑转发,发现周期变成了0.7秒。
而根据正点原子例程修改的在主函数循环中判断if(USART_RX_STA&0x8000)然后处理数据发送数据是0.3秒没有问题。
在中断程序内发送数据会导致速度变慢吗?
左为中断内发送,右为主函数发送
整理一下你的中断函数:
单片机的任何都要遵循一个原则,快进快出。
修改一下:
你的串口中断就只干一个事情,接收串口字符。
在主函数中,做字符判断和其它处理。
0.7s,0.3s,是怎么计数的?
0.3s 仅仅是处理数据的时间,0.7s 是怎么计数的,从哪开始到哪结束
你是中断程序作为接受程序,你要接受周期是0.3M 就得保证中断时间是0.3m, 如果在中断程序内加入其他函数,中断时间就会增加, 很正常啊,