请问,STM-F1的串口二和串口三同时使用中断接收,然后通过串口一来发送数据。 串口二和串口三的数据都是每秒传输150位,一秒一次,波特率9600。能不能只使用串口一来发送,不改变波特率,并且没有任何数据丢失。如何解决问题。附简单的中断接收程序。PS:我尝试抢占优先级和子优先级设置成一样,固定每隔若干秒,连续若干秒数据出错。
void USART2_IRQHandler(void) //串口2中断服务程序
{
u8 res;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断
{
res=USART_ReceiveData(USART2);//(USART2->DR); //读取接收到的数据
USART_SendData(USART1,res);
}
}
void USART3_IRQHandler(void) //串口3中断服务程序
{
u8 res;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //接收中断
{
res=USART_ReceiveData(USART3);//(USART3->DR); //读取接收到的数据
USART_SendData(USART1,res);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
直接临时用一个res=receiveData(USARTx) 不算存起来么? 反正我这样总是运行着运行着就 串口二和串口三的数据 相互夹杂和 覆盖导致数据丢失。。。。。。。
一周热门 更多>