资源简介
STM32F103RCT6程序例——电压测量例
代码片段和文件信息
#include “adc.h“
uint16_t adc_mem[QUEUE_LEN]; //ADC缓冲队列
int ADC_LEN = 8; //对列长度
int ADC_NUM = 3; //相当于除数
void ADC_Config(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ENABLE); //开启adc1和GPIOA的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN; //配置PA1,PA2位模拟输入模式
GPIO_Init(GPIOA &GPIO_InitStruct); //注册到结构体
ADC_DeInit(ADC1); //将adc配置为缺省值
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent ; //adc 为独立转换模式
ADC_InitStructure.ADC_ScanConvMode = ENABLE ;//使能各通道扫描
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE ;//设置为连续转换模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None ;//没有外部触发
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right ;//adc 数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 2 ; //adc通道数为2个
ADC_Init(ADC1 &ADC_InitStructure) ;//注册到结构体
/* ADC1 regular channels configuration */
ADC_RegularChannelConfig(ADC1 ADC_Channel_0 1 ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1 ADC_Channel_1 2 ADC_SampleTime_71Cycles5);
ADC_DMACmd(ADC1ENABLE);
/* Enable ADC1 */
ADC_Cmd(ADC1 ENABLE);
/* Enable ADC1 reset calibration register */
ADC_ResetCalibration(ADC1);
/* Check the end of ADC1 reset calibration register */
while(ADC_GetResetCalibrationStatus(ADC1));
/* Start ADC1 calibration */
ADC_StartCalibration(ADC1);
/* Check the end of ADC1 calibration */
while(ADC_GetCalibrationStatus(ADC1));
ADC_SoftwareStartConvCmd(ADC1 ENABLE);
}
void DMA_Config(void){
DMA_InitTypeDef DMA_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 ENABLE);
DMA_DeInit(DMA1_Channel1);
DMA_InitStruct.DMA_PeripheralbaseAddr = (uint32_t)&ADC1->DR; //dma外设地址为adc的数据寄存器
DMA_InitStruct.DMA_MemorybaseAddr = (uint32_t)&adc_mem;
DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralSRC;//内存作为数据目的地
DMA_InitStruct.DMA_BufferSize = QUEUE_LEN ;//DMA深度为队列的总长度 这里是16
DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外设地址固定不变
DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;//内存地址自动修改
DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//外设半字长
DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//内存半字长
DMA_InitStruct.DMA_Mode = DMA_Mode_Circular;//dma循环方式,到达adc_mem末地址后自动返回到开始地址
DMA_InitStruct.DMA_Priority = DMA_Priority_High;//dma为高优先级
DMA_InitStruct.DMA_M2M = DMA_M2M_Disable;//禁止mem之间dma
DMA_Init(DMA1_Channel1 &DMA_InitStruct);//注册到结构体
DMA_Cmd(DMA1_Channel1 ENABLE);
}
/*
入口参数 channel 通道值
功能:在dma的缓冲队列中取出相应通道的ad值求和并且平均值滤波
返回值:滤波后的对应通道的ad值
*/
uint16_t read_adc(uint8_t channel)
{
uint32_t temp = 0;
uint16_t adc_val=0;
int
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-12-19 12:08 电压测量程序例\
文件 3577 2016-11-19 00:52 电压测量程序例\core_cm3.crf
目录 0 2016-12-19 12:08 电压测量程序例\drive\
文件 3413 2016-11-22 22:09 电压测量程序例\drive\adc.c
文件 201 2015-08-31 09:55 电压测量程序例\drive\adc.h
文件 1501 2015-07-07 15:17 电压测量程序例\drive\key.c
文件 176 2015-07-07 15:14 电压测量程序例\drive\key.h
文件 897 2015-07-07 11:10 电压测量程序例\drive\Systick.c
文件 404 2015-07-07 11:10 电压测量程序例\drive\Systick.h
文件 1843 2015-09-01 20:28 电压测量程序例\drive\tim.c
文件 266 2015-08-31 09:49 电压测量程序例\drive\tim.h
文件 1938 2015-09-01 20:41 电压测量程序例\drive\uart.c
文件 219 2015-08-31 09:29 电压测量程序例\drive\uart.h
文件 82718 2016-11-22 22:09 电压测量程序例\Jli
文件 671 2016-11-19 00:50 电压测量程序例\Jli
目录 0 2016-12-19 12:08 电压测量程序例\LCD12864\
目录 0 2016-12-19 12:08 电压测量程序例\LCD1602\
文件 2289 2015-09-01 20:35 电压测量程序例\LCD1602\lcd1602.c
文件 511 2015-09-01 22:21 电压测量程序例\LCD1602\lcd1602.h
目录 0 2016-12-19 12:08 电压测量程序例\lib\
目录 0 2016-12-19 12:08 电压测量程序例\lib\inc\
文件 43603 2015-07-08 22:15 电压测量程序例\lib\inc\font.h
文件 8982 2014-11-09 16:24 电压测量程序例\lib\inc\misc.h
文件 715 2015-07-07 12:47 电压测量程序例\lib\inc\spi.h
文件 21690 2014-11-09 16:24 电压测量程序例\lib\inc\stm32f10x_adc.h
文件 7555 2014-11-09 16:24 电压测量程序例\lib\inc\stm32f10x_bkp.h
文件 27559 2014-11-09 16:24 电压测量程序例\lib\inc\stm32f10x_can.h
文件 6573 2014-11-09 16:24 电压测量程序例\lib\inc\stm32f10x_cec.h
文件 2162 2014-11-09 16:24 电压测量程序例\lib\inc\stm32f10x_crc.h
文件 15233 2014-11-09 16:24 电压测量程序例\lib\inc\stm32f10x_dac.h
文件 3818 2014-11-09 16:24 电压测量程序例\lib\inc\stm32f10x_dbgmcu.h
............此处省略165个文件信息
相关资源
- STM32程序使用VS1053和2401做对讲机
- 8乘*8无冲突矩阵键盘STM32程序
- stm32程序Keil直流电机算法控制之PID控
- MS5837水深传感器-stm32程序源码
- BH1750FVI传感器stm32程序
- stm32f103竞赛板的一个流水灯程序,是
- 基于PE4302的步进衰减以及对应的51程序
- BH1750光强传感器的STM32程序
- HLW8032功率计量芯片stm32程序及资料
- ILI9341中文手册+STM32程序
- U盘升级stm32程序,使用CH376芯片电路
- pulse sensor中文资料+Stm32f103程序
- SWD模式下调试STM32程序的方法
- IAR下stm32程序
- 兼容超级终端Ymodem协议的stm32程序更新
- TCS-34725 stm32程序
- 思岚激光雷达小车程序stm32程序
- 开源三轴无刷云台算法STM32程序带注释
- 基于gprs的udp连接stm32程序代码
- AM2302(DHT22)串口显示温湿度STM32程序
- CS1237芯片STM32F103驱动程序与数据手册
- US-100超声波六路检测STM32程序捕获方式
- PCF8563+STM32程序
- TN905/TN901红外测温模块STM32程序
- AT24C02 STM32程序
- EC11编码器基于STM32程序源码
评论
共有 条评论