#include "hw_config.h"
//void Adc_GPIO_Config(void)
//{
// GPIO_InitTypeDef GPIO_InitStructure;
// /*使能GPIO和ADC1通道时钟*/
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RCC_APB2Periph_ADC1 , ENABLE );
//
// /*将PA0设置为模拟输入*/
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
// /*将GPIO设置为模拟输入*/
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
// GPIO_Init(GPIOB, &GPIO_InitStructure);
//
//}
//
//
//void Adc_Config(void)
//{
// ADC_InitTypeDef ADC_InitStructure;
// Adc_GPIO_Config();
// /*72M/6=12,ADC最大时间不能超过14M*/
// RCC_ADCCLKConfig(RCC_PCLK2_Div6);
// /*将外设 ADC1 的全部寄存器重设为默认值*/
// ADC_DeInit(ADC1);
// /*ADC工作模式:ADC1和ADC2工作在独立模式*/
// ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
// /*模数转换工作在单通道模式*/
// ADC_InitStructure.ADC_ScanConvMode = DISABLE;
// /*模数转换工作在单次转换模式*/
// ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
// /*ADC转换由软件而不是外部触发启动*/
// ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
// /*ADC数据右对齐*/
// ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
// /*顺序进行规则转换的ADC通道的数目*/
// ADC_InitStructure.ADC_NbrOfChannel = 1;
// /*根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器*/
// ADC_Init(ADC1, &ADC_InitStructure);
//
// /*使能指定的ADC1*/
// ADC_Cmd(ADC1, ENABLE);
// /*重置指定的ADC1的校准寄存器*/
// ADC_ResetCalibration(ADC1);
// /*获取ADC1重置校准寄存器的状态,设置状态则等待*/
// while(ADC_GetResetCalibrationStatus(ADC1));
// /*开始指定ADC1的校准*/
// ADC_StartCalibration(ADC1);
// /*获取指定ADC1的校准程序,设置状态则等待*/
// while(ADC_GetCalibrationStatus(ADC1));
// /*使能指定的ADC1的软件转换启动功能*/
// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
//}
/***********************************************************
*函数名称:void ADC_Configuration(void)
*
*入口参数:无
*
*出口参数:无
*
*功能说明:ADC1初始化配置
*************************************************************/
void ADC_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC| RCC_APB2Periph_AFIO | RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2,ENABLE);
/* ADC 1 **************************************************/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; // ADC1通道10引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管脚频率50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入模式
GPIO_Init(GPIOB, &GPIO_InitStructure);
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_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1; //进行规则转换的ADC通道为1
ADC_Init(ADC1, &ADC_InitStructure);
/* 设置ADC1使用10转换通道,转换顺序1,采样时间为55.5周期*/
ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 1, ADC_SampleTime_55Cycles5);
ADC_Cmd(ADC1, ENABLE); //使能ADC1
ADC_ResetCalibration(ADC1); //使能ADC1复位校准寄存器
while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准寄存器接收
ADC_StartCalibration(ADC1); //启动ADC1校准
while(ADC_GetCalibrationStatus(ADC1)); //等待ADC1校准结束
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //启动软件转换
//// /* ADC 2 **************************************************/
//// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //ADC1通道10引脚
//// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管脚频率50MHz
//// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入模式
//// GPIO_Init(GPIOC, &GPIO_InitStructure);
////
//// 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_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC数据右对齐
//// ADC_InitStructure.ADC_NbrOfChannel = 1; //进行规则转换的ADC通道为1
//// ADC_Init(ADC2, &ADC_InitStructure);
////
//// /* 设置ADC2使用11转换通道,转换顺序1,采样时间为55.5周期*/
////
//// ADC_RegularChannelConfig(ADC2, ADC_Channel_11, 1, ADC_SampleTime_55Cycles5);
////
//// ADC_Cmd(ADC2, ENABLE); //使能ADC1
////
//// ADC_ResetCalibration(ADC2); //使能ADC1复位校准寄存器
////
//// while(ADC_GetResetCalibrationStatus(ADC2)); //等待复位校准寄存器接收
////
//// ADC_StartCalibration(ADC2); //启动ADC1校准
////
//// while(ADC_GetCalibrationStatus(ADC2)); //等待ADC1校准结束
////
//// ADC_SoftwareStartConvCmd(ADC2, ENABLE); //启动软件转换
////
////// /* ADC 3 **************************************************/
////// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; // ADC1通道10引脚
////// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管脚频率50MHz
////// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入模式
////// GPIO_Init(GPIOC, &GPIO_InitStructure);
//////
////// 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_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC数据右对齐
////// ADC_InitStructure.ADC_NbrOfChannel = 1; //进行规则转换的ADC通道为1
////// ADC_Init(ADC3, &ADC_InitStructure);
//////
////// /* 设置ADC1使用10转换通道,转换顺序1,采样时间为55.5周期*/
//////
////// ADC_RegularChannelConfig(ADC3, ADC_Channel_15, 1, ADC_SampleTime_55Cycles5);
//////
////// ADC_Cmd(ADC3, ENABLE); //使能ADC1
//////
////// ADC_ResetCalibration(ADC3); //使能ADC1复位校准寄存器
//////
////// while(ADC_GetResetCalibrationStatus(ADC3)); //等待复位校准寄存器接收
//////
////// ADC_StartCalibration(ADC3); //启动ADC1校准
//////
////// while(ADC_GetCalibrationStatus(ADC3)); //等待ADC1校准结束
//////
////// ADC_SoftwareStartConvCmd(ADC3, ENABLE); //启动软件转换
}
/***********************************************************
*函数名称:void INP_Configuration(void)
*
*入口参数:无
*
*出口参数:无
*
*功能说明:INP1-2
*************************************************************/
void INP_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC| RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
// DBGMCU_CR &=0xFFFFFFDF; //这句话很重要,如果没有这段代码,PB3就会一直是低电平
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
}