STM32-内部温度传感器-串口显示-完整程序文件_第1页
STM32-内部温度传感器-串口显示-完整程序文件_第2页
STM32-内部温度传感器-串口显示-完整程序文件_第3页
STM32-内部温度传感器-串口显示-完整程序文件_第4页
STM32-内部温度传感器-串口显示-完整程序文件_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

STM32F103内部温度传感器用串口传递到PC上显示程序如下:#include"stm32f10x.h"#include"stm32_eval.h"#include"stm32f10x_conf.h#include<stdio.h>#defineDR_ADDRESS((uint32_t)0x4001244C)〃ADC1DR寄存器基地址USART_InitTypeDefUSART_InitStructure;〃串口初始化结构体声明ADC_InitTypeDefADC_InitStructure;明DMA_InitTypeDefDMA_InitStructure;声明ADC_InitTypeDefADC_InitStructure;明DMA_InitTypeDefDMA_InitStructure;明__IOuint16_tADCConvertedValue;//ADC初始化结构体声//DMA初始化结构体声//在内存中声明一个可读可写变量用来存放AD的转换结果.低12位有效voidADC_GPIO_Configuration(void);staticvoidDelay_ARMJISHU(__IOuint32_tnCount){for(;nCount!=0;nCount--);}intmain(void){u16ADCConvertedValueLocal;USART_InitStructure.USART_BaudRate=115200;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;STM_EVAL_COMInit(COM1,&USART_InitStructure);/*EnableDMA1clock*/RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);DMA_DeInit(DMA1_Channel1);//开启DMA1勺第一通道DMA_InitStructure.DMA_PeripheralBaseAddr=DR_ADDRESS;DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)&ADCConvertedValue;DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;//DMA的转换模式为SRCJI式.由外设搬移到内存DMA_InitStructure.DMA_BufferSize=1;//DMA缓存大小,1个DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;//接收一次数据后,设备地址禁止后移

DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Disable;//关闭接收一次数据后.目标内存地址后移DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;〃定义外设数据宽度为16位DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;//DMA搬移数据尺寸,HalfWord就是为16位DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;//转换模式,循环缓存模式。DMA_InitStructure.DMA_Priority=DMA_Priority_High;//DMA优先级高DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;//M2M模式禁用DMA_Init(DMA1_Channel1,&DMA_InitStructure);/*EnableDMA1channell*/DMA_Cmd(DMA1_Channel1,ENABLE);/*EnableADC1andGPIOCclock*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOC,ENABLE);//使能ADCf口GPIOC寸钟/*ADC1configuration*//*ADC1configuration*/ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//独立的转换模式ADC_InitStructure.ADC_ScanConvMode=ENABLE;//开启扫描模式ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//开启连续转换模式ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//ADC外部开关.关闭状态ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//对齐方式,ADC为12位中.右对齐方式ADC_InitStructure.ADC_NbrOfChannel=1;//开启通道数.1个ADC_Init(ADC1,&ADC_InitStructure);/*ADC1regularchannel13configuration*/ADC_RegularChannelConfig(ADC1,ADC_Channel_16,1,ADC_SampleTime_55Cycles5);//ADC通道组.第11个通道采样顺序1.转换时间/*EnableADC1DMA*/ADC_DMACmd(ADC1,ENABLE);//ADC命令.使能/*EnableADC1*/ADC_TempSensorVrefintCmd(ENABLE);//使能温度传感器和内部参考电压通道ADC_Cmd(ADC1,ENABLE);〃开启ADC1/*EnableADC1resetcalibarationregister*/ADC_ResetCalibration(ADC1);//重新校准/*ChecktheendofADC1resetcalibrationregister*/while(ADC_GetResetCalibrationStatus(ADC1));//等待重新校准完成/*StartADC1calibaration*/ADC_StartCalibration(ADC1);//开始校准/*ChecktheendofADC1calibration*/while(ADC_GetCalibrationStatus(ADC1));//等待校准完成/*StartADC1SoftwareConversion*/ADC_SoftwareStartConvCmd(ADC1,ENABLE);//连续转换开始.ADC通过DM防式不断的更新RAME。while(1){vu16Temperature,a,b,c,d;ADCConvertedValueLocal=ADCConvertedValue;Temperature=(1.43-ADCConvertedValueLocal*3.3/4096)*1000/4.35+25;ADCConvertedValueLocal=Temperature;a=ADCConvertedValueLocal/1000;b=(ADCConvertedValueLocal-a*1000)/100;c=(ADCConvertedValueLocal-a*1000-b*100)/10;d=ADCConvertedValueLocal-a*1000-b*100-c*10;printf("\r\n当前STM32K片内部温度为:%d%d%d%d%\n'r",a,b,c,d);Delay_ARMJISHU(8000000);}}voidADC_GPIO_Configuration(void)//ADC配置函数{GPIO_InitTypeDefGPIO_InitStructure;//PC0作为模拟通道10输入引脚GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//管脚1GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//输入模式GPIO_Init(GPIOC,&GPIO_InitStructure);//GPIO组}超级终端显示如下当前STM32芯片内部温度为:0048r当前STM32芯片内部温度为:0047^当前STM32芯片内部温度为:0048^0当前STM32芯片内部温度为二0047^当前3TM32芯片内部温度为:0047当前STM32芯片内部温度为二0047*0当前STM32芯片内部温度为:0047当前STM32芯片内部温度为二0047^当前STM32芯片内部温度为:0047当前STM32芯片内部温度为二00G七当前STM32芯片内部温度为:0046^0当前STM32芯片内部温度为:0B46X:关于一些数据格式的定义解释:#ifndef__STM32F10x_TYPE_H#define__STM32F10x_TYPE_Htypedefsignedlongs32;typedefsignedshorts16;typedefsignedchars8;typedefsignedlongconstsc32;typedefsignedshortconstsc16;typedefsignedcharconstsc8;vs32;typedefvolatilesignedlongvs32;typedefvolatilesignedshortvs16;TOC\o"1-5"\h\ztypedefvolatilesignedcharvs8;typedefvolatilesignedlongconstvsc32;typedefvolatilesignedshortconstvsc16;typedefvolatilesignedcharconstvsc8;typedefunsignedlongu32;typedefunsignedshortu16;typedefunsignedcharu8;typedefunsignedlongconstuc32;typedefunsignedshortconstuc16;typedefunsignedcharconstuc8;typedefvolatileunsignedlongvu32;typedefvolatileunsignedshortvu16;typedefvolatileunsignedcharvu8;typedefvolatileunsignedlongconstvuc32;typedefvolatileunsignedshortconstvuc16;typedefvolatileunsignedcharconstvuc8;typedefenum{FALSE=0,TRUE=!FALSE}bool;typedefenum{RESET=0,SET=!RESET}FlagStatus,ITStatus;typedefenum{DISABLE=0,ENABLE=!DISABLE}FunctionalState;#defineIS_FUNCTIONAL_STATE(STATE)(((STATE)==DISABLE)||((STATE)==ENABLE))typedefenum{ERROR=0,SUCCESS=!ERROR}ErrorStatu

温馨提示

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

评论

0/150

提交评论