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

下载本文档

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

文档简介

STM32F103 内部温度传感器 用串口传递到PC上显示程序如下:#include stm32f10x.h#include stm32_eval.h#include stm32f10x_conf.h#include #define DR_ADDRESS (uint32_t)0x4001244C) /ADC1 DR寄存器基地址USART_InitTypeDef USART_InitStructure; /串口初始化结构体声明ADC_InitTypeDef ADC_InitStructure; /ADC初始化结构体声明DMA_InitTypeDef DMA_InitStructure; /DMA初始化结构体声明_IO uint16_t ADCConvertedValue; / 在内存中声明一个可读可写变量用来存放AD的转换结果,低12 位有效void ADC_GPIO_Configuration(void);static void Delay_ARMJISHU(_IO uint32_t nCount) for (; nCount != 0; nCount-);int main(void) u16 ADCConvertedValueLocal; 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); /* Enable DMA1 clock */ 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的转换模式为SRC模式,由外设搬移到内存 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); /* Enable DMA1 channel1 */ DMA_Cmd(DMA1_Channel1, ENABLE); /* Enable ADC1 and GPIOC clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE); /使能ADC和GPIOC时钟 /* ADC1 configuration -*/ 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); /* ADC1 regular channel13 configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_55Cycles5); /ADC通道组, 第11个通道 采样顺序1,转换时间 /* Enable ADC1 DMA */ ADC_DMACmd(ADC1, ENABLE); /ADC命令,使能 /* Enable ADC1 */ ADC_TempSensorVrefintCmd(ENABLE); /使能温度传感器和内部参考电压通道 ADC_Cmd(ADC1, ENABLE); /开启ADC1/* Enable ADC1 reset calibaration register */ ADC_ResetCalibration(ADC1); /重新校准 /* Check the end of ADC1 reset calibration register */ while(ADC_GetResetCalibrationStatus(ADC1); /等待重新校准完成 /* Start ADC1 calibaration */ ADC_StartCalibration(ADC1);/开始校准 /* Check the end of ADC1 calibration */ while(ADC_GetCalibrationStatus(ADC1); /等待校准完成 /* Start ADC1 Software Conversion */ ADC_SoftwareStartConvCmd(ADC1, ENABLE);/连续转换开始,ADC通过DMA方式不断的更新RAM区。 while (1) vu16 Temperature,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(rn 当前STM32芯片内部温度为:%d%d%d%d% .nr, a, b, c, d); Delay_ARMJISHU(8000000); void ADC_GPIO_Configuration(void) /ADC配置函数 GPIO_InitTypeDef GPIO_InitStructure; /PC0 作为模拟通道10输入引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; /管脚1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;/输入模式 GPIO_Init(GPIOC, &GPIO_InitStructure); /GPIO组超级终端显示如下:关于一些数据格式的定义解释:#ifndef _STM32F10x_TYPE_H#define _STM32F10x_TYPE_Htypedef signed longs32;typedef signed short s16;typedef signed chars8;typedef signed longconst sc32;typedef signed short const sc16;typedef signed charconst sc8;typedef volatile signed longvs32;typedef volatile signed short vs16;typedef volatile signed charvs8;typedef volatile signed longconst vsc32;typedef volatile signed short const vsc16;typedef volatile signed charconst vsc8;typedef unsigned longu32;typedef unsigned short u16;typedef unsigned charu8;typedef unsigned longconst uc32;typedef unsigned short const uc16;typedef unsigned charconst uc8;typedef volatile unsigned longvu32;typedef volatile unsigned short vu16;typedef volatile unsigned charvu8;typedef volatile unsigned longconst vuc32;typedef volatile unsigned short const vuc16;typedef volatile unsigned charconst vuc8;typedef enum FALSE = 0, TRUE = !FALSE bool;typedef enum RESET = 0, SET = !RESET FlagStatus, ITStatus;typedef enum DISABLE = 0, ENABLE = !DISABLE FunctionalState;#define IS_FUNCTIONAL_STATE(STATE) (STATE) = DISABLE) | (STATE) = ENABLE)typedef enum ERROR = 0, SUCCESS = !ER

温馨提示

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

评论

0/150

提交评论