ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 6 از 6
  1. #1
    2019/05/08
    12
    1

    راه اندازی ADC

    سلام بر همگی. من میخوام به وسیله پتانسیومتر و ADC میکرو stm32f091 دو تا ال ای دی را کنترل کنم. کد زیرو نوشتم منتها جواب نمی گیرم. کسی میتونه ایرادات دستورات زیر را بگه؟

    پین PA1 پین ورودی آنالوگ (پتانسیومتر) پینهای B0 و B1 ال ای دی وصل شدن به طوریکه اگر ADC_Value کمتر از 2000 باشه B0 و در غیر اینصورت B1 روشن باید بشن.

    int main(int argc, char* argv[])
    {




    //(#) ADC pins (pA1) configuration --------------------------------------------------------------




    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
    GPIO_Init(GPIOA, &GPIO_InitStructure);




    //leds (pB0... pB3) configuration--------------------------------------------------------------








    GPIO_InitTypeDef GPIO_LEDs;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
    GPIO_LEDs.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
    GPIO_LEDs.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_LEDs.GPIO_OType = GPIO_OType_PP;
    GPIO_LEDs.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_LEDs.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOB, &GPIO_LEDs);
    //ADC-------------------------------------------------------------------------------------------
    ADC_InitTypeDef ADC_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
    ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
    ADC_Init(ADC1, &ADC_InitStructure);




    ADC_GetCalibrationFactor(ADC1);
    ADC_Cmd(ADC1, ENABLE);
    while(ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN) == RESET);
    ADC_StartOfConversion(ADC1);
    uint16_t valueADC = ADC_GetConversionValue(ADC1);
    ADC_ChannelConfig(ADC1, ADC_Channel_1, ADC_SampleTime_1_5Cycles);




    //dma--------------------------------------------------------------------------------------
    DMA_InitTypeDef DMA_InitStructure;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 , ENABLE);
    DMA_DeInit(DMA1_Channel1);
    DMA_InitStructure.DMA_PeripheralBaseAddr= (uint32_t)&ADC1->DR;
    DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)&valueADC;
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
    DMA_InitStructure.DMA_BufferSize = 2;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
    DMA_InitStructure.DMA_Priority = DMA_Priority_High;
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
    DMA_Init(DMA1_Channel1, &DMA_InitStructure);
    DMA_Cmd(DMA1_Channel1, ENABLE);
    ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);
    ADC_DMACmd(ADC1, ENABLE);








    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));//Processing the conversion




    return ADC_GetConversionValue(ADC1); //Return the converted data
    ADC_StartOfConversion(ADC1);


    while (1)
    {
    if(valueADC<2000){
    GPIO_SetBits(GPIOB, GPIO_Pin_0);
    GPIO_ResetBits(GPIOB, GPIO_Pin_1);
    }
    else if(valueADC>2000){
    GPIO_SetBits(GPIOB, GPIO_Pin_1);
    GPIO_ResetBits(GPIOB, GPIO_Pin_0);


    }
    }
    }



    ویرایش توسط nm272 : 2020/05/11 در ساعت 18:56
  2. #2
    2016/06/21
    314
    96

    پاسخ : راه اندازی ADC

    نقل قول نوشته اصلی توسط nm272

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام بر همگی. من میخوام به وسیله پتانسیومتر و ADC میکرو stm32f091 دو تا ال ای دی را کنترل کنم. کد زیرو نوشتم منتها جواب نمی گیرم. کسی میتونه ایرادات دستورات زیر را بگه؟

    پین PA1 پین ورودی آنالوگ (پتانسیومتر) پینهای B0 و B1 ال ای دی وصل شدن به طوریکه اگر ADC_Value کمتر از 2000 باشه B0 و در غیر اینصورت B1 روشن باید بشن.

    int main(int argc, char* argv[])
    {


    //(#) ADC pins (pA1) configuration --------------------------------------------------------------


    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
    GPIO_Init(GPIOA, &GPIO_InitStructure);


    //leds (pB0... pB3) configuration--------------------------------------------------------------




    GPIO_InitTypeDef GPIO_LEDs;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
    GPIO_LEDs.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
    GPIO_LEDs.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_LEDs.GPIO_OType = GPIO_OType_PP;
    GPIO_LEDs.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_LEDs.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOB, &GPIO_LEDs);
    //ADC-------------------------------------------------------------------------------------------
    ADC_InitTypeDef ADC_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
    ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
    ADC_Init(ADC1, &ADC_InitStructure);


    ADC_GetCalibrationFactor(ADC1);
    ADC_Cmd(ADC1, ENABLE);
    while(ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN) == RESET);
    ADC_StartOfConversion(ADC1);
    uint16_t valueADC = ADC_GetConversionValue(ADC1);
    ADC_ChannelConfig(ADC1, ADC_Channel_1, ADC_SampleTime_1_5Cycles);


    //dma--------------------------------------------------------------------------------------
    DMA_InitTypeDef DMA_InitStructure;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 , ENABLE);
    DMA_DeInit(DMA1_Channel1);
    DMA_InitStructure.DMA_PeripheralBaseAddr= (uint32_t)&ADC1->DR;
    DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)&valueADC;
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
    DMA_InitStructure.DMA_BufferSize = 2;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
    DMA_InitStructure.DMA_Priority = DMA_Priority_High;
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
    DMA_Init(DMA1_Channel1, &DMA_InitStructure);
    DMA_Cmd(DMA1_Channel1, ENABLE);
    ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);
    ADC_DMACmd(ADC1, ENABLE);




    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));//Processing the conversion


    return ADC_GetConversionValue(ADC1); //Return the converted data
    ADC_StartOfConversion(ADC1);


    while (1)
    if(valueADC<2000){
    GPIO_SetBits(GPIOB, GPIO_Pin_0);
    }
    else if(valueADC>2000){
    GPIO_SetBits(GPIOB, GPIO_Pin_1);
    }
    }


    سلام.دوتا مشکل دیدم یکی اینکه شما dma چون دارید ۳۲ بیتی دریافت می کنید شما بجای طول Halfword از word استفاده کنید در این صورت طول دیتا بجا ۲ تبدیل به ۱ کنید(یعنی ۳۲ بیت کامل دریافت می کنید)

    دوم شما داخل حلقه وایل بعد بررسی شرط فقط ست کردید و ریست انجام ندادید
    در ضمن بهتر دیتا که از dma می گیرد با مقدار 0xfff رو با هاش AND کنید تا مقدار رجیستر ۱۲ بیت فقط توی خروجی بیاد
    ویرایش توسط MM320 : 2020/05/11 در ساعت 18:32
  3. #3
    2019/05/08
    12
    1

    پاسخ : راه اندازی ADC

    نقل قول نوشته اصلی توسط MM320

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    سلام.دوتا مشکل دیدم یکی اینکه شما dma چون دارید ۳۲ بیتی دریافت می کنید شما بجای طول Halfword از word استفاده کنید در این صورت طول دیتا بجا ۲ تبدیل به ۱ کنید(یعنی ۳۲ بیت کامل دریافت می کنید)

    دوم شما داخل حلقه وایل بعد بررسی شرط فقط ست کردید و ریست انجام ندادید
    در ضمن بهتر دیتا که از dma می گیرد با مقدار 0xfff رو با هاش AND کنید تا مقدار رجیستر ۱۲ بیت فقط توی خروجی بیاد
    ممنون برا راهنماییتون.
    دوتا ایراد اولی را برطرف کردم ولی هنوز جواب نداده. مورد سوم ولی متوجه نشدم. کدوم خطو AND کنم؟
  4. #4
    2016/06/21
    314
    96

    پاسخ : راه اندازی ADC

    نقل قول نوشته اصلی توسط nm272

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    ممنون برا راهنماییتون. دوتا ایراد اولی را برطرف کردم ولی هنوز جواب نداده. مورد سوم ولی متوجه نشدم. کدوم خطو AND کنم؟
    شما موارد برای تنظیم dma انجام دادید شمارنده آدرس memory و prephoral غیر فعال کردید ؟ و همینطور مقدار adc از واحد dma دریافت کردید با مقدار Valueadc=valueadc & 0xfff بعدش مقدارشو به if بدید ببینید مشکلتون حل میشه

    الان که برنامه تون نگاه کردم متوجه شدم که شما بعد اینگه منتظر عملیات تبدیل شدید در خط بعد امدید return مقدار adc به تابع main طبیعتا باعث میشه تابع main تمام بشه و اصلا به حلقه while نرسه دستوارات اجرا نشه
    ویرایش توسط MM320 : 2020/05/11 در ساعت 22:53
  5. #5
    2019/05/08
    12
    1

    پاسخ : راه اندازی ADC

    نقل قول نوشته اصلی توسط MM320

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    شما موارد برای تنظیم dma انجام دادید شمارنده آدرس memory و prephoral غیر فعال کردید ؟ و همینطور مقدار adc از واحد dma دریافت کردید با مقدار Valueadc=valueadc & 0xfff بعدش مقدارشو به if بدید ببینید مشکلتون حل میشه

    الان که برنامه تون نگاه کردم متوجه شدم که شما بعد اینگه منتظر عملیات تبدیل شدید در خط بعد امدید return مقدار adc به تابع main طبیعتا باعث میشه تابع main تمام بشه و اصلا به حلقه while نرسه دستوارات اجرا نشه
    ممنون از وقتی که میذاری.
    برا memory و prephoral یکیش غیر فعال و یکیش فعاله
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

    سوال بعدیتون منظورتون این قسمته؟


    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));//Processing the conversion

    return ADC_GetConversionValue(ADC1); //Return the converted data
    حذف کردم این دو قسمتو منتها الان کلا پین B0 روشن میشه و با تغییر پتانسیومتر هیچ اتقافی نمیفته. در واقع باید با تغییر پتانسیومتر b1 روشن بشه که نمیشه.
  6. #6
    2016/06/21
    314
    96

    پاسخ : راه اندازی ADC

    شما تبدیل adc به چه صورت انجام می گیرد آیا تنظیمات adc تریگر بصورت پشت سر هم انجام می گیره مثلا توی میکروهای lpc1768 ما مد burst (پی در پی داره) داره پشت سرهم بخونید حالا شما می تونید برای تریگرش از تایمر هم استفاده کنید
    البته بصورت polling هم می تونید تبدیلadc استفاده کنید
    یه مثال هست برای میکروهای stm32f103 می تونید ازش استفاده کنید

    ******************************************************************************
    * @file ADC/TIMTrigger_AutoInjection/main.c
    * @[URL="https://www.eca.ir/forums/member.php?u=19064"]autho[/URL]r MCD Application Team
    * @version V3.5.0
    * @date 08-April-2011
    * @brief Main program body
    ******************************************************************************
    * @attention
    *
    * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
    * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
    * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
    * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
    * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
    * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
    *
    * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
    ******************************************************************************
    */

    /* Includes ------------------------------------------------------------------*/
    #include "stm32f10x.h"

    /** @addtogroup STM32F10x_StdPeriph_Examples
    * @{
    */

    /** @addtogroup ADC_TIMTrigger_AutoInjection
    * @{
    */

    /* Private typedef -----------------------------------------------------------*/
    /* Private define ------------------------------------------------------------*/
    #define ADC1_DR_Address ((uint32_t)0x4001244C)

    /* Private macro -------------------------------------------------------------*/
    /* Private variables ---------------------------------------------------------*/
    ADC_InitTypeDef ADC_InitStructure;
    DMA_InitTypeDef DMA_InitStructure;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
    __IO uint16_t ADC_RegularConvertedValueTab[32], ADC_InjectedConvertedValueTab[32];

    /* Private function prototypes -----------------------------------------------*/
    void RCC_Configuration(void);
    void GPIO_Configuration(void);
    void NVIC_Configuration(void);

    /* Private functions ---------------------------------------------------------*/

    /**
    * @brief Main program
    * @[URL="https://www.eca.ir/forums/member.php?u=17545"]para[/URL]m None
    * @retval None
    */
    int main(void)
    {
    /*!< At this stage the microcontroller clock setting is already configured,
    this is done through SystemInit() function which is called from startup
    file (startup_stm32f10x_xx.s) before to branch to application main.
    To reconfigure the default setting of SystemInit() function, refer to
    system_stm32f10x.c file
    */

    /* System clocks configuration ---------------------------------------------*/
    RCC_Configuration();

    /* NVIC configuration ------------------------------------------------------*/
    NVIC_Configuration();

    /* GPIO configuration ------------------------------------------------------*/
    GPIO_Configuration();

    /* TIM1 configuration ------------------------------------------------------*/
    /* Time Base configuration */
    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
    TIM_TimeBaseStructure.TIM_Period = 0xFF;
    TIM_TimeBaseStructure.TIM_Prescaler = 0x4;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
    /* TIM1 channel1 configuration in PWM mode */
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = 0x7F;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);

    /* DMA1 Channel1 Configuration ----------------------------------------------*/
    DMA_DeInit(DMA1_Channel1);
    DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADC_RegularConvertedValueTab;
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
    DMA_InitStructure.DMA_BufferSize = 32;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
    DMA_InitStructure.DMA_Priority = DMA_Priority_High;
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
    DMA_Init(DMA1_Channel1, &DMA_InitStructure);

    /* Enable DMA1 channel1 */
    DMA_Cmd(DMA1_Channel1, ENABLE);

    /* ADC1 configuration ------------------------------------------------------*/
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfChannel = 1;
    ADC_Init(ADC1, &ADC_InitStructure);

    /* ADC1 regular channel14 configuration */
    ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_13Cycles5);

    /* Set injected sequencer length */
    ADC_InjectedSequencerLengthConfig(ADC1, 1);
    /* ADC1 injected channel Configuration */
    ADC_InjectedChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_71Cycles5);
    /* ADC1 injected external trigger configuration */
    ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_None);

    /* Enable automatic injected conversion start after regular one */
    ADC_AutoInjectedConvCmd(ADC1, ENABLE);

    /* Enable ADC1 DMA */
    ADC_DMACmd(ADC1, ENABLE);

    /* Enable ADC1 external trigger */
    ADC_ExternalTrigConvCmd(ADC1, ENABLE);

    /* Enable JEOC interrupt */
    ADC_ITConfig(ADC1, ADC_IT_JEOC, ENABLE);

    /* 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));

    /* TIM1 counter enable */
    TIM_Cmd(TIM1, ENABLE);
    /* TIM1 main Output Enable */
    TIM_CtrlPWMOutputs(TIM1, ENABLE);

    /* Test on channel1 transfer complete flag */
    while(!DMA_GetFlagStatus(DMA1_FLAG_TC1));
    /* Clear channel1 transfer complete flag */
    DMA_ClearFlag(DMA1_FLAG_TC1);

    /* TIM1 counter disable */
    TIM_Cmd(TIM1, DISABLE);

    while (1)
    {
    }
    }

    /**
    * @brief Configures the different system clocks.
    * @[URL="https://www.eca.ir/forums/member.php?u=17545"]para[/URL]m None
    * @retval None
    */
    void RCC_Configuration(void)
    {
    #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
    /* ADCCLK = PCLK2/2 */
    RCC_ADCCLKConfig(RCC_PCLK2_Div2);
    #else
    /* ADCCLK = PCLK2/4 */
    RCC_ADCCLKConfig(RCC_PCLK2_Div4);
    #endif
    /* Enable peripheral clocks ------------------------------------------------*/
    /* Enable DMA1 clock */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

    /* Enable GPIOA, GPIOC, ADC1 and TIM1 clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC |
    RCC_APB2Periph_ADC1 | RCC_APB2Periph_TIM1, ENABLE);
    }

    /**
    * @brief Configures the different GPIO ports.
    * @[URL="https://www.eca.ir/forums/member.php?u=17545"]para[/URL]m None
    * @retval None
    */
    void GPIO_Configuration(void)
    {
    GPIO_InitTypeDef GPIO_InitStructure;

    /* Configure TIM1_CH1 (PA8) as alternate function push-pull */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    /* Configure PC.06 as output push-pull */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    /* Configure PC.01 and PC.04 (ADC Channel11 and Channel14) as analog input */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOC, &GPIO_InitStructure);
    }

    /**
    * @brief Configures NVIC and Vector Table base location.
    * @[URL="https://www.eca.ir/forums/member.php?u=17545"]para[/URL]m None
    * @retval None
    */
    void NVIC_Configuration(void)
    {
    NVIC_InitTypeDef NVIC_InitStructure;

    /* Configure and enable ADC interrupt */
    #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
    NVIC_InitStructure.NVIC_IRQChannel = ADC1_IRQn;
    #else
    NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;
    #endif
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    }

    #ifdef USE_FULL_ASSERT

    /**
    * @brief Reports the name of the source file and the source line number
    * where the assert_param error has occurred.
    * @[URL="https://www.eca.ir/forums/member.php?u=17545"]para[/URL]m file: pointer to the source file name
    * @[URL="https://www.eca.ir/forums/member.php?u=17545"]para[/URL]m line: assert_param error line source number
    * @retval None
    */
    void assert_failed(uint8_t* file, uint32_t line)
    {
    /* User can add his own implementation to report the file name and line number,
    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

    /* Infinite loop */
    while (1)
    {
    }
    }

    #endif

    /**
    * @}
    */

    /**
    * @}
    */

    /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/

    ویرایش توسط MM320 : 2020/05/12 در ساعت 05:28
نمایش نتایج: از 1 به 6 از 6

موضوعات مشابه

  1. راه اندازی یک شرکت تولیدی (مراحل مختلف از راه اندازی تا ثبت شرکت)
    توسط مهران چمنی در انجمن مباحث علمی عمومی
    پاسخ: 91
    آخرين نوشته: 2016/02/28, 22:23

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •