OpenEdv-开源电子网

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

串口接收到了数据但是主程序中的输出无法显示

[复制链接]

6

主题

23

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-7-18
在线时间
16 小时
发表于 2018-7-26 09:32:39 | 显示全部楼层 |阅读模式
10金钱
串口中增加输出发现串口可以接收数据,但是main函数中接收的数据无法显示代码如下
while(1)
        {for(times=0;times<100;times++)
                        {delay_ms(1000);
                   if(times%2==0){
                                  key1=1;
                                  for(i=0;i<5;i++) {
                                          printf("rs4851%d=%d\r\n",i,rs485buf1[i]);
                  LCD_ShowxNum(30+i*32,190,rs485buf1[i],3,16,0X80);       
                                          }
                         RS485_Send_Data(rs485buf1,5);                  
                         }
                         if(times%2==1){
                                  key1=2;
                                  for(i=0;i<5;i++){
                                                printf("rs4853%d=%d\r\n",i,rs485buf3[i]);
                                                LCD_ShowxNum(30+i*32,230,rs485buf3[i],3,16,0X80);       
                                          }
                        RS485_Send_Data(rs485buf3,5);                        
                         }
         RS485_Receive_Data(rs485buf,&key);
                       
         if(key1==1&&key)
                        {
                                key1=0;
                                if(key>5)key=5;
                          for(i=0;i<key;i++)
                                 printf("rs485%d=%d\r\n",i,rs485buf[i]);
                                LCD_ShowxNum(30+i*32,270,rs485buf[i],3,16,0X80);       
                        }
         if(key1==2&&key)
                        {
                                key1=0;
                                if(key>5)key=5;
                          for(i=0;i<key;i++)
                                 printf("rs4852%d=%d\r\n",i,rs485buf[i]);
                                LCD_ShowxNum(30+i*32,310,rs485buf[i],3,16,0X80);
                        }
                t++;
               
                if(t==20)
                {
                        LED0=!LED0;       
                        t=0;
                       
                        LCD_ShowxNum(30+48,150,times,3,16,0X80);       
                }        //          
        }  
}
}
串口程序如下:


void USART2_IRQHandler(void)
{
        u8 res;            
        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
        {                
          res =USART_ReceiveData(USART2);
                printf("res=%d\r\n",res);
                if(RS485_RX_CNT<64)
                {
                        RS485_RX_BUF[RS485_RX_CNT]=res;               
                        RS485_RX_CNT++;                                               
                }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

23

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-7-18
在线时间
16 小时
 楼主| 发表于 2018-7-26 09:36:19 | 显示全部楼层
void RS485_Receive_Data(u8 *buf,u8 *len)
{
        u8 rxlen=RS485_RX_CNT;
        u8 i=0;
        *len=0;                               
        delay_ms(10);               
        if(rxlen==RS485_RX_CNT&&rxlen)
        {
                for(i=0;i<rxlen;i++)
                {
                        buf[i]=RS485_RX_BUF[i];       
                }               
                *len=RS485_RX_CNT;       
                RS485_RX_CNT=0;               
               
        }
这是485通讯的函数  len也无法输出
感觉应该是主函数有问题但是实在找不出来求大佬们帮忙看下
回复

使用道具 举报

6

主题

23

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-7-18
在线时间
16 小时
 楼主| 发表于 2018-7-26 10:17:16 | 显示全部楼层
shrj1001 发表于 2018-7-26 09:36
void RS485_Receive_Data(u8 *buf,u8 *len)
{
        u8 rxlen=RS485_RX_CNT;

在485通讯的函数中加了几行输出发现if后面的代码没有被执行
回复

使用道具 举报

6

主题

23

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-7-18
在线时间
16 小时
 楼主| 发表于 2018-7-26 10:18:07 | 显示全部楼层
大佬能不能帮忙看下什么原因@正点原子
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 11:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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