你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32 串口接收字符串的问题

[复制链接]
wuhong377 提问时间:2014-3-24 15:59 /
阅读主题, 点击返回1楼
收藏 1 评论16 发布时间:2014-3-24 15:59
16个回答
wkuang 回答时间:2014-3-25 22:35:50

RE:stm32 串口接收字符串的问题

if(USART_GetITStatus(USART1, USART_IT_RXNE)==SET)         
  {
                uart1_buf[count1++] = USART_ReceiveData(USART1);
                USART_ClearITPendingBit(USART1,USART_IT_RXNE);
                if(count1 > 5)
               {
                   Flag = 1;
                  count1 = 0;
              }
                       
   }
你一次性收了6个字节的数据,当Count =5时, 你使用了uart1_buf[5],这个时候你的数据已经越界了, 访问了非法内存,内存越界,但是输出的时候你只输出了5个byte的数据, 导致最后一个数据没有输出。
代码有两个问题:1)踩内存,访问了非法内存,可能导致软件异常或者复位导致其他功能异常;  2)数据丢失。  
代码功底有待加强
wuhong377 回答时间:2014-3-26 15:34:35

回复:stm32 串口接收字符串的问题

回复第 11 楼 于2014-03-25 22:35:50发表:
if(USART_GetITStatus(USART1, USART_IT_RXNE)==SET)         
{
uart1_buf[count1++] = USART_ReceiveData(USART1);
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
if(count1 > 5)
{
Flag = 1;
count1 = 0;
}

}
你一次性收了6个字节的数据,当Count =5时, 你使用了uart1_buf[5],这个时候你的数据已经越界了, 访问了非法内存,内存越界,但是输出的时候你只输出了5个byte的数据, 导致最后一个数据没有输出。
代码有两个问题:1)踩内存,访问了非法内存,可能导致软件异常或者复位导致其他功能异常;  2)数据丢失。  
代码功底有待加强
 
谢谢您的指导,我已经改了if(count1 > 4) 就是说接五个字节的数据了。这样子的时候,我串口助手发五个数据给单片机在返回,出现第一次返回的数据和发送的一致。但是第二次开始就不同了,如我发送的是 03 C8 C8 D7 96,手动发送的时候第二次开始就都是C8 C8 D7 96 96。 如果自动循环的发送 的话 后面稳定的返回数据是 C8 C8 D7 96 03也就是说移动了一位? 请问这是什么原因。每次复位的时候 返回的数据都是正确的。
 
有缘于你 回答时间:2014-3-27 15:16:25

RE:stm32 串口接收字符串的问题

那你先看看单片机收到的数据正确么, 确定是接收的问题还是发送的问题
wuhong377 回答时间:2014-3-27 17:41:16

回复:stm32 串口接收字符串的问题

回复第 13 楼 于2014-03-27 15:16:25发表:
那你先看看单片机收到的数据正确么, 确定是接收的问题还是发送的问题
 
我觉得是接收的问题,因为我自己定义一个数组,让单片机发送到串口助手的话,一直发都没问题。不懂怎么看单片机收到的是不是正确,所以我这个程序就是将接受到的数据返回到串口来观察和验证。
 
深秋独影 回答时间:2014-3-30 19:28:18

回复:stm32 串口接收字符串的问题

回复第 14 楼 于2014-03-27 17:41:16发表:
回复第 13 楼 于2014-03-27 15:16:25发表:
那你先看看单片机收到的数据正确么, 确定是接收的问题还是发送的问题
 
我觉得是接收的问题,因为我自己定义一个数组,让单片机发送到串口助手的话,一直发都没问题。不懂怎么看单片机收到的是不是正确,所以我这个程序就是将接受到的数据返回到串口来观察和验证。
 用调试就可以看到收到的数据了,设置断点

 
dzc2001 回答时间:2014-4-2 16:41:18

RE:stm32 串口接收字符串的问题

固件库的参考代码里面有现成的啊,这部分程序可以参考那些的。
feiante-155820 回答时间:2014-4-12 21:41:40

RE:stm32 串口接收字符串的问题

NVIC_Configuration(); 没有声明,自然是进不了中断了
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版