新人求助,关于串口发送数据。求大神~~~~~

2019-07-21 08:49发布

请问,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);
      }



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
一入嵌入深似海
1楼-- · 2019-07-22 10:59
yklstudent 发表于 2018-10-19 10:15
USART2->USART1
USART3->USART1
USART1这边需要分辨数据是从USART2还是USART3发送过来的吗?

我暂时没管这么多,我需要的只是在上位机收到完整的 串口二和串口三对应采集的数据。
一入嵌入深似海
2楼-- · 2019-07-22 16:16
HXYDJ 发表于 2018-10-19 10:15
串口2和串口3收到的数据先存起来,然后再用串口1发送。不能接收到了立马就发送。

直接临时用一个res=receiveData(USARTx) 不算存起来么?  反正我这样总是运行着运行着就 串口二和串口三的数据 相互夹杂和 覆盖导致数据丢失。。。。。。。
HXYDJ
3楼-- · 2019-07-22 17:36
一入嵌入深似海 发表于 2018-10-19 10:22
直接临时用一个res=receiveData(USARTx) 不算存起来么?  反正我这样总是运行着运行着就 串口二和串口 ...

你这只是存的一个,可以一次存一组数据。
275891381
4楼-- · 2019-07-22 22:50
 精彩回答 2  元偷偷看……
午夜狼嚎
5楼-- · 2019-07-23 01:08
一入嵌入深似海 发表于 2018-10-19 09:44
就是串口二和串口三都是每隔一秒接收一长串数据(这个一秒有误差),都需要通过串口一输出给PC。但是对于 ...

加延时啊
一入嵌入深似海
6楼-- · 2019-07-23 03:37
谢谢各位指导,我再去试试。

一周热门 更多>