OpenEdv-开源电子网

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

串口发送数据到STM32并在LCD中显示,一直无法实现

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-3-21
在线时间
20 小时
发表于 2017-4-11 18:45:19 | 显示全部楼层 |阅读模式
1金钱
本人菜鸟一枚,请大家帮帮忙,看一下到底是什么问题呢。。。。。。。贴上主函数

int main(void)
{                                                                                    
        u8 t;
        u8 len;       
        u8 *data={0};
        u16 times=0;
        u8 lcd_id[12];                        //存放LCD ID字符串
                 //存放缓冲区字符串
          Stm32_Clock_Init(9);        //系统时钟设置
        uart_init(72,115200);                 //串口初始化为9600
        delay_init(72);                            //延时初始化
        LED_Init();                                  //初始化与LED连接的硬件接口
        LCD_Init();
        POINT_COLOR=RED;
        sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。       
    LCD_ShowString(30,40,200,24,24,"Mini STM32");       
        LCD_ShowString(30,70,200,16,16,lcd_id);                //显示LCD ID
          while(1)
        {
                if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                        for(t=0;t<len;t++)
                        {
                                USART1->DR=USART_RX_BUF[t];
                                while((USART1->SR&0X40)==0);//等待发送结束
                        }
                        for(t=0;t<len;t++)
                        {data[t]=USART_RX_BUF[t];}
                        LCD_ShowString(30,110,200,12,12,data);
                        USART_RX_STA=0;
                       
                }else
                {
                        times++;
                        if(times%5000==0)
                        {
                                LCD_ShowString(30,140,200,16,16,"UASRT TEST");
                        }
                        if(times%200==0)LCD_ShowString(30,170,200,12,12,"2017/4/11");
                        if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
                        delay_ms(10);   
                }
        }         
}


最佳答案

查看完整内容[请看2#楼]

你这个仿真找问题,很容易解决
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-4-11 18:45:20 | 显示全部楼层
你这个仿真找问题,很容易解决
回复

使用道具 举报

0

主题

174

帖子

0

精华

高级会员

Rank: 4

积分
725
金钱
725
注册时间
2016-1-9
在线时间
64 小时
发表于 2017-4-11 21:40:31 | 显示全部楼层
串口调试助手上有返回的数据么?
显示屏显示其他的数据么?
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-3-21
在线时间
20 小时
 楼主| 发表于 2017-4-12 10:43:25 | 显示全部楼层
谢谢大家,本人刚学没多久所以低级问题比较多,忘见谅。
现在跟PC的串口通信LCD已经实现,下面附上代码,大家一起学习交流。
另外有没有人做过STM32跟别的平台进行通信的例子啊???最近在整这个,现在的问题就是PA9\PA10跟RTXT为何要短接,跟其他板子进行通信的时候我连哪两个引脚呢(目前试了之后都不行)。希望做过这个方面的能给一点建议,谢谢了!!!
int main(void)
{                                                                                    
        u8 t;
        u8 len;       
        int j;
        u8 word[200];
        u16 times=0;
        u8 lcd_id[12];                        //存放LCD ID字符串
                 //存放缓冲区字符串
          Stm32_Clock_Init(9);        //系统时钟设置
        uart_init(72,115200);                 //串口初始化为9600
        delay_init(72);                            //延时初始化
        LED_Init();                                  //初始化与LED连接的硬件接口
        LCD_Init();
        POINT_COLOR=RED;
        sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//将LCD ID打印到lcd_id数组。       
           
        LCD_ShowString(30,70,200,16,16,lcd_id);                //显示LCD ID
          while(1)
        {
                if(USART_RX_STA&0x8000)
                {                                       
                        len=USART_RX_STA&0x3FFF;
                        for(t=0;t<len;t++)
                        {
                                USART1->DR=USART_RX_BUF[t];
                                while((USART1->SR&0X40)==0);
                                for(j=0;j<len;j++)
                                {
                                        word[j]=USART_RX_BUF[j];//把收到数据放到word里
                                }
                        }
                        printf("\r\n\r\n");//
                        USART_RX_STA=0;
                        LCD_ShowString(30,130,200,12,16,word);
                }  else
                {
                        times++;
                        if(times%5000==0)
                        {
                               
                                LCD_ShowString(30,170,200,16,16,"UASRT TEST ERRO");
                        }
                        if(times%200==0)LCD_ShowString(30,170,200,12,12,"2017/4/11");
                        if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
                        delay_ms(10);   
                }
        }         
}
STM32与其他平台进行通信,现在的问题就是PA9\PA10跟RTXT为何要短接,跟其他板子进行通信的时候我连哪两个引脚呢(目前试了之后都不行)。希望做过这个方面的能给一点建议,谢谢了!!!
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-3-21
在线时间
20 小时
 楼主| 发表于 2017-4-12 10:46:52 | 显示全部楼层
whyviking 发表于 2017-4-11 21:40
串口调试助手上有返回的数据么?
显示屏显示其他的数据么?

昨天显示的是一串数字200000010还有的时候是5开头的一串数字。目前基本解决了,谢谢。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-22 05:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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