OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5640|回复: 9

如何将串口二得到的数据,通过串口一发出去?

[复制链接]

3

主题

45

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2015-8-14
在线时间
3 小时
发表于 2016-5-13 19:04:53 | 显示全部楼层 |阅读模式
80金钱
本帖最后由 块垒 于 2016-5-15 11:36 编辑

我手上有个串口通讯的传感器,我用串口二接收它的信号,想用串口一输出 。我用电脑 串口助手给串口二输入数据,串口一有数据显示。
我直接用传感器串口接电脑也好使。有东西的时候是0x55 0xaa 开头后面带14个8位数据,没有数据的时候传输的全是0。


但是把它们俩接上我电脑就收不到东西了。
我的串口二中断函数
void USART2_IRQHandler(void)      
{
        u8 Res;
                int i;
        
        if(USART_GetITStatus(USART2,USART_IT_RXNE))
                {
                        Res =USART_ReceiveData(USART2);
                        USART_SendData(USART1,Res);
                        while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);

                }
        
}

50@[TJLNOJHQ`BSX_3LH3OB.png

传感器直接上传数据

传感器直接上传数据
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

45

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2015-8-14
在线时间
3 小时
 楼主| 发表于 2016-5-13 19:06:14 | 显示全部楼层
求大大神!!!!!!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-5-13 20:17:44 | 显示全部楼层
帮顶
回复

使用道具 举报

3

主题

45

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2015-8-14
在线时间
3 小时
 楼主| 发表于 2016-5-15 10:43:24 | 显示全部楼层

原子哥,电脑通过串口发送给stm32的东西是不是都带有回车换行的结束标记啊。
是不是我的传感器串口数据有开始标记,(0xaa 0x55)没有结束标记所以他不显示啊~
串口数据不是每次寄存器存满就进入中断吗?
波特率19200不算快吧~这种情况不至于卡死吧~
我把串口1的使能关闭了。
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2016-5-15 10:51:37 | 显示全部楼层
不要在中断里边发数据,做标记在主函数里边发。串口貌似你不太明白啊
我有故事,你有酒吗
回复

使用道具 举报

3

主题

45

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2015-8-14
在线时间
3 小时
 楼主| 发表于 2016-5-15 11:16:14 | 显示全部楼层
来俩不甜的 发表于 2016-5-15 10:51
不要在中断里边发数据,做标记在主函数里边发。串口貌似你不太明白啊

我试过做标记在主函数里发,但是没有数据。所以我想看看在中断里有没有接到数据。
然后,我串口最近才学的,谢谢指点啦。
回复

使用道具 举报

3

主题

45

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2015-8-14
在线时间
3 小时
 楼主| 发表于 2016-5-15 11:17:46 | 显示全部楼层
h文件中
/******/
extern u8 buff[12];
extern u8 Res;
extern int iflag;
/*******/

u8 buff[12];
u8 Res;
int iflag=0;



void USART2_IRQHandler(void)      
{
        int i;
        if(USART_GetITStatus(USART2,USART_IT_RXNE))
                {
                        Res =USART_ReceiveData(USART2);
                }
        if(Res==0x55)
         {
                Res =USART_ReceiveData(USART2);
                 if(Res==0xaa)
                 {
                         for(i=0;i<12;i++)
                                        {
                                                buff[i]=USART_ReceiveData(USART2);               
                                                if(i==11) {iflag=1;}
                                                else iflag=0;
                                        }
                 }
         }
         
}

void pixy_dispaly(void)
{

        int i;
  if(iflag==1)
                {
                         for(i=0;i<12;i++)
                                        {
                                                 USART_SendData(USART1,buff[i]);
                                        }
     }
}
回复

使用道具 举报

3

主题

45

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2015-8-14
在线时间
3 小时
 楼主| 发表于 2016-5-15 11:19:07 | 显示全部楼层
本帖最后由 块垒 于 2016-5-15 11:32 编辑
块垒 发表于 2016-5-15 11:17
h文件中
/******/
extern u8 buff[12];

这个就是一开始写的 ,但是没有数据出来while(1)
        {
                LED1=0;
                pixy_dispaly();
               
        }

回复

使用道具 举报

32

主题

223

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2015-9-23
在线时间
120 小时
发表于 2016-5-15 19:32:48 | 显示全部楼层
慢慢找问题吧
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2016-1-18
在线时间
61 小时
发表于 2016-9-21 15:46:40 | 显示全部楼层
楼主,我最近在读取一个传感器的值,也是需要串口2读数据,串口1打印发送,您做好了吗,能不能交流一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 03:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表