1、RCC相關:
APB2啟動時鐘項:
RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB,
RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE,
RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1,
RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1,
RCC_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3,
RCC_APB2Periph_ALL
APB2啟動函數(shù):
RCC_APB2PeriphClockCmd(XX,ENABLE);
APB1啟動時鐘項:
RCC_APB1Periph_TIM2, RCC_APB1Periph_TIM3, RCC_APB1Periph_TIM4,
RCC_APB1Periph_TIM5, RCC_APB1Periph_TIM6, RCC_APB1Periph_TIM7,
RCC_APB1Periph_WWDG, RCC_APB1Periph_SPI2, RCC_APB1Periph_SPI3,
RCC_APB1Periph_USART2, RCC_APB1Periph_USART3, RCC_APB1Periph_USART4,
RCC_APB1Periph_USART5, RCC_APB1Periph_I2C1, RCC_APB1Periph_I2C2,
RCC_APB1Periph_USB, RCC_APB1Periph_CAN1, RCC_APB1Periph_BKP,
RCC_APB1Periph_PWR, RCC_APB1Periph_DAC, RCC_APB1Periph_ALL
APB1啟動函數(shù):
RCC_APB2PeriphClockCmd(XX,ENABLE);
AHB啟動時鐘項:
RCC_AHBPeriph_DMA1
RCC_AHBPeriph_DMA2
RCC_AHBPeriph_SRAM
RCC_AHBPeriph_FLITF
RCC_AHBPeriph_CRC
RCC_AHBPeriph_FSMC
RCC_AHBPeriph_SDIO
AHB啟動函數(shù):
RCC_AHBPeriphClockCmd (XX,ENABLE);
GPIO模式:
GPIO_Mode_AIN:模擬輸入 GPIO_Mode_IN_FLOATING:浮空輸入
GPIO_Mode_IPD:下拉輸入 GPIO_Mode_IPU:上拉輸入
GPIO_Mode_Out_OD:開漏輸出 GPIO_Mode_Out_PP:推挽輸出
GPIO_Mode_AF_OD:復用開漏輸出 GPIO_Mode_AF_PP:復用推挽輸出
GPIO速度:
GPIO_Speed_2MHz
GPIO_Speed_10MHz
GPIO_Speed_50MHz
GPIO引腳聲明:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; x:1~15或者all
GPIO初始化函數(shù):
GPIO_Init(GPIOx, &GPIO_InitStructure); x:A~G
注:需要定義GPIO結構體變量,GPIO_InitTypeDef GPIO_InitStructure;
最好需要重新初始化:ADC_DeInit(ADCx);
ADC工作模式選擇:
ADC_Mode_Independent:獨立工作
ADC_Mode_RegInjecSimult:混合同步+注入同步
ADC_Mode_RegSimult_AlterTrig:混合同步+交替觸發(fā)
ADC_Mode_InjecSimult_FastInterl:混合同步+快速交替
ADC_Mode_InjecSimult_SlowInterl:混合同步+慢速交替
ADC_Mode_InjecSimult:注入同步
ADC_Mode_RegSimult:規(guī)則同步
ADC_Mode_FastInterl:快速交替
ADC_Mode_SlowInterl:慢速交替
ADC_Mode_AlterTrig:交替觸發(fā)
通過ADC_InitStructure.ADC_Mode = XX進行賦值
ADC掃描使能:
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
ADC連續(xù)/單次模式選擇:
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC轉換控制方式:
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//有軟件控制轉換
ADC數(shù)據(jù)對齊方式:ADC_DataAlign_Right:右對齊/ ADC_DataAlign_Right:左對齊
ADC_InitStructure.ADC_DataAlign =XX
ADC轉換通道數(shù):
ADC_InitStructure.ADC_NbrOfChannel = X // X=1~16
ADC初始化函數(shù):
ADC_Init(ADCx, &ADC_InitStructure);
注:在開始要定義結構體變量 ADC_InitTypeDef ADC_InitStructure
是否使能ADCx DMA:
ADC_DMACmd(ADCx, ENABLE);
使能ADCx:
ADC_Cmd(ADCx, ENABLE);
初始化ADC1校準寄存器:
ADC_ResetCalibration(ADCx);
檢測ADC1校準寄存器初始化是否完成:
while(ADC_GetResetCalibrationStatus(ADCx));
開始校準ADC1:
ADC_StartCalibration(ADCx);
檢測是否完成校準:
while(ADC_GetCalibrationStatus(ADCx));
ADC1轉換軟件啟動:
ADC_SoftwareStartConvCmd(ADCx, ENABLE);
復位通道:
DMA_DeInit(DMAy_Channelx);//復位DMAy通道x,y=1時,x=1~7;y=2時,x=1~5
定義外設基地址,全局變量:
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;//地址自己定義
如:#define ADC1_DR_Address ((u32)0x4001244C)
定義DMA存儲器地址,全局變量u32
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue; //定義DMA通道存儲器地址
如:volatile unsigned short int ADC_ConvertedValue[8];
DMA外設方向:
DMA_InitStructure.DMA_DIR = XX;
DMA_DIR_PeripheralSRC:外設為數(shù)據(jù)傳輸?shù)膩碓?,DMA_DIR_PeripheralDST:外設為數(shù)據(jù)傳輸?shù)哪康牡?/p>
DMA傳輸數(shù)量寄存器值,即緩存大小,單位由MemoryDataSize或PeripheralDataSize決定:
DMA_InitStructure.DMA_BufferSize = x;
//定義DMA緩沖區(qū)大小x,如8通道ADC,則x就為8
DMA外設地址寄存器變不變:
DMA_InitStructure.DMA_PeripheralInc = x;
DMA_PeripheralInc_Disable:外設地址寄存器不變DMA_PeripheralInc_Enable:外設地址寄存器遞增
DMA內存地址寄存器變不變:
DMA_InitStructure.DMA_MemoryInc = X;
DMA_MemoryInc_Disable:內存地址寄存器不變DMA_MemoryInc_Enable:內存地址寄存器遞增
外設數(shù)據(jù)寬度:
DMA_InitStructure.DMA_PeripheralDataSize = X;
DMA_PeripheralDataSize_Byte 數(shù)據(jù)寬度為8位