找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4510|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

STM32 ADC+DMA 讀取供電電壓值與內(nèi)部溫度傳感器值.兩路連續(xù)轉(zhuǎn)換模式

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:326783 發(fā)表于 2019-9-24 22:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
ADC讀取供電電壓值與內(nèi)部溫度傳感器值.兩路連續(xù)轉(zhuǎn)換模式.

vc_adc.c
  1. #include "vc_adc.h"
  2. //__IO u16 ADC_ConvertedValue[4][2];
  3. u16 ADC_ConvertedValue[4][2];
  4. /* 這里的ADC是暫時(shí)用來(lái)試驗(yàn)兩路AD轉(zhuǎn)換,一路是測(cè)量電壓,另一路是讀取內(nèi)部溫度值
  5. ** 暫時(shí)是用來(lái)測(cè)試的,以后測(cè)量電流一路.*/
  6. void Vc_AdcInit(void){
  7.   GPIO_InitTypeDef  GPIO_InitStructure;
  8.   ADC_InitTypeDef   ADC_InitStructure;
  9.   RCC_APB2PeriphClockCmd (RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA ,ENABLE );
  10.   RCC_ADCCLKConfig (RCC_PCLK2_Div6 ); /* 72M/6=12M */
  11.   
  12.   GPIO_InitStructure .GPIO_Mode = GPIO_Mode_AIN ;
  13.   GPIO_InitStructure .GPIO_Pin = VADC_PIN; // | CADC_PIN 這里暫時(shí)先檢測(cè)電壓這一路;
  14.   /* 因?yàn)槭禽斎?所以不需要設(shè)置速度 */
  15.   GPIO_Init (ADC_PORT ,&GPIO_InitStructure );
  16.   ADC_DeInit (ADC1 );
  17.   ADC_InitStructure .ADC_Mode = ADC_Mode_Independent ;  /* ADC獨(dú)立模式 */
  18.   //ADC_InitStructure .ADC_ScanConvMode = DISABLE ; /* 單通道模式*/
  19.   ADC_InitStructure .ADC_ScanConvMode = ENABLE ;    /* 多通道模式*/
  20.   //ADC_InitStructure .ADC_ContinuousConvMode = DISABLE ; /* 單次模式*/
  21.   ADC_InitStructure .ADC_ContinuousConvMode = ENABLE ;  /* 連續(xù)模式*/
  22.   ADC_InitStructure .ADC_ExternalTrigConv = ADC_ExternalTrigConv_None ;
  23.   ADC_InitStructure .ADC_DataAlign = ADC_DataAlign_Right ;
  24.   ADC_InitStructure .ADC_NbrOfChannel = 2;  /* 設(shè)置ADC路數(shù)為2路*/
  25.   ADC_Init (ADC1, &ADC_InitStructure );
  26.   ADC_TempSensorVrefintCmd (ENABLE );
  27.   ADC_RegularChannelConfig (ADC1 ,ADC_Channel_4 , 1, ADC_SampleTime_239Cycles5);  /* 規(guī)則通道1*/
  28.   ADC_RegularChannelConfig (ADC1 ,ADC_Channel_16 ,2, ADC_SampleTime_239Cycles5);  /* 規(guī)則通道2*/
  29.   ADC_DMACmd (ADC1 ,ENABLE );
  30.   ADC_Cmd (ADC1 ,ENABLE );
  31.   ADC_ResetCalibration (ADC1 );
  32.   while(ADC_GetResetCalibrationStatus (ADC1));
  33.   ADC_StartCalibration (ADC1 );
  34.   while(ADC_GetCalibrationStatus (ADC1 ));
  35.   ADC_SoftwareStartConvCmd (ADC1 ,ENABLE );
  36. }
  37. void DMA_Config(void){
  38.   
  39.   DMA_InitTypeDef DMA_InitStructure;
  40.   RCC_AHBPeriphClockCmd (RCC_AHBPeriph_DMA1 ,ENABLE );
  41.   DMA_DeInit (DMA1_Channel1);
  42.   DMA_InitStructure .DMA_PeripheralBaseAddr = (u32)&(ADC1 ->DR);
  43.   DMA_InitStructure .DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue ;
  44.   DMA_InitStructure .DMA_DIR = DMA_DIR_PeripheralSRC ; /* 外設(shè)作為數(shù)據(jù)來(lái)源*/
  45.   DMA_InitStructure .DMA_BufferSize =
  46.   DMA_InitStructure .DMA_PeripheralInc = DMA_PeripheralInc_Disable ;  /* 外設(shè)地址固定*/
  47.   DMA_InitStructure .DMA_MemoryInc = DMA_MemoryInc_Enable ; /* 內(nèi)存地址增加*/
  48.   DMA_InitStructure .DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord ; /* 16bit*/
  49.   DMA_InitStructure .DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord ;
  50.   DMA_InitStructure .DMA_Mode = DMA_Mode_Circular ;
  51.   DMA_InitStructure .DMA_Priority = DMA_Priority_High ;
  52.   DMA_InitStructure .DMA_M2M = DMA_M2M_Disable ;
  53.   DMA_Init (DMA1_Channel1 ,&DMA_InitStructure );
  54.   
  55.   DMA_Cmd (DMA1_Channel1 ,ENABLE );
  56. }

復(fù)制代碼

vc_adc.h
  1. #ifndef _vc_adc_H
  2. #define _vc_adc_H
  3. #include "stm32f10x.h"
  4. /*電壓ADC--PA4(ADC12-IN$)
  5. **電流ADC--PA3(ADC12-IN3)
  6. */
  7. #define VADC_PIN  GPIO_Pin_4
  8. #define CADC_PIN  GPIO_Pin_3
  9. #define ADC_PORT  GPIOA
  10. extern void Vc_AdcInit(void);
  11. extern void DMA_Config(void);


  12. #endif
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩1
回復(fù)

使用道具 舉報(bào)

6#
ID:1102070 發(fā)表于 2024-2-7 23:24 來(lái)自手機(jī) | 只看該作者
這里有
回復(fù)

使用道具 舉報(bào)

5#
ID:101305 發(fā)表于 2023-6-17 12:00 | 只看該作者
這代碼能用,能不能詳細(xì)把配置環(huán)境也貼出來(lái)
回復(fù)

使用道具 舉報(bào)

地板
ID:101305 發(fā)表于 2023-6-17 11:59 | 只看該作者
這代碼能用?配置環(huán)境是怎樣的?
回復(fù)

使用道具 舉報(bào)

板凳
ID:195666 發(fā)表于 2023-6-16 11:36 | 只看該作者
2個(gè)文件,不是工程
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:379993 發(fā)表于 2020-11-23 08:35 | 只看該作者
那個(gè)dma傳輸數(shù)據(jù)長(zhǎng)度需要,填二維數(shù)組的長(zhǎng)度嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表