STM32下的PT100驱动程序,适用于ucos系统.doc_第1页
STM32下的PT100驱动程序,适用于ucos系统.doc_第2页
STM32下的PT100驱动程序,适用于ucos系统.doc_第3页
STM32下的PT100驱动程序,适用于ucos系统.doc_第4页
STM32下的PT100驱动程序,适用于ucos系统.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*文件名称 : HAL_ADC.h*版 本 : *说 明 : */extern unsigned short int LED1_AdcValue;/extern unsigned short int LED2_AdcValue;/extern unsigned short int PTC100_AdcValue;extern unsigned short int TEST1_AdcValue;extern unsigned short int TEST2_AdcValue;/* 提供给其他C文件调用的函数 */void ADC_ReadInit(void);void AdcPro(void);/*文件名称 : HAL_PT100.c*版 本 : *说 明 : PT100温度传感器驱动*/#include bsp.hconst unsigned short int PT100_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_T PT100_Driver;/*PT100阻值的计算公式为pt = 8.932*ad/i -k,pt-指PT100在某个温度下的电阻值*100,ad-是读出来的ad值,i-恒流源电流,单位mAk-是一个固定补偿值,指PT100导线的电阻乘以100比如导线固定电阻=1,则k=100.返回值:温度值,单位为0.1。*/unsigned short int pt;short int ReadTempereture(void)/unsigned int i; /unsigned short int pt;unsigned char j,k;short int temp;float a,b,c;#ifdef BOARD_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 = (unsigned short int)(a*100);#else/a = (float)PTC100_AdcValue * 45.0 / 1024.0 * 100.0;a = (float)PTC100_AdcValue*300/32768/0.87; /PTC100_ADC = 20306pt = (unsigned short int)(a*100);#endif#ifdef BOARD_V20170103a = 604.0 * 51 *100 / 32768 / 47;pt = PTC100_AdcValue * a - 5100;#endiffor(j=0; j251; j+)if(pt PT100_Tablej)break;if(j=0)return -500;else if(j=251)return 2000;elsetemp = j-50-1;temp *= 10;for(k=0; k10; k+)if(pt PT100_Tablej-1+(unsigned char)(3.8*k)break;temp += k;return temp;/*函 数 名: RToTemp *功能说明: 电阻温度转换函数*形 参: *R: 输入的电阻值*返 回 值: short int温度*/short int RToTemp(float R)unsigned short int pt;unsigned char j,k;short int temp;pt = (unsigned short int)R*100;for(j=0; j251; j+)if(pt PT100_Tablej)break;if(j=0)return -500;else if(j=251)return 2000;elsetemp = j-50-1;temp *= 10;for(k=0; k10; k+)if(pt 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; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;DMA_Init(DMA2_Stream3, &DMA_InitStructure);DMA_Cmd(DMA2_Stream3, ENABLE); void PT100_ADC_Config(void) GPIO_InitTypeDef GPIO_InitStructure;ADC_InitTypeDef ADC_InitStructure;ADC_CommonInitTypeDef ADC_CommonInitStructure; /* 使能 ADC2 and GPIOC clock */RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA , ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2, ENABLE);/* 配置PA1为模拟输入(ADC123 Channel1) PT100检测输入 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/ADC_DeInit();/* ADC Common 配置 -*/ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;/ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div8; ADC_CommonInit(&ADC_CommonInitStructure);/* ADC2 regular channel 12 con figuration */ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;/ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfConversion = 1;/* 1个转换在规则序列中 也就是转换规则序列5 */ ADC_Init(ADC2, &ADC_InitStructure);/*使能DMA请求(单ADC模式) */ADC_DMARequestAfterLastTransferCmd(ADC2, ENABLE);/* 使能 ADC2 DMA */ ADC_DMACmd(ADC2, ENABLE);/* 配置ADC2 规则通道12 channel12 configuration */ADC_RegularChannelConfig(ADC2, ADC_Channel_1, 1, ADC_SampleTime_56Cycles);/* 使能 ADC2 */ADC_Cmd(ADC2, ENABLE);/* 软件使能ADC2转换 */ ADC_SoftwareStartConv(ADC2);void PT100_Config(void)/ PT100_DMA_Config();/PT100_ADC_Config();void PT100Init(void)PT100_Config();PT100_Driver.ReadTemp = ReadTempereture;/unsigned short int PTC100_AdcValue;static unsigned short int OverSampCal1(unsigned short int *adc)unsigned char i;unsigned int j;j=0;for(i=0;i=3;return (unsigned short int)j;static unsigned short int CalAdcValue2(unsigned short int *adc)unsigned char i,j;unsign

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论