OpenEdv-开源电子网

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

向STM32每秒发送一个加一的数,用lcd显示变成102,104,106这种间隔一个数显示了,用串口助手看的发送数据正确,接收的也是隔一个接收

[复制链接]

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-10-10
在线时间
0 小时
发表于 2015-5-13 13:40:12 | 显示全部楼层 |阅读模式
5金钱
代码如下,
[mw_shl_code=c,true]int k=0; if(DMA_GetITStatus(DMA1_IT_TC1)) { // USART_SendData(USART2,0x46); hz[0] = t/100 +'0'; hz[1] = t %100 /10 + '0'; hz[2] = t %10 + '0'; for(k=0;k<3;k++) { USART_SendData(USART2,hz[k]); while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET); // delay_us(100); } // USART_SendData(USART2,0x3f); // while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET); // delay_us(1000); USART_SendData(USART2,0x21); while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET); t++; }这是发送程序,用另一个板子接收,根据原子哥的程序改的,以0x21为结束符,程序如下[/mw_shl_code] [mw_shl_code=c,true]
[mw_shl_code=c,true]void USART2_IRQHandler(void) //串口1中断服务程序 { u8 Res; if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾) { Res = USART_ReceiveData(USART2); //(USART1->DR); //读取接收到的数据 // printf("%u8",Res); if((USART_RX_STA&0x80)==0) //接收未完成 { if(USART_RX_STA&0x40) { // if(Res!=0x21)USART_RX_STA=0; //接收错误,重新开始 USART_RX_STA|=0x80; //接收完成了 } else //还没收到0X0D { if(Res==0x21)USART_RX_STA|=0x40;//在这里可以随意控制结束符 ascll 查询即可 else { USART_RX_BUF[USART_RX_STA&0X3F]=Res ; USART_RX_STA++; if(USART_RX_STA>63)USART_RX_STA=0;//接收数据错误,重新开始接收 } } } } } [/mw_shl_code]

下面是主程序的显示函数:[/mw_shl_code] [mw_shl_code=c,true]
[mw_shl_code=c,true] while(1) { if(USART_RX_STA&0x80) { int j=100; printf("\n您发送的消息为:\n"); len = USART_RX_STA&0x3f; //得到此次接收到的数据长度 for(t=0;t<len;t++) { USART2->DR = USART_RX_BUF[t]; while((USART2->SR&0X40)==0); // 等待发送结束 TC位 } for(i=0;i<len;i++) //在屏幕上显示接收到的字符 { LCD_ShowChar(j+=8,120,USART_RX_BUF,16,0); } USART_RX_STA=0; }[/mw_shl_code] 大神帮忙看看,谢谢各位了


[/mw_shl_code]

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

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-10-10
在线时间
0 小时
 楼主| 发表于 2015-5-13 13:40:47 | 显示全部楼层
谢谢各位了,我想正确在lcd上显示
回复

使用道具 举报

11

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-8-4
在线时间
14 小时
发表于 2015-5-13 19:27:04 | 显示全部楼层
t=1000了hz[0]=10+'0';
我的意思就是t达到1000以上了你那种写法就不适应了 应该再后面加上%10
生命不息,学习不止
回复

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-10-10
在线时间
0 小时
 楼主| 发表于 2015-5-14 09:38:29 | 显示全部楼层
回复【3楼】liuzhenwei2014:
---------------------------------
是的,这个是我测试测试的,就随便写了个自动加1的程序输出看看效果。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 14:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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