打印
[STM8]

memcpy函数问题。

[复制链接]
1835|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
负熵|  楼主 | 2019-8-26 18:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 负熵 于 2019-8-26 19:43 编辑

stm8接收串口数据后显示到lcd1602上,串口数据格式是1+16位数据+16位数据,例如接收到的数据是"1    16:07:21     2019-08-22 Thu ",
我是用memcpy函数把接收到的数据拷贝到2个数据里面,程序如下
u8 bluetooth_date;
u8 bluetooth_date_str0[17],bluetooth_date_str1[17];
int main(void)
{
  
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
  USART_Configuration();//串口初始化
  GPIO_Configuration();
  LCD1602_Init();
  LCD1602_ClearScreen();
  

  while(1)
  {
   
    if (bluetooth_date[0]=='1')
    {
      
      memcpy(bluetooth_date_str0, bluetooth_date + 1, 16);
      memcpy(bluetooth_date_str1, bluetooth_date + 17, 32);

      bluetooth_date_str0[16]='\0';
      bluetooth_date_str1[16]='\0';
      
    }
   
    LCD1602_Show_Str(0, 0, bluetooth_date_str0);
    LCD1602_Show_Str(0, 1, bluetooth_date_str1);
   
  }
然后发现有一个问题,如果只写memcpy(bluetooth_date_str0, bluetooth_date + 1, 16);程序能正常接收到数据并显示出来,但如果加上 memcpy(bluetooth_date_str1, bluetooth_date + 17, 32);程序就没办法接收到串口数据。
这个到底是哪里的问题。


使用特权

评论回复
沙发
ayb_ice| | 2019-8-27 09:31 | 只看该作者
bluetooth_date_str1[17];

memcpy(bluetooth_date_str1, bluetooth_date + 17, 32);

越界了

使用特权

评论回复
板凳
负熵|  楼主 | 2019-8-27 10:17 | 只看该作者
ayb_ice 发表于 2019-8-27 09:31
bluetooth_date_str1[17];

memcpy(bluetooth_date_str1, bluetooth_date + 17, 32);

恩,昨晚看到了。没仔细看函数说明犯了低级错误。

使用特权

评论回复
地板
负熵|  楼主 | 2019-8-31 16:40 | 只看该作者
再想请教一下,memcry的用法,memcry只能复制静态数组里面的内容吗?
bluetooth_date是uart1接收到的内容,调试的时候没发现有问题,但是
memcpy(bluetooth_date_str0, bluetooth_date + 1, 16);
memcpy(bluetooth_date_str1, bluetooth_date + 17, 32);
之后,bluetooth_date_str0和bluetooth_date_str1的内容就对不上了

使用特权

评论回复
5
wangjiahao88| | 2019-9-2 17:52 | 只看该作者
要保证更新之后 及时copy!

使用特权

评论回复
6
负熵|  楼主 | 2019-9-3 10:13 | 只看该作者
wangjiahao88 发表于 2019-9-2 17:52
要保证更新之后 及时copy!

说出来你可能不信,这个问题折腾我好几天了,在改了无数次之后,昨天某次剪切粘贴最早的代码后就没问题了。。。。

使用特权

评论回复
7
wangjiahao88| | 2019-9-5 15:29 | 只看该作者
负熵 发表于 2019-9-3 10:13
说出来你可能不信,这个问题折腾我好几天了,在改了无数次之后,昨天某次剪切粘贴最早的代码后就没问题了 ...

具体的这个问题,分析不处理。可能是哪里有一个小bug.调试程序的时候,往往会出现这种问题。但是往往最后都不了了之了。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

80

帖子

0

粉丝