新手上路
- 积分
- 31
- 金钱
- 31
- 注册时间
- 2018-11-18
- 在线时间
- 4 小时
|

楼主 |
发表于 2019-4-22 15:08:54
|
显示全部楼层
[mw_shl_code=c,true]#include "adc.h"
__IO uint16_t ADC_ConvertedValue;
/**
* @brief ADC GPIO 3õê¼»ˉ
* @param ÎT
* @retval ÎT
*/
static void ADC1_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// ′ò¿a ADC IO¶Ë¿úê±Öó
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);
// ÅäÖà ADC IO òy½ÅÄ£ê½
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
//ADC_PIN2;
// ADC_PIN3|
// ADC_PIN4|
// ADC_PIN5|
// ADC_PIN6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
// 3õê¼»ˉ ADC IO
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/**
* @brief ÅäÖÃADC1¤×÷Ä£ê½
* @param ÎT
* @retval ÎT
*/
static void ADC1_Mode_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
// ′ò¿aDMAê±Öó
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
// ′ò¿aADCê±Öó
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE );
// ¸′λDMA¿ØÖÆÆ÷
DMA_DeInit(DMA1_Channel1);
// ÅäÖà DMA 3õê¼»ˉ½á11ìå
// íaéè»ùÖ·Îa£oADC êy¾Y¼Ä′æÆ÷μØÖ·
DMA_InitStructure.DMA_PeripheralBaseAddr = ( u32 ) ( & ( ADC1->DR ) );
// ′æ′¢Æ÷μØÖ·
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_ConvertedValue;
// êy¾YÔ′à′×Ôíaéè
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
// »o3åÇø′óD¡£¬ó|¸Ãμèóúêy¾YÄ¿μÄμØμÄ′óD¡
DMA_InitStructure.DMA_BufferSize = 1;
// íaéè¼Ä′æÆ÷Ö»óDò»¸ö£¬μØÖ·2»óÃμYÔö
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
// ′æ′¢Æ÷μØÖ·μYÔö
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;//////////
// íaéèêy¾Y′óD¡Îa°ë×Ö£¬¼′ὸö×Ö½ú
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
// Äú′æêy¾Y′óD¡ò2Îa°ë×Ö£¬¸úíaéèêy¾Y′óD¡Ïàí¬
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
// Ñ-»·′«êäÄ£ê½
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
// DMA ′«êäí¨μàóÅÏè¼¶Îa¸ß£¬μ±ê1óÃò»¸öDMAí¨μàê±£¬óÅÏè¼¶éèÖÃ2»ó°Ïì
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
// ½ûÖ1′æ′¢Æ÷μ½′æ′¢Æ÷ģ꽣¬òòÎaêÇ′óíaéèμ½′æ′¢Æ÷
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
// 3õê¼»ˉDMA
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
// ê1Äü DMA í¨μà
DMA_Cmd(DMA1_Channel1 , ENABLE);
// ADC Ä£ê½ÅäÖÃ
// Ö»ê1óÃò»¸öADC£¬êôóúμ¥Ä£ê½
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
// é¨ÃèÄ£ê½
ADC_InitStructure.ADC_ScanConvMode = ENABLE ;
// á¬Dø×a»»Ä£ê½
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
// 2»óÃía2¿′¥·¢×a»»£¬èí¼t¿aÆô¼′¿é
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
// ×a»»½á1ûóò¶ÔÆë
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
// ×a»»í¨μà¸öêy
ADC_InitStructure.ADC_NbrOfChannel = 1; //NOFCHANEL
// 3õê¼»ˉADC
ADC_Init(ADC1, &ADC_InitStructure);
// ÅäÖÃADCê±Öó£ÎaPCLK2μÄ8·ÖÆμ£¬¼′9MHz
RCC_ADCCLKConfig(RCC_PCLK2_Div6);/////////////
// ÅäÖÃADC í¨μàμÄ×a»»Ë3Dòoí2éÑùê±¼ä
ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_55Cycles5);
// ADC_RegularChannelConfig(ADC_x, ADC_CHANNEL2, 2, ADC_SampleTime_55Cycles5);
// ADC_RegularChannelConfig(ADC_x, ADC_CHANNEL3, 3, ADC_SampleTime_55Cycles5);
// ADC_RegularChannelConfig(ADC_x, ADC_CHANNEL4, 4, ADC_SampleTime_55Cycles5);
// ADC_RegularChannelConfig(ADC_x, ADC_CHANNEL5, 5, ADC_SampleTime_55Cycles5);
// ADC_RegularChannelConfig(ADC_x, ADC_CHANNEL6, 6, ADC_SampleTime_55Cycles5);
//
// ê1ÄüADC DMA ÇëÇó
ADC_InjectedSequencerLengthConfig(ADC1, 1);///
ADC_InjectedChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_55Cycles5);///
ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_None);///
ADC_DMACmd(ADC1, ENABLE);
ADC_ExternalTrigConvCmd(ADC1, DISABLE);///
ADC_ExternalTrigInjectedConvCmd(ADC1, DISABLE);///
// ¿aÆôADC £¬2¢¿aê¼×a»»
ADC_Cmd(ADC1, ENABLE);
// 3õê¼»ˉADC D£×¼¼Ä′æÆ÷
ADC_ResetCalibration(ADC1);
// μè′yD£×¼¼Ä′æÆ÷3õê¼»ˉíê3é
while(ADC_GetResetCalibrationStatus(ADC1));
// ADC¿aê¼D£×¼
ADC_StartCalibration(ADC1);
// μè′yD£×¼íê3é
while(ADC_GetCalibrationStatus(ADC1));
// óéóúûóD2éóÃía2¿′¥·¢£¬ËùòÔê1óÃèí¼t′¥·¢ADC×a»»
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
/**
* @brief ADC3õê¼»ˉ
* @param ÎT
* @retval ÎT
*/
void ADC1_Init(void)
{
ADC1_GPIO_Config();
ADC1_Mode_Config();
}
/*********************************************END OF FILE**********************/
|
|