STM32代码逻辑正常但输出异常结果错误导致出现无法解释的问题,问题包括ADC输出为0,造成问题的原因是数组溢出

文章讲述了STM32项目中遇到的两个问题:ADC输出异常和字符串数组溢出。ADC问题源于数组元素个数定义错误,字符串问题则在于字符串长度超过定义。修正这两个数组溢出问题后,程序恢复正常。
摘要由CSDN通过智能技术生成

STM32代码逻辑正常但输出异常结果错误导致出现无法解释的问题,问题包括ADC无法输出为0,造成问题的原因是数组溢出

情景一

问题描述:ADC1_Value是正常的ADC值,但R37_product只输出0.5和2,数据变得很异常

R37_product=((float)ADC1_Value)*1.0f/4096*3.3f;
R38_product=((float)ADC2_Value)*1.0f/4096*3.3f;

当我把LD1_flag=0去掉后,数据变得正常了,但奇怪的是LD1_flag并没有在其他地方使用

 1ae5e6315578480e94f90480ac776ef1.png

 最终解决方法:原来是下面这个出了问题,因为定义时数组的元素个数是3个,应该是下面写了7导致数组溢出产生的问题,改回来就可以了

extern char product[7]; 

定义

char product[3]; //串口接收的数字

情景二

问题描述:ADC采集的数据一直为0,如果把输入捕获在代码中去掉ADC就可以采集了(下面freq12是输入捕获的一个频率输出),其实问题和输入捕获没本质的关系,最后的解决方法是把下面代码的str中的一个空格去掉就可以了。原因是str定义为char str[20],因为freq12的字符数可达到7个,所以该字符串的字符个数就变成21个,造成了数组溢出。

sprintf(str,"    duty:%.2f%%   ",freq12);
LCD_DisplayStringLine(Line1, (unsigned char *)str);

 

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小冠哥愤怒的猪头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值