[技术讨论] 请教一个KEIL5的问题

[复制链接]
1628|12
 楼主| ssf621 发表于 2022-5-16 09:18 | 显示全部楼层 |阅读模式
在线调试,程序不执行函数内部语句,直接跳出函数部分,是什么原因啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ningling_21 发表于 2022-5-16 11:51 | 显示全部楼层
不是被优化了?
畅想天子 发表于 2022-5-16 12:11 | 显示全部楼层
本帖最后由 畅想天子 于 2022-5-16 13:16 编辑

void PCB_TemPerPro(void)
{
        uint8_t  i=0,temp=0,diff=0,counter_Last=0;
        for(;i<12;i++)
        {
                if(adc5_raw.adc_e<KTY82_ADC_VALUE)
                {
                        temp+=10;               
                }
        counter_Last =temp;       

        }
        if(i>=12)
        {
                temp=120;
                PCB_TemPer=120;
        }
        for(i=0;i<12;i++)
        {
                diff =(uint8_t)(KTY82_ADC_VALUE[i+1]-KTY82_ADC_VALUE/10);
                counter_Last+=(uint8_t)(adc5_raw.adc_e--KTY82_ADC_VALUE/diff);
                PCB_TemPer =counter_Last;
        }
按照楼主的代码整理的。总之,让人有些让人看不明白,究竟在表达什么意思?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| ssf621 发表于 2022-5-16 14:52 | 显示全部楼层
畅想天子 发表于 2022-5-16 12:11
void PCB_TemPerPro(void)
{
        uint8_t  i=0,temp=0,diff=0,counter_Last=0;

温度传感器KTY82-220, 间隔10度电阻值, 求大概一个整数温度值
畅想天子 发表于 2022-5-16 15:03 | 显示全部楼层
ssf621 发表于 2022-5-16 14:52
温度传感器KTY82-220, 间隔10度电阻值, 求大概一个整数温度值

你写的程序for循环之后,已经使i=13,接下来你的if判断i>=12的情况。你的else语句是不是多余了?

binoo7 发表于 2022-5-16 16:44 | 显示全部楼层
重新编译一下吧
M馒头 发表于 2022-5-16 20:20 | 显示全部楼层
1、被编译器优化了
2、判断语句有问题
ddxx 发表于 2022-5-17 06:35 | 显示全部楼层
应该是优化掉了,按你的代码,只会执行代码33
laocuo1142 发表于 2022-5-17 08:12 | 显示全部楼层
估计被优化了,uint8_t  i=0加上volatile uint8_t  i;
sxy4517 发表于 2022-5-17 08:25 | 显示全部楼层
程序存在的问题:
1.temp有可能会溢出。
2.for循环后i==12,else语句不会执行。
dwdsp 发表于 2022-5-17 08:30 | 显示全部楼层
配置里C栏优化等级调为Level0试试
ROSHEN_007 发表于 2022-5-17 08:38 | 显示全部楼层
你这个函数最后执行后其实就是个赋值,只执行这块如果优化等级高的话,就是个赋值语句,不会进行函数调用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| ssf621 发表于 2022-5-18 08:37 | 显示全部楼层
谢谢以上各位兄弟的回复,代码确实有问题,公司搬家没仔细看,代码确实被优化了,问题已经解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

165

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部