На чтение 10 мин Обновлено 17.01.2023
Русские Блоги
После установки новой версии KEIL при компиляции возникает проблема, что core_cm3.h не открывается.
Я предпочитаю платить за новую версию. После обновления Keil до последней версии MDK 5.26 возникли следующие проблемы:
d:Keil_v5ARMPACKKeilSTM32F1xx_DFP2.2.0DeviceIncludestm32f10x.h(483): error: #5: cannot open source input file «core_cm3.h»: No such file or directory
Проблем у меня очень много, до проекта было хорошо! ! Baidu обнаружил, что пользователи сети предлагают следующее:
Просто добавьте вручную конкретный путь, попробовал этот метод, действительно выполнимый! !
Но, будучи ленивым, я вскоре обнаружил, что этот метод был довольно жестким, и я думаю, что за мной стоят десятки проектов. . . . . Не торопитесь, есть способ, я ленив, просто поставьте D: Keil_v5 ARM PACK ARM CMSIS 5.4.0 CMSIS Include
Скопируйте содержимое папки в текущий ARMCC каталога установки, например (мой каталог — D: Keil_v5 ARM ARMCC include)
Удалите путь к файлу заголовка, добавленный ранее, скомпилируйте снова, хорошо, без проблем!
Источник
Error in include chain keil
Всем привет! Ребята, кричу HELP. Возникла проблема, с которой уже неделю сижу, никак не могу решить ее, что я только не делал.
В общем, купил я года так 3-4 назад stm32f103c8c6 у одного чувака, взял новый, но он их тоже с алиэкпресс, помойму, скупает.
И начал работать с этой платой. Работаю я в CubIDE, все прекрасно работало, писал себе проект. Потом этот микроконтроллер начал работать с косяками, начались какие-то мигания не нужные и тд и тп, я подумал что ему хана, не полностью, но хана. Заказал новые, и тут все началось! Они не прошиваются! Сначала заказал 2 штуки с алиэкспрес, не прашиваются, потом еще заказал и они тоже не прошиваются, выходит следующая ошибка:
«Error in final launch sequence:
Failed to start GDB server
Failed to start GDB server
Error in initializing ST-LINK device.
Reason: (18) Could not verify ST device! Abort connection.»
Но через утилиту «STM32 ST-LINK Utility» они все прошиваются! Без проблем!
Программатор ST-LINK V2 (китайский). Проблема скорее всего не внем, ведь первый микроконтроллер прошивается же. В утилите он тоже конектится:
Как я пытался решить эту проблему:
1)Были мысли, что в CubIDE есть защита от китайских микроконтроллеров, но ведь первый, который прошивается, он то тоже из китая. Но наверное это не так!
2) Делал «Firmware update» через утилиту «STM32 ST-LINK Utility»
3) В файле «stm32f1x.cfg» изменял «0x1ba01477» на «0x2ba01477»
4) Менял настройки на «ST-LINK(Open OCD)»
https://disk.yandex.ru/i/-bTJeWabcyBcUQ
Здесь я выложил документ, где полностью все расписано и имеются все фото, в том числе фото самих микроконтроллеров один из которых прошивается, другой нет, для визуальной оценки. Кот не позволяет здесь загружать фото больше 5 штук.
Я уже теряюсь в догадках, не знаю что и делать. Закупил 10 штук таких STM32, неужели мне их придется выкидывать, и забыть про эти бюджетные варинты и работать только с дорогими оригиналами? Кто сталкивался с этим подскажите пожалуйста.
Реклама |
ART_ME |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Карма: -22 |
|
I am getting some errors when trying to #include iostream. I know the problem is iostream because my project compiled before, but after including iostream I have errors.
I am trying to use iostream because printf does not appear to work and I want to use cout.
I am using keil uvision 5 and yes my file is saved as main.cpp, however there are c files in my project but I would think that doesn´t matter.
Does anyone have any ideas?
oops forgot to include the errors:
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol __fread_bytes_avail (referred from ios.o).
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol mbsinit (referred from ios.o).
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol wmemmove (referred from ios.o).
it is also saying:
error in include chain (__exception.h): non-const lvalue reference to type '__builtin_va_list' cannot bind to a value of unrelated type 'va_list' (aka 'std::__va_list')
error in include chain (ostream): explicit specialization of '_C_is_cout' after instantiation
My main file is extremely long. I understand it is hard to say without seeing it but I am just looking for a general answer. Why would these errors ever occur in a std library file? There should be no errors in a std lib file
Hi All,
I just started learning ARM and I got a STM32L0 Nucleo board with
Keils uVision5 as the environment. I used STM32Cube to generate the
start-up code and got a blinky example and a button external
interrupt example working.
I’m trying to get a Timer Interrupt example working by following
this tutorial:
lostwire.wordpress.com/…/
But I run into some definition problem, error as:
CubeProjectOne ConfigurationCubeProjectOne Configuration.axf: Error: L6218E: Undefined symbol HAL_TIM_Base_Init (referred from main.o). CubeProjectOne ConfigurationCubeProjectOne Configuration.axf: Error: L6218E: Undefined symbol HAL_TIM_Base_Start_IT (referred from main.o).
I checked that HAL_TIM_Base_Init and HAL_TIM_Base_Start_IT are
located in stm32l0xx_hal_tim.h line 1152, 1153 as:
HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim); HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim);
But in stm32l0xx_hal_tim.h line 47 (47 #include
«stm32l0xx_hal_def.h») there’s a red cross and when I hover over it,
it says «error in include chain stm32l0xx_hal_rcc_ex.h: unknown type
name ‘HAL_StatusTypeDef.» that repeated for a whole bunch of
different header files.
Then in file «stm32l0xx_hal_def.h», which is where
HAL_StatusTypeDef is located, it has the same error «error in include
chain stm32l0xx_hal_rcc_ex.h: unknown type name ‘HAL_StatusTypeDef.»
at line 48 (48 #include «stm32l0xx.h»).
I’m not sure if it’s a linker problem, multiple definition or
what, but I really can’t figure out why.
Please see my main code as attached.
Thanks!
/* Includes ------------------------------------------------------------------*/ #include "stm32l0xx.h" #include "stm32l0xx_hal.h" #include "stm32l0xx_hal_tim.h" // For TIM_HandleTypeDef /* USER CODE BEGIN PV */ volatile uint32_t blink_period = 500; TIM_HandleTypeDef TIM_Handle; /* Set Up Timer --------------------------------------------------------------*/ void Timer_SetUp (void) { // 1. Enable Timer __TIM2_CLK_ENABLE(); // 2. set up to toggle at 500 ms TIM_Handle.Init.Prescaler = 15; TIM_Handle.Init.CounterMode = TIM_COUNTERMODE_UP; TIM_Handle.Init.Period = 62499; // 3. Specify HW timer to be used TIM_Handle.Instance = TIM2; // 4. Initialise and start interrupt HAL_TIM_Base_Init(&TIM_Handle); // Init timer HAL_TIM_Base_Start_IT(&TIM_Handle); // start timer interrupts // 5. Unmask timer HAL_NVIC_SetPriority(TIM2_IRQn, 0, 1); HAL_NVIC_EnableIRQ(TIM2_IRQn); } /* Timer handler -------------------------------------------------------------*/ void TIM4_IRQHandler(void) { __HAL_TIM_CLEAR_FLAG(&T2_Handle, TIM_FLAG_UPDATE); /*Some code here */ } /** System Clock Configuration */ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; __PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.MSIState = RCC_MSI_ON; RCC_OscInitStruct.MSICalibrationValue = 0; RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_5; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; HAL_RCC_OscConfig(&RCC_OscInitStruct); RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0); HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); }
Я получаю некоторые ошибки при попытке включить iostream. Я знаю, что проблема в iostream, потому что мой проект компилировался раньше, но после включения iostream у меня возникают ошибки.
Я пытаюсь использовать iostream, потому что printf не работает и я хочу использовать cout.
Я использую keil uvision 5 и да, мой файл сохраняется как main.cpp, однако в моем проекте есть c-файлы, но я думаю, что это не имеет значения.
У кого-нибудь есть какие-либо идеи?
упс забыл включить ошибки:
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol __fread_bytes_avail (referred from ios.o).
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol mbsinit (referred from ios.o).
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol wmemmove (referred from ios.o).
это также говорит:
error in include chain (__exception.h): non-const lvalue reference to type '__builtin_va_list' cannot bind to a value of unrelated type 'va_list' (aka 'std::__va_list')
error in include chain (ostream): explicit specialization of '_C_is_cout' after instantiation
Мой основной файл очень длинный. Я понимаю, что трудно сказать, не видя этого, но я просто ищу общий ответ. Почему эти ошибки появляются в файле библиотеки std? В файле std не должно быть ошибок
1
Решение
Ты пытаешься написать
' #include "iostream"'
Может быть, вы должны попробовать написать так:
'#include "iostream.h"'
Просто мое предположение, хотя
0
Другие решения
My project is compiling and working, but there is this very annoying issue when Keil thinks there is a problem with __STATIC_INLINE in the file cmsis_armcc.h.
It indicates an error throughout the include chain and it makes its way up to the top main function (when including nrf.h).
This makes almost every file I use having one red cross in it indicating an error.
When hunting for real bugs, this becomes very annoying and distracting.
So far I tried to put compiler definition into Project Options, but that didnt help.
Is there anything I can do about this?
I am using Keil v5.16a and SDK v9.0.0
-
can you post that error message here, These defines are defined in core_cm0.h file
#if defined ( __CC_ARM ) #define __ASM __asm /*!< asm keyword for ARM Compiler */ #define __INLINE __inline /*!< inline keyword for ARM Compiler */ #define __STATIC_INLINE static __inline
-
this is the include chain:
1 nrf51.h
2 core_cm0.h
3 core_cmInstr.h
4 cmsis_armcc.hthis is the error message at cmsis_armcc.h:
»
error: unknown type name ‘__STATIC_INLINE’
error: expected ‘;’ after top level declarator
« -
which version of CMSIS did you install? I have installed CMSIS core 4.1.0 and i do not see any CMSIS_armcc.h included inside core_cmInstr.h file.
Also the __STATIC and INLINE declaration inside core_cmo.h file are done before core_cmInstr.h file is include, so they should be visible to all the include chain after that. Not sure why you get this error. Is it possible that you edited any files for debugging and something has changed? have you tried uninstalling CMSIS and re-installing it again?
-
I had the latest (4.4.0) CMSIS installed.
I tried what happens when I downgrade to 4.1.0 and indeed this problem was not present with that version. I then upgraded back to 4.4.0 and the problem was present again.
So unless there’s a quick trick to solve this, I guess I should go with a lower version. -
Hmm .. seems some dependency change happened over the upgrade, Can’t find anything in the release notes of CMSIS. Better to stick with 4.1.0 for now ..
Я получаю некоторые ошибки при попытке # включить iostream. Я знаю, проблема в iostream, потому что мой проект был скомпилирован ранее, но после включения iostream у меня есть ошибки.
Я пытаюсь использовать iostream, потому что printf не работает, и я хочу использовать cout.
Я использую keil uvision 5 и да, мой файл сохраняется как main.cpp, однако в моем проекте есть c файлы, но я думаю, что это не имеет значения.
У кого-нибудь есть идеи?
oops забыл включить ошибки:
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol __fread_bytes_avail (referred from ios.o).
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol mbsinit (referred from ios.o).
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol wmemmove (referred from ios.o).
он также говорит:
error in include chain (__exception.h): non-const lvalue reference to type '__builtin_va_list' cannot bind to a value of unrelated type 'va_list' (aka 'std::__va_list')
error in include chain (ostream): explicit specialization of '_C_is_cout' after instantiation
Мой основной файл очень длинный. Я понимаю, что это трудно сказать, не видя этого, но я просто ищу общий ответ. Почему эти ошибки происходят в файле std библиотеки? Не должно быть ошибок в файле std lib
Я получаю некоторые ошибки при попытке # включить iostream. Я знаю, проблема в iostream, потому что мой проект был скомпилирован ранее, но после включения iostream у меня есть ошибки.
Я пытаюсь использовать iostream, потому что printf не работает, и я хочу использовать cout.
Я использую keil uvision 5 и да, мой файл сохраняется как main.cpp, однако в моем проекте есть c файлы, но я думаю, что это не имеет значения.
У кого-нибудь есть идеи?
oops забыл включить ошибки:
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol __fread_bytes_avail (referred from ios.o).
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol mbsinit (referred from ios.o).
STM324x9I-EVAL-MB1063STM324x9I-EVAL-MB1063.axf: Error: L6218E: Undefined symbol wmemmove (referred from ios.o).
он также говорит:
error in include chain (__exception.h): non-const lvalue reference to type '__builtin_va_list' cannot bind to a value of unrelated type 'va_list' (aka 'std::__va_list')
error in include chain (ostream): explicit specialization of '_C_is_cout' after instantiation
Мой основной файл очень длинный. Я понимаю, что это трудно сказать, не видя этого, но я просто ищу общий ответ. Почему эти ошибки происходят в файле std библиотеки? Не должно быть ошибок в файле std lib