6440|13

259

帖子

5

TA的资源

一粒金砂(高级)

楼主
 

stm32cubemx生成的项目中遇到的奇葩问题 [复制链接]

 


      使用cube整了几个测试程序,遇到了几个奇葩问题,大部分都是重新创建并生成一个项目问题就能解决,然而纠结于问题出自哪里,之前在自己笔记本上使用cube生成项目时都没遇到这些问题,而现在使用台式机却频繁遇到类似的小问题,大家在使用cube时有没有遇到类似的问题?又是怎么解决的呢?
两者区别在于:(cube及keil版本一样)
       笔记本:win7 32位
       台式机:win10 64位

遇到的问题如下:
1、串口接收缓存区仅接收一个字节的数据
现象:
     调用串口接收函数:HAL_UART_Receive(&huart1,(uint8_t *) temp,100,2);结果无论发送的数据多少,接收到的缓存区仅temp[0]获取到数据,无法接收完整的串口数据。

解决方式:重新创建一个串口等配置一样的项目,编译-》运行,发现同样的配置,同样的代码,却能正常的接收串口程序了,,,

2、strlen()函数获得的数组长度在判断语句中失效
运行有误代码:(这是用于清空缓存区的代码)
  1. for(i=0; i<strlen(temp);i++)
  2. {
  3.         temp[i] = 0;
  4. }
复制代码

现象:temp缓存区未被清空

解决办法:
  1. len = strlen(temp);
  2. for(i=0; i<len;i++)
  3. {
  4.         temp[i] = 0;
  5. }
复制代码

运行结果:temp缓存区完成清空操作~~




此帖出自stm32/stm8论坛

最新回复

for循环要几条语句,这个函数我一条语句就能实现了。。。。。所以C语言自带的这种标准库,里面的不少函数还是多多关注下,有时候可以说很好用  详情 回复 发表于 2017-8-23 15:47
点赞 关注
 

回复
举报

259

帖子

5

TA的资源

一粒金砂(高级)

沙发
 
或者已经找到出现上述问题的最佳解决途径了
此帖出自stm32/stm8论坛
 
 

回复

714

帖子

2

TA的资源

一粒金砂(高级)

板凳
 
for语句之后你在temp【0】 = 0;之后再进行strlen判断条件不就是strlen(temp)=0了  。。。。。不就for只能运行一次了吗?
此帖出自stm32/stm8论坛

点评

temp数组在别的地方重新赋值,这里只是贴了部分代码说明,  详情 回复 发表于 2017-8-15 11:59
 
个人签名Hello astroturfers
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

4
 
y909334873 发表于 2017-8-14 13:41
for语句之后你在temp【0】 = 0;之后再进行strlen判断条件不就是strlen(temp)=0了  。。。。。不就for只能 ...

temp数组在别的地方重新赋值,这里只是贴了部分代码说明,
此帖出自stm32/stm8论坛

点评

我知道的是你所说的那个strlen在判断语句是无效的那个修改前的代码,本身就是有问题,不是失效了,是本身逻辑就错了,for语句运行一次后srtlen后的数就是0肯定会跳出for循环的  详情 回复 发表于 2017-8-15 16:37
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

5
 
做了几次测试,发现串口的问题是其实是因为延迟造成的,上述代码中所用到的串口接收函数是阻塞式的,启用串口中断,采用中断方式接收数据就能解决串口接收数据不全的问题。
此帖出自stm32/stm8论坛
 
 
 

回复

714

帖子

2

TA的资源

一粒金砂(高级)

6
 
Tobey 发表于 2017-8-15 11:59
temp数组在别的地方重新赋值,这里只是贴了部分代码说明,

我知道的是你所说的那个strlen在判断语句是无效的那个修改前的代码,本身就是有问题,不是失效了,是本身逻辑就错了,for语句运行一次后srtlen后的数就是0肯定会跳出for循环的
此帖出自stm32/stm8论坛

点评

哦哦 明白了!多谢!  详情 回复 发表于 2017-8-16 09:08
 
个人签名Hello astroturfers
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

7
 
y909334873 发表于 2017-8-15 16:37
我知道的是你所说的那个strlen在判断语句是无效的那个修改前的代码,本身就是有问题,不是失效了,是本身 ...

哦哦 明白了!多谢!
此帖出自stm32/stm8论坛
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

8
 
看起来你要清空temp[i]这个数组,用memset函数不就挺好的吗。。。。。。
此帖出自stm32/stm8论坛

点评

这个方法好!  详情 回复 发表于 2017-8-23 07:21
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

9
 
huaiqiao 发表于 2017-8-21 21:49
看起来你要清空temp这个数组,用memset函数不就挺好的吗。。。。。。

这个方法好!
此帖出自stm32/stm8论坛

点评

不是说这个方法好,这个是个技巧啊。。。。。。。memset这个是对较大的结构体或数组进行清零操作的一种最快方法呢。 这个你百度memset这个函数就知道了。  详情 回复 发表于 2017-8-23 09:35
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

10
 

不是说这个方法好,这个是个技巧啊。。。。。。。memset这个是对较大的结构体或数组进行清零操作的一种最快方法呢。

这个你百度memset这个函数就知道了。
此帖出自stm32/stm8论坛

点评

虽然知道这个函数,不过之前一般都用局部变量,没怎么用过这个函数,多谢提醒!下回再遇到清空数组的情况就记得使用memset函数了  详情 回复 发表于 2017-8-23 10:30
这个函数我知道的,上面的代码是基于之前的工程改的测试用例,那个for循环原本是用于赋值的,于是我就直接拿来清空数组了~  详情 回复 发表于 2017-8-23 10:18
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

11
 
huaiqiao 发表于 2017-8-23 09:35
不是说这个方法好,这个是个技巧啊。。。。。。。memset这个是对较大的结构体或数组进行清零操作的一种最 ...

这个函数我知道的,上面的代码是基于之前的工程改的测试用例,那个for循环原本是用于赋值的,于是我就直接拿来清空数组了~
此帖出自stm32/stm8论坛

点评

for循环要几条语句,这个函数我一条语句就能实现了。。。。。所以C语言自带的这种标准库,里面的不少函数还是多多关注下,有时候可以说很好用  详情 回复 发表于 2017-8-23 15:47
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

12
 
huaiqiao 发表于 2017-8-23 09:35
不是说这个方法好,这个是个技巧啊。。。。。。。memset这个是对较大的结构体或数组进行清零操作的一种最 ...

虽然知道这个函数,不过之前一般都用局部变量,没怎么用过这个函数,多谢提醒!下回再遇到清空数组的情况就记得使用memset函数了
此帖出自stm32/stm8论坛

点评

嗯嗯,get到一个小小的方法,这样会你代码的效率我想也会提高很多的吧。。。  详情 回复 发表于 2017-8-23 15:46
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

13
 
Tobey 发表于 2017-8-23 10:30
虽然知道这个函数,不过之前一般都用局部变量,没怎么用过这个函数,多谢提醒!下回再遇到清空数组的情况 ...

嗯嗯,get到一个小小的方法,这样会你代码的效率我想也会提高很多的吧。。。
此帖出自stm32/stm8论坛
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

14
 
Tobey 发表于 2017-8-23 10:18
这个函数我知道的,上面的代码是基于之前的工程改的测试用例,那个for循环原本是用于赋值的,于是我就直 ...

for循环要几条语句,这个函数我一条语句就能实现了。。。。。所以C语言自带的这种标准库,里面的不少函数还是多多关注下,有时候可以说很好用
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表