您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > STM32下的PT100驱动程序,适用于ucos系统
/***********************************************************************************************************文件名称:HAL_ADC.h*版本:*说明:***********************************************************************************************************///externunsignedshortintLED1_AdcValue;//externunsignedshortintLED2_AdcValue;//externunsignedshortintPTC100_AdcValue;externunsignedshortintTEST1_AdcValue;externunsignedshortintTEST2_AdcValue;/*提供给其他C文件调用的函数*/voidADC_ReadInit(void);voidAdcPro(void);/***********************************************************************************************************文件名称:HAL_PT100.c*版本:*说明:PT100温度传感器驱动***********************************************************************************************************/#includebsp.hconstunsignedshortintPT100_Table[]={8031,8070,8110,8150,8189,8229,8269,8308,8348,8387,/*-50------41℃*/8427,8467,8506,8546,8585,8625,8664,8704,8743,8783,/*-40------31℃*/8822,8862,8901,8940,8980,9019,9059,9098,9137,9177,/*-30------21℃*/9216,9255,9295,9334,9373,9412,9452,9491,9530,9569,/*-20------11℃*/9609,9648,9687,9726,9765,9804,9844,9883,9922,9961,/*-10------1℃*/10000,10039,10078,10117,10156,10195,10234,10273,10312,10351,/*0-----9℃*/10390,10429,10468,10507,10546,10585,10624,10663,10702,10740,/*10-----19℃*/10779,10818,10857,10896,10935,10973,11012,11051,11090,11129,/*20-----29℃*/11167,11206,11245,11283,11322,11361,11400,11438,11477,11515,/*30-----39℃*/11554,11593,11631,11670,11708,11747,11786,11824,11863,11901,/*40-----49℃*/11940,11978,12017,12055,12094,12132,12171,12209,12247,12286,/*50-----59℃*/12324,12363,12401,12439,12478,12516,12554,12593,12631,12669,/*60-----69℃*/12708,12746,12784,12822,12861,12899,12937,12975,13013,13052,/*70-----79℃*/13090,13128,13166,13204,13242,13280,13318,13357,13395,13433,/*80-----89℃*/13471,13509,13547,13585,13623,13661,13699,13737,13775,13813,/*90-----99℃*/13851,13888,13926,13964,14002,14040,14078,14116,14154,14191,/*100-----109℃*/14229,14267,14305,14343,14308,14418,14456,14494,14531,14569,/*110-----119℃*/14607,14644,14682,14720,14757,14795,14833,14870,14908,14946,/*120-----129℃*/14983,15021,15058,15096,15133,15171,15208,15246,15286,15321,/*130-----139℃*/15358,15396,15433,15471,15508,15546,15583,15620,15658,15695,/*140-----149℃*/15733,15770,15807,15845,15882,15919,15956,15994,16031,16068,/*150-----159℃*/16105,16143,16180,16217,16254,16291,16329,16366,16403,16440,/*160-----169℃*/16477,16514,16551,16589,16626,16663,16700,16737,16774,16811,/*170-----179℃*/16848,16885,16922,16959,16996,17033,17070,17107,17143,17180,/*180-----189℃*/17217,17054,17294,17328,17365,17402,17438,17475,17512,17549,/*190-----199℃*/17586,/*200℃*/};PT100_Driver_TPT100_Driver;/*PT100阻值的计算公式为pt=8.932*ad/i-k,pt----指PT100在某个温度下的电阻值*100,ad----是读出来的ad值,i-----恒流源电流,单位mAk-----是一个固定补偿值,指PT100导线的电阻乘以100比如导线固定电阻=1Ω,则k=100.返回值:温度值,单位为0.1℃。*/unsignedshortintpt;shortintReadTempereture(void){//unsignedinti;//unsignedshortintpt;unsignedcharj,k;shortinttemp;floata,b,c;#ifdefBOARD_V123//a=(float)PTC100_AdcValue*45.0/1024.0*100.0;a=(float)PTC100_AdcValue*1000*9/50/65536*(10+2.1)/10.0;//PTC100_ADC=20306原是*(10+2.2)pt=(unsignedshortint)(a*100);#else//a=(float)PTC100_AdcValue*45.0/1024.0*100.0;a=(float)PTC100_AdcValue*300/32768/0.87;//PTC100_ADC=20306pt=(unsignedshortint)(a*100);#endif#ifdefBOARD_V20170103a=604.0*51*100/32768/47;pt=PTC100_AdcValue*a-5100;#endiffor(j=0;j251;j++){if(ptPT100_Table[j]){break;}}if(j==0){return-500;}elseif(j==251){return2000;}else{temp=j-50-1;temp*=10;}for(k=0;k10;k++){if(ptPT100_Table[j-1]+(unsignedchar)(3.8*k)){break;}}temp+=k;returntemp;}/***********************************************************************************************************函数名:RToTemp*功能说明:电阻温度转换函数*形参:*R:输入的电阻值**返回值:shortint温度**********************************************************************************************************/shortintRToTemp(floatR){unsignedshortintpt;unsignedcharj,k;shortinttemp;pt=(unsignedshortint)R*100;for(j=0;j251;j++){if(ptPT100_Table[j]){break;}}if(j==0){return-500;}elseif(j==251){return2000;}else{temp=j-50-1;temp*=10;}for(k=0;k10;k++){if(ptPT100_Table[j-1]+(unsignedchar)(3.8*k)){break;}}temp+=k;returntemp;}unsignedshortintPT100AdcValue[64];voidPT100_DMA_Config(void){DMA_InitTypeDefDMA_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2,ENABLE);/*DMA2Stream3channel3配置**************************************/DMA_InitStructure.DMA_Channel=DMA_Channel_1;DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32_t)&ADC2-DR;DMA_InitStructure.DMA_Memory0BaseAddr=(uint32_t)PT100AdcValue;DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralToMemory;DMA_InitStructure.DMA_BufferSize=64;//64;DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;DMA_InitStructure.DMA_Priority=DMA_Priority_High;DMA_InitStructure.DMA_FIFOMode=DMA_FIFOMode_Disable;D
本文标题:STM32下的PT100驱动程序,适用于ucos系统
链接地址:https://www.777doc.com/doc-4358344 .html