找回密码
 立即注册
查看: 632|回复: 12

32G12K128, printf函数影响NTC测温程序?有printf函数,数码管上才有温度数

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-10-04 22:23:07

2

主题

8

回帖

50

积分

注册会员

积分
50
发表于 2024-9-15 20:10:50 | 显示全部楼层 |阅读模式
我学习的老师是冲哥的STC32G试验箱,买的是9.4试验箱,结果再写NTC测温时,出现了问题。
我写的程序实现的功能是用NTC测温,并将温度值显示到数码管上,同时,数码管设置的默认显示是8个"-"。
但是我发现我的程序只有当有printf时,数码管才会显示温度数值,如果把printf函数注释掉,数码管就是默认值。
我是嵌入式小白,第一次学ADC,求求大佬帮我看看吧{:5_270:}{:5_270:}{:5_270:}
main.c文件:(头文件包含没粘贴过来)

bit TIM_10MS_FLAG=0;
uint32_t TimCount=0;

int Temperature;
u8 Temp_Count=0;
void main()
{        
        
        USB_Download();
        Timer0_Init();
        ADC_Init();

        while(1)
        {
               
                if(DeviceState != DEVSTATE_CONFIGURED )
                        continue;
                if(bUsbOutReady)
                {
                        usb_OUT_done();
                        printf("温度:%d\n",ADC_Value_INT);
                }
                if(TIM_10MS_FLAG==1)
                {        
                        TIM_10MS_FLAG=0;
                        Temp_Count++;
                        if(Temp_Count==20)
                        {
                                Temp_Count=0;
               
                                Temperature=NTC_CalTemp(ADC_Value_INT);
                                if(Temperature>=0)
                                {
                                        SEG0=Temperature/1000%10;
                                        SEG1=Temperature/100%10;
                                        SEG2=Temperature/10%10 + 10;
                                        SEG3=Temperature%10;
                                }
                                else
                                {
                                        Temperature= -Temperature;
                                        SEG0=22;
                                        SEG1=Temperature/100%10;
                                        SEG2=Temperature/10%10 + 10;
                                        SEG3=Temperature%10;
                                }
                                
                        }
                }
        
        
        }

}




void Timer0_Isr(void) interrupt 1
{        
        SEG_LED_Display();
        TimCount++;
        if(TimCount>10)
        {
                TIM_10MS_FLAG=1;
                TimCount=0;
        }
}

ADC使用的是中断方式:  (ADC.c)


u16 ADC_Value_INT;
u16 BGV=0;


void ADC_Init(void)   //
{
    P1M0 = 0x00;
        P1M1 = 0x08;  //配置P13口位高阻输入
        ADC_CONTR &=0XE0;  //选择通道
        ADC_CONTR |=0X03;
        
        ADC_POWER=1;  //打开ADC电源
        ADCTIM=0X3F;  //配置ADC时序
        ADCCFG=0X2F;  //设置ADC转换结果为右对齐 ADC时钟为最低
        EADC=1;
        ADC_START=1;
}

void ADC_Isr(void) interrupt 5
{
        ADC_FLAG=0;
        ADC_Value_INT= (ADC_RES<<8) + ADC_RESL;
        ADC_START=1;
}

ADC.H文件:

#ifndef _ADC_H
#define _ADC_H

void ADC_Init(void);
extern u16 ADC_Value_INT;

#endif

NTC.c文件:


#include <STC32G.H>
#include "stc.h"

u16 NTC_ADCTable[191]=
{
//  ADC数值          温度        序号
        3956,         //-40        0
        3947,         //-39        1
        3937,         //-38        2
        3928,         //-37        3
        3918,         //-36        4
        3908,         //-35        5
        3897,         //-34        6
        3886,         //-33        7
        3874,         //-32        8
        3863,         //-31        9
        3850,         //-30        10
        3837,         //-29        11
        3824,         //-28        12
        3810,         //-27        13
        3795,         //-26        14
        3779,         //-25        15
        3763,         //-24        16
        3747,         //-23        17
        3729,         //-22        18
        3711,         //-21        19
        3693,         //-20        20
        3673,         //-19        21
        3653,         //-18        22
        3632,         //-17        23
        3610,         //-16        24
        3587,         //-15        25
        3563,         //-14        26
        3538,         //-13        27
        3513,         //-12        28
        3486,         //-11        29
        3458,         //-10        30
        3429,         //-9        31
        3400,         //-8        32
        3369,         //-7        33
        3338,         //-6        34
        3305,         //-5        35
        3272,         //-4        36
        3238,         //-3        37
        3203,         //-2        38
        3167,         //-1        39
        3131,         //0                40
        3093,         //1                41
        3055,         //2                42
        3016,         //3                43
        2977,         //4                44
        2936,         //5                45
        2895,         //6                46
        2853,         //7                47
        2811,         //8                48
        2768,         //9                49
        2725,         //10        50
        2682,         //11        51
        2637,         //12        52
        2593,         //13        53
        2548,         //14        54
        2503,         //15        55
        2458,         //16        56
        2412,         //17        57
        2366,         //18        58
        2321,         //19        59
        2275,         //20        60
        2229,         //21        61
        2184,         //22        62
        2138,         //23        63
        2093,         //24        64
        2048,         //25        65
        2003,         //26        66
        1959,         //27        67
        1914,         //28        68
        1871,         //29        69
        1827,         //30        70
        1784,         //31        71
        1742,         //32        72
        1699,         //33        73
        1658,         //34        74
        1617,         //35        75
        1577,         //36        76
        1537,         //37        77
        1498,         //38        78
        1459,         //39        79
        1421,         //40        80
        1384,         //41        81
        1348,         //42        82
        1312,         //43        83
        1277,         //44        84
        1243,         //45        85
        1209,         //46        86
        1176,         //47        87
        1144,         //48        88
        1112,         //49        89
        1082,         //50        90
        1052,         //51        91
        1023,         //52        92
        994 ,        //53        93
        966 ,        //54        94
        939 ,        //55        95
        913 ,        //56        96
        887 ,        //57        97
        862 ,        //58        98
        837 ,        //59        99
        813 ,        //60        100
        790 ,        //61        101
        768 ,        //62        102
        745 ,        //63        103
        724 ,        //64        104
        703 ,        //65        105
        683 ,        //66        106
        664 ,        //67        107
        644 ,        //68        108
        626 ,        //69        109
        608 ,        //70        110
        590 ,        //71        111
        573 ,        //72        112
        557 ,        //73        113
        541 ,        //74        114
        525 ,        //75        115
        510 ,        //76        116
        495 ,        //77        117
        481 ,        //78        118
        468 ,        //79        119
        454 ,        //80        120
        441 ,        //81        121
        429 ,        //82        122
        417 ,        //83        123
        405 ,        //84        124
        394 ,        //85        125
        382 ,        //86        126
        372 ,        //87        127
        361 ,        //88        128
        351 ,        //89        129
        342 ,        //90        130
        332 ,        //91        131
        323 ,        //92        132
        314 ,        //93        133
        305 ,        //94        134
        297 ,        //95        135
        289 ,        //96        136
        281 ,        //97        137
        274 ,        //98        138
        266 ,        //99        139
        259 ,        //100        140
        252 ,        //101        141
        246 ,        //102        142
        239 ,        //103        143
        233 ,        //104        144
        227 ,        //105        145
        221 ,        //106        146
        215 ,        //107        147
        209 ,        //108        148
        204 ,        //109        149
        199 ,        //110        150
        194 ,        //111        151
        189 ,        //112        152
        184 ,        //113        153
        179 ,        //114        154
        175 ,        //115        155
        170 ,        //116        156
        166 ,        //117        157
        162 ,        //118        158
        158 ,        //119        159
        154 ,        //120        160
        150 ,        //121        161
        146 ,        //122        162
        143 ,        //123        163
        139 ,        //124        164
        136 ,        //125        165
        133 ,        //126        166
        129 ,        //127        167
        126 ,        //128        168
        123 ,        //129        169
        120 ,        //130        170
        117 ,        //131        171
        114 ,        //132        172
        112 ,        //133        173
        109 ,        //134        174
        106 ,        //135        175
        104 ,        //136        176
        101 ,        //137        177
        99         ,        //138        178
        97         ,        //139        179
        94         ,        //140        180
        92         ,        //141        181
        90         ,        //142        182
        88         ,        //143        183
        86         ,        //144        184
        84         ,        //145        185
        82         ,        //146        186
        80         ,        //147        187
        78         ,        //148        188
        76         ,        //149        189
        75         ,        //150        190
};

int NTC_CalTemp(u16 ADC_Value)
{
        u8 i;
        float Temp;
        if(ADC_Value > NTC_ADCTable[0] || ADC_Value < NTC_ADCTable[190])  //超出测量范围的输出 9999
        {
                return 9999;
        }
        else  
        {
                for(i=0;i<=190;i++)
                {
                        if( ADC_Value == NTC_ADCTable)
                        {
                                return (i-40)*10;
                        }
                        else if(ADC_Value < NTC_ADCTable)  continue;
                        else  
                        {
                                Temp = NTC_ADCTable[i-1] - ADC_Value;  //分子
                                Temp = Temp/(NTC_ADCTable[i-1] - NTC_ADCTable)*10; // x/y 为小数部分 为了返回小数,再乘以10
                                Temp += (i-1-40)*10;   //返回温度的整数部分
                                return Temp;
                        }
                }
        }
        return 9999;
}


NTC.H文件:

#ifndef _NTC_H
#define _NTC_H

int NTC_CalTemp(u16 ADC_Value);

#endif









有printf函数的现象

有printf函数的现象
没有printf函数的现象.png
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

907

积分

高级会员

积分
907
发表于 2024-9-15 20:50:55 | 显示全部楼层
             if(DeviceState != DEVSTATE_CONFIGURED )
                        continue;
                if(bUsbOutReady)
                {
                        usb_OUT_done();
                        printf("温度:%d\n",ADC_Value_INT);
                }
试一下把上面注释
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-10-04 22:23:07

2

主题

8

回帖

50

积分

注册会员

积分
50
发表于 2024-9-17 20:28:36 | 显示全部楼层
邮*** 发表于 2024-9-15 20:50
if(DeviceState != DEVSTATE_CONFIGURED )
                        continue;
              ...

还是不行
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

907

积分

高级会员

积分
907
发表于 2024-9-17 21:08:43 来自手机 | 显示全部楼层
T老崔 发表于 2024-9-17 20:28
还是不行


把工程文件发过来我看下
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-03 00:02:01
已绑定手机

19

主题

3191

回帖

4876

积分

论坛元老

积分
4876
发表于 2024-9-17 22:47:04 | 显示全部楼层
printf函数不会影响程序吧,估计是逻辑的问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-9-19 00:20:46 | 显示全部楼层
这种问题也是小白常遇到的,建议先把printf的应用和显示代码调利索了,测量和显示使用一个全局变量来传递,不要混到一起调试,这样很容易出现bug定位误差,调试代码中,表现状态和实际原因有时候根本无法靠脑子联系到一起,这需要耐心、细心和技巧。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-10-04 22:23:07

2

主题

8

回帖

50

积分

注册会员

积分
50
发表于 2024-10-1 17:16:15 | 显示全部楼层
邮*** 发表于 2024-9-17 21:08
把工程文件发过来我看下

对不起,耽误您一点时间了

15-NTC测温.zip

357.1 KB, 下载次数: 72

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-10-04 22:23:07

2

主题

8

回帖

50

积分

注册会员

积分
50
发表于 2024-10-1 17:17:47 | 显示全部楼层
晓*** 发表于 2024-9-19 00:20
这种问题也是小白常遇到的,建议先把printf的应用和显示代码调利索了,测量和显示使用一个全局变量来传递, ...

谢谢您,我是真的小白,我真的第一次知道还会有BUG定位误差这件事
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-10-04 22:23:07

2

主题

8

回帖

50

积分

注册会员

积分
50
发表于 2024-10-1 17:20:44 | 显示全部楼层
邮*** 发表于 2024-9-17 21:08
把工程文件发过来我看下

第一次用帖子,当时就是因为不知道怎么上传工程文件才直接发的代码文字,现在才知道还真能上传文件{:5_318:}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

907

积分

高级会员

积分
907
发表于 2024-10-1 19:25:59 | 显示全部楼层
你看下可不可以

15-NTC测温 (2).zip

358.52 KB, 下载次数: 66

REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 15:18 , Processed in 0.248516 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表