串口发送数据

2019-03-23 18:25发布

我用串口助手发送字符,然后在有串口一传到pc上,为何一个字符 时可以,同时发多个时就不行了了?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
lcofjp
1楼-- · 2019-03-24 04:34
/ 最好贴出一些关键代码,否则通过想象大家很难找出问题所在。
陌上朝歌
2楼-- · 2019-03-24 04:53
本帖最后由 陌上朝歌 于 2015-10-25 19:42 编辑

代码如下:unsigned char buffer[];
void USART1_IRQHandler(void)
{
                int i=0;
            unsigned char temp_trx;
            if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
            {
                    
                        USART_ClearFlag(USART1,USART_IT_RXNE);
                        temp_trx=USART_ReceiveData(USART1);
                        buffer=temp_trx;
                        USART_SendData(USART1,temp_trx);
                        if(i==14)
                        {
                            i=0;
                           
                         }
                        else
                        i++;
                                
            }
        
}
比如发送11,返回11,但是发送11 12,返回7F E2
tianshuihu
3楼-- · 2019-03-24 08:46
 精彩回答 2  元偷偷看……
陌上朝歌
4楼-- · 2019-03-24 11:00
tianshuihu 发表于 2015-10-25 19:23
波特率合适吗

建议,
先单独试试发送,然后再单独试试接收,都可靠了在试试收完之后发送

波特率为115200,收完之后发送也是一样的问题
tianshuihu
5楼-- · 2019-03-24 11:26
这个波特率好高啊,先试试采用低一些的波特率如9600或2400

单个数据能正确收发的话,硬件没有问题,怀疑中断响应处理不够快,后面的数据把前面的冲掉了

如有必要可以构建一个接收缓冲数组,中断中仅负责接收缓冲,主程序中负责发送
飞翔荷兰人号
6楼-- · 2019-03-24 15:15
 精彩回答 2  元偷偷看……

一周热门 更多>