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





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









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





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

نمایش نتایج: از 1 به 9 از 9
  1. #1
    2008/12/03
    6
    0

    Question خطای نشناختن hadc1 در IAR

    سلام
    وقت بخیر
    با استفاده از STM32CubeMX یک کد برای STM32F030F4P6 تولید کردم. ADC رو هم فعال کردم.
    برنامه زیر رو نوشتم:
    HAL_ADC_Init(&hadc1);

    if (HAL_ADC_PollForConversion(&hadc1, 1000000) == HAL_OK)
    {
    g_ADCValue = HAL_ADC_GetValue(&1);
    g_MeasurementNumber++;
    }

    این خطاها رو میگیره:
    HAL_ADC_Init(&hadc1);
    Error[Pe020]: identifier "hadc1" is undefined


    g_ADCValue = HAL_ADC_GetValue(&1);
    Error[Pe158]: expression must be an lvalue or a function designator

    مشکل کجاست؟
    ممنون
  2. #2
    2017/06/13
    718
    369

    پاسخ : خطای نشناختن hadc1 در IAR

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

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

    عضویت

    سلام
    وقت بخیر
    با استفاده از STM32CubeMX یک کد برای STM32F030F4P6 تولید کردم. ADC رو هم فعال کردم.
    برنامه زیر رو نوشتم:
    HAL_ADC_Init(&hadc1);

    if (HAL_ADC_PollForConversion(&hadc1, 1000000) == HAL_OK)
    {
    g_ADCValue = HAL_ADC_GetValue(&1);
    g_MeasurementNumber++;
    }

    این خطاها رو میگیره:
    HAL_ADC_Init(&hadc1);
    Error[Pe020]: identifier "hadc1" is undefined


    g_ADCValue = HAL_ADC_GetValue(&1);
    Error[Pe158]: expression must be an lvalue or a function designator

    مشکل کجاست؟
    ممنون
    سلام
    مورد اول که کاملا مشخصه! حتما یا hadc1 تعریف نشده، یا در جای نامناسب ازش استفاده شده که بازم توسط کامپایلر شناسایی نمیشه.
    اما در مورد دومین خطا. عملگر& دوتا کار انجام میده؛ اگر بین دو عدد یا متغیر قرار بگیره اونا رو باهم AND بیتی میکنه و اگر جایی فقط قبل از یک متغیر قرار بگیره، آدرس اون متغیر رو بر میگردونه. شما اومدید از نوع دومش استفاده کردید و جالب اینه بجای متغیر بهش عدد دادید! عدد که آدرس نداره! بخاطر همین ایراد گرفته.
  3. #3
    2008/12/03
    6
    0

    پاسخ : خطای نشناختن hadc1 در IAR

    سلام
    ممنون
    ولی وقتی کد رو با CubeMX تولید می کنیم همه defineها و متغیرهای مورد نیاز رو تعریف می کنه.
    نمونه برنامه دارید برام بفرستید؟
    سپاسگزارم
  4. #4
    2017/06/13
    718
    369

    پاسخ : خطای نشناختن hadc1 در IAR

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

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

    عضویت

    سلام
    ممنون
    ولی وقتی کد رو با CubeMX تولید می کنیم همه defineها و متغیرهای مورد نیاز رو تعریف می کنه.
    نمونه برنامه دارید برام بفرستید؟
    سپاسگزارم
    شما برنامتونو بفرستید تا اینجا بررسی کنیم. کامپایلر استاندارد ایراد بی جهت نمیگیره؛ همونطوری که گفتم برنامتون صد درصد ایراد داشته.
  5. #5
    2008/12/03
    6
    0

    پاسخ : خطای نشناختن hadc1 در IAR

    چطور میتونم فایل زیپ رو اینجا بذارم؟ آپلود یا ضمیمه ندیدم.
    یا ایمیل بدین برات بفرستم
  6. #6
    2017/06/13
    718
    369

    پاسخ : خطای نشناختن hadc1 در IAR

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

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

    عضویت

    چطور میتونم فایل زیپ رو اینجا بذارم؟ آپلود یا ضمیمه ندیدم.
    یا ایمیل بدین برات بفرستم
    فایل زیپ نمیخواد بفرسید. همون کد اصلی رو کپی کنید اینجا. ضمنا برای فرستادن کد حتما از تگ CPP استفاده کنید. توی نوار بالایی ویرایشگر متن انجمن تگ ها رو میبینید.
  7. #7
    2008/12/03
    6
    0

    پاسخ : خطای نشناختن hadc1 در IAR

    [FONT=Yekan]/* USER CODE BEGIN Header */[/FONT]/**
    ******************************************************************************
    * @file : main.c
    * @brief : Main program body
    ******************************************************************************
    * @attention
    *
    * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
    * All rights reserved.
    </center></h2>
    *
    * This software component is licensed by ST under BSD 3-Clause license,
    * the "License"; You may not use this file except in compliance with the
    * License. You may obtain a copy of the License at:
    * opensource.org/licenses/BSD-3-Clause
    *
    ******************************************************************************
    */
    /* USER CODE END Header */


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


    /* Private includes ----------------------------------------------------------*/
    /* USER CODE BEGIN Includes */


    /* USER CODE END Includes */


    /* Private typedef -----------------------------------------------------------*/
    /* USER CODE BEGIN PTD */


    /* USER CODE END PTD */


    /* Private define ------------------------------------------------------------*/
    /* USER CODE BEGIN PD */
    /* USER CODE END PD */


    /* Private macro -------------------------------------------------------------*/
    /* USER CODE BEGIN PM */


    /* USER CODE END PM */


    /* Private variables ---------------------------------------------------------*/
    ADC_HandleTypeDef hadc;


    /* USER CODE BEGIN PV */


    /* USER CODE END PV */


    /* Private function prototypes -----------------------------------------------*/
    void SystemClock_Config(void);
    static void MX_GPIO_Init(void);
    static void MX_ADC_Init(void);
    /* USER CODE BEGIN PFP */


    /* USER CODE END PFP */


    /* Private user code ---------------------------------------------------------*/
    /* USER CODE BEGIN 0 */


    /* USER CODE END 0 */


    /**
    * @brief The application entry point.
    * @retval int
    */
    uint32_t g_ADCValue;
    int g_MeasurementNumber;




    int main(void)
    {
    /* USER CODE BEGIN 1 */


    /* USER CODE END 1 */



    /* MCU Configuration--------------------------------------------------------*/


    /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    HAL_Init();


    /* USER CODE BEGIN Init */


    /* USER CODE END Init */


    /* Configure the system clock */
    SystemClock_Config();


    /* USER CODE BEGIN SysInit */


    /* USER CODE END SysInit */


    /* Initialize all configured peripherals */
    MX_GPIO_Init();
    MX_ADC_Init();
    /* USER CODE BEGIN 2 */


    /* USER CODE END 2 */

    HAL_ADC_Init(&hadc1);
    for (;;)
    {
    if (HAL_ADC_PollForConversion(&hadc1, 1000000) == HAL_OK)
    {
    g_ADCValue = HAL_ADC_GetValue(&1);
    g_MeasurementNumber++;
    }
    } /* USER CODE END 3 */
    }


    /**
    * @brief System Clock Configuration
    * @retval None
    */
    void SystemClock_Config(void)
    {
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};


    /** Initializes the CPU, AHB and APB busses clocks
    */
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSI14;
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    RCC_OscInitStruct.HSI14State = RCC_HSI14_ON;
    RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
    RCC_OscInitStruct.HSI14CalibrationValue = 16;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    {
    Error_Handler();
    }
    /** Initializes the CPU, AHB and APB busses clocks
    */
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
    |RCC_CLOCKTYPE_PCLK1;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;


    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
    {
    Error_Handler();
    }
    }


    /**
    * @brief ADC Initialization Function
    * [MENTION=17545]para[/MENTION]m None
    * @retval None
    */
    static void MX_ADC_Init(void)
    {


    /* USER CODE BEGIN ADC_Init 0 */


    /* USER CODE END ADC_Init 0 */


    ADC_ChannelConfTypeDef sConfig = {0};


    /* USER CODE BEGIN ADC_Init 1 */


    /* USER CODE END ADC_Init 1 */
    /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
    */
    hadc.Instance = ADC1;
    hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    hadc.Init.Resolution = ADC_RESOLUTION_12B;
    hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;
    hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
    hadc.Init.LowPowerAutoWait = DISABLE;
    hadc.Init.LowPowerAutoPowerOff = DISABLE;
    hadc.Init.ContinuousConvMode = DISABLE;
    hadc.Init.DiscontinuousConvMode = DISABLE;
    hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;
    hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
    hadc.Init.DMAContinuousRequests = DISABLE;
    hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    if (HAL_ADC_Init(&hadc) != HAL_OK)
    {
    Error_Handler();
    }
    /** Configure for the selected ADC regular channel to be converted.
    */
    sConfig.Channel = ADC_CHANNEL_0;
    sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
    sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
    if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
    {
    Error_Handler();
    }
    /** Configure for the selected ADC regular channel to be converted.
    */
    sConfig.Channel = ADC_CHANNEL_1;
    if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
    {
    Error_Handler();
    }
    /* USER CODE BEGIN ADC_Init 2 */


    /* USER CODE END ADC_Init 2 */


    }


    /**
    * @brief GPIO Initialization Function
    * [MENTION=17545]para[/MENTION]m None
    * @retval None
    */
    static void MX_GPIO_Init(void)
    {


    /* GPIO Ports Clock Enable */
    __HAL_RCC_GPIOA_CLK_ENABLE();


    }


    /* USER CODE BEGIN 4 */


    /* USER CODE END 4 */


    /**
    * @brief This function is executed in case of error occurrence.
    * @retval None
    */
    void Error_Handler(void)
    {
    /* USER CODE BEGIN Error_Handler_Debug */
    /* User can add his own implementation to report the HAL error return state */


    /* USER CODE END Error_Handler_Debug */
    }


    #ifdef USE_FULL_ASSERT
    /**
    * @brief Reports the name of the source file and the source line number
    * where the assert_param error has occurred.
    * [MENTION=17545]para[/MENTION]m file: pointer to the source file name
    * [MENTION=17545]para[/MENTION]m line: assert_param error line source number
    * @retval None
    */
    void assert_failed(char *file, uint32_t line)
    {
    /* USER CODE BEGIN 6 */
    /* User can add his own implementation to report the file name and line number,
    tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
    /* USER CODE END 6 */
    }
    #endif /* USE_FULL_ASSERT */


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


  8. #8
    2017/06/13
    718
    369

    پاسخ : خطای نشناختن hadc1 در IAR

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

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

    عضویت

    [FONT=Yekan]/* USER CODE BEGIN Header */[/FONT]/**
    ******************************************************************************
    * @file : main.c
    * @brief : Main program body
    ******************************************************************************
    * @attention
    *
    * <h2><center>© Copyright (c) 2020 STMicroelectronics.
    * All rights reserved.</center></h2>
    *
    * This software component is licensed by ST under BSD 3-Clause license,
    * the "License"; You may not use this file except in compliance with the
    * License. You may obtain a copy of the License at:
    * opensource.org/licenses/BSD-3-Clause
    *
    ******************************************************************************
    */
    /* USER CODE END Header */


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


    /* Private includes ----------------------------------------------------------*/
    /* USER CODE BEGIN Includes */


    /* USER CODE END Includes */


    /* Private typedef -----------------------------------------------------------*/
    /* USER CODE BEGIN PTD */


    /* USER CODE END PTD */


    /* Private define ------------------------------------------------------------*/
    /* USER CODE BEGIN PD */
    /* USER CODE END PD */


    /* Private macro -------------------------------------------------------------*/
    /* USER CODE BEGIN PM */


    /* USER CODE END PM */


    /* Private variables ---------------------------------------------------------*/
    ADC_HandleTypeDef hadc;


    /* USER CODE BEGIN PV */


    /* USER CODE END PV */


    /* Private function prototypes -----------------------------------------------*/
    void SystemClock_Config(void);
    static void MX_GPIO_Init(void);
    static void MX_ADC_Init(void);
    /* USER CODE BEGIN PFP */


    /* USER CODE END PFP */


    /* Private user code ---------------------------------------------------------*/
    /* USER CODE BEGIN 0 */


    /* USER CODE END 0 */


    /**
    * @brief The application entry point.
    * @retval int
    */
    uint32_t g_ADCValue;
    int g_MeasurementNumber;




    int main(void)
    {
    /* USER CODE BEGIN 1 */


    /* USER CODE END 1 */



    /* MCU Configuration--------------------------------------------------------*/


    /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    HAL_Init();


    /* USER CODE BEGIN Init */


    /* USER CODE END Init */


    /* Configure the system clock */
    SystemClock_Config();


    /* USER CODE BEGIN SysInit */


    /* USER CODE END SysInit */


    /* Initialize all configured peripherals */
    MX_GPIO_Init();
    MX_ADC_Init();
    /* USER CODE BEGIN 2 */


    /* USER CODE END 2 */

    HAL_ADC_Init(&hadc1);
    for (;;)
    {
    if (HAL_ADC_PollForConversion(&hadc1, 1000000) == HAL_OK)
    {
    g_ADCValue = HAL_ADC_GetValue(&1);
    g_MeasurementNumber++;
    }
    } /* USER CODE END 3 */
    }


    /**
    * @brief System Clock Configuration
    * @retval None
    */
    void SystemClock_Config(void)
    {
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};


    /** Initializes the CPU, AHB and APB busses clocks
    */
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSI14;
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    RCC_OscInitStruct.HSI14State = RCC_HSI14_ON;
    RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
    RCC_OscInitStruct.HSI14CalibrationValue = 16;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    {
    Error_Handler();
    }
    /** Initializes the CPU, AHB and APB busses clocks
    */
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
    |RCC_CLOCKTYPE_PCLK1;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;


    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
    {
    Error_Handler();
    }
    }


    /**
    * @brief ADC Initialization Function
    * [MENTION=17545]para[/MENTION]m None
    * @retval None
    */
    static void MX_ADC_Init(void)
    {


    /* USER CODE BEGIN ADC_Init 0 */


    /* USER CODE END ADC_Init 0 */


    ADC_ChannelConfTypeDef sConfig = {0};


    /* USER CODE BEGIN ADC_Init 1 */


    /* USER CODE END ADC_Init 1 */
    /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
    */
    hadc.Instance = ADC1;
    hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    hadc.Init.Resolution = ADC_RESOLUTION_12B;
    hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;
    hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
    hadc.Init.LowPowerAutoWait = DISABLE;
    hadc.Init.LowPowerAutoPowerOff = DISABLE;
    hadc.Init.ContinuousConvMode = DISABLE;
    hadc.Init.DiscontinuousConvMode = DISABLE;
    hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;
    hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
    hadc.Init.DMAContinuousRequests = DISABLE;
    hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    if (HAL_ADC_Init(&hadc) != HAL_OK)
    {
    Error_Handler();
    }
    /** Configure for the selected ADC regular channel to be converted.
    */
    sConfig.Channel = ADC_CHANNEL_0;
    sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
    sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
    if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
    {
    Error_Handler();
    }
    /** Configure for the selected ADC regular channel to be converted.
    */
    sConfig.Channel = ADC_CHANNEL_1;
    if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
    {
    Error_Handler();
    }
    /* USER CODE BEGIN ADC_Init 2 */


    /* USER CODE END ADC_Init 2 */


    }


    /**
    * @brief GPIO Initialization Function
    * [MENTION=17545]para[/MENTION]m None
    * @retval None
    */
    static void MX_GPIO_Init(void)
    {


    /* GPIO Ports Clock Enable */
    __HAL_RCC_GPIOA_CLK_ENABLE();


    }


    /* USER CODE BEGIN 4 */


    /* USER CODE END 4 */


    /**
    * @brief This function is executed in case of error occurrence.
    * @retval None
    */
    void Error_Handler(void)
    {
    /* USER CODE BEGIN Error_Handler_Debug */
    /* User can add his own implementation to report the HAL error return state */


    /* USER CODE END Error_Handler_Debug */
    }


    #ifdef USE_FULL_ASSERT
    /**
    * @brief Reports the name of the source file and the source line number
    * where the assert_param error has occurred.
    * [MENTION=17545]para[/MENTION]m file: pointer to the source file name
    * [MENTION=17545]para[/MENTION]m line: assert_param error line source number
    * @retval None
    */
    void assert_failed(char *file, uint32_t line)
    {
    /* USER CODE BEGIN 6 */
    /* User can add his own implementation to report the file name and line number,
    tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
    /* USER CODE END 6 */
    }
    #endif /* USE_FULL_ASSERT */


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


    خوب ایراد کار مشخص شد! نگاه کنید توی خط 52 تعریف شده hadc ولی شما توی برنامه خودتون hadc1 گذاشتید. ضمنا داخل تابع HAL_ADC_GetValue توی خط 133 شما باید مینوشتید hadc& تا درست کار کنه. همونطوری که گفتم 1& اصلا معنی نداره!!
  9. #9
    2008/12/03
    6
    0

    پاسخ : خطای نشناختن hadc1 در IAR

    سپاس
    ممنون از لطف تون
نمایش نتایج: از 1 به 9 از 9

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

  1. نشناختن برد mega2560
    توسط jafar2000 در انجمن خانواده Arduino
    پاسخ: 0
    آخرين نوشته: 2015/09/10, 00:47
  2. مشکل نشناختن ميکرو
    توسط a.ferdosi در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2014/01/18, 22:20
  3. نشناختن atmega8L
    توسط 603 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2013/12/20, 12:42
  4. ارور نشناختن برد at91sam7x256
    توسط abbasalifix در انجمن ATMEL
    پاسخ: 2
    آخرين نوشته: 2012/11/24, 23:52
  5. خطای بسکام یا شاید خطای برنامه من
    توسط mohsenjooon در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2010/09/05, 22:25

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

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

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

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

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