|
|
  |
Не могу полностью подключить библиотеку в KEIL |
|
|
|
Apr 15 2015, 15:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Надо было в примеры заглянуть, там в каждом main.c есть примерно такой кусок CODE #ifdef USE_FULL_ASSERT /** * @brief The assert_param macro is used for function's parameters check. * @param expr: If expr is false, it calls assert_failed function * which reports the name of the source file and the source * line number of the call that failed. * If expr is true, it returns no value. * @retval None */ #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) /* Exported functions ------------------------------------------------------- */ void assert_failed(uint8_t* file, uint32_t line); #else #define assert_param(expr) ((void)0) #endif /* USE_FULL_ASSERT */ и такой CODE #ifdef USE_FULL_ASSERT
/** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param 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
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
Apr 15 2015, 16:00
|
Гуру
     
Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164

|
Вставил. Ошибка не исчезла Заглянул в примеры (от свежей, пятой версии) - там нет такого кода. Это не мешает добавлятьгалки GPIO и RCC и нормально компилироваться. А приведенные фрагменты - да, приходилось раньше видеть. Вот мой чудо проект, если это действительно делается легким движением руки и вас не затруднит - гляньте. Я не пойму, что-то поменялось в философии Keil в 5 версии? Натыкал я галочками все что мне нужно, доволен... Но вот потребовалось подключить файл с обработкой прерываний "stm32f4xx_it.h" Что я сделал 1. Добавил файл в дерево проекта 2. ДОбавил путь к папке с .h файлами (хотя там пусто, где же новый keil хранит эти пути? 3. Добавил в main.c строку #include "stm32f4xx_it.h" Вылетают ошибки Цитата .\out\mynewapp.axf: Error: L6218E: Undefined symbol DCMI_ClearITPendingBit (referred from stm32f4xx_it.o). .\out\mynewapp.axf: Error: L6218E: Undefined symbol DCMI_GetITStatus (referred from stm32f4xx_it.o). .\out\mynewapp.axf: Error: L6218E: Undefined symbol DMA_ClearITPendingBit (referred from stm32f4xx_it.o). .\out\mynewapp.axf: Error: L6218E: Undefined symbol DMA_GetITStatus (referred from stm32f4xx_it.o). Я что-то забыл сделать?
Сообщение отредактировал zheka - Apr 15 2015, 15:22
|
|
|
|
|
Apr 15 2015, 16:17
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zheka @ Apr 15 2015, 19:10)  Так ведь визард в 5 версии подключает HAL библиотеку - замену STD. Ох уж эти визарды. Так ведь в проекте у Вас собирается StdPeriph, от него и ошибки. Цитата(zheka @ Apr 15 2015, 19:10)  А stm32f4xx_conf.h у меня и так подцепилась к main.c (судя по дереву проекта) К main.c его подцеплять бесполезно, он должен быть подключен на этапе компиляции misc.c, иначе оно не соберется.
|
|
|
|
|
Apr 15 2015, 16:17
|
Гуру
     
Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164

|
Ага... черт.. нужно ж было галки напротив DCMI и DMA поставить, ошибки исчезли. И даже без глобальногог дефайна все компилится. Но чертов assert_param остался... с ним ЧЕ ДЕЛАТЬ? Цитата Ох уж эти визарды Я не сторонник визардов. Но проект собранный с помощью визарда я скачал в сети - это был единственный рабочий проект с USB_CDC, который я искал месяц под свою среду и свой камень. Причем версии библиотек в нем строго определенные, поставить другие, даже самые последние - не будет работать комповый драйвер виртуального компорта. Так что тут у меня руки связаны. Цитата К main.c его подцеплять бесполезно А я специально и не цеплял. Просто он есть в ниспадающем списке от main.c, значит проект его видит.
Сообщение отредактировал zheka - Apr 15 2015, 16:20
|
|
|
|
|
Apr 15 2015, 17:51
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zheka @ Apr 15 2015, 20:41)  НАшел, где эти ассерты определены - в stm32f4xx_conf.h Ну так он же подключен, чего ему не хвататет? В проект включен, а в исходниках библиотек игнорируется из-за отсутствия USE_STDPERIPH_DRIVER. Цитата(zheka @ Apr 15 2015, 20:41)  Но.. в моей версии библиотек 1.0.8 нет HAL драйвера, судя по папкам там все же SPL. Однако директива USE_STDPERIPH_DRIVER вызывает кучу ошибок в файлах в папке RTE_DRIVER Ды ешкин кот, что ж делать-то.. Какие ошибки?
|
|
|
|
|
Apr 15 2015, 17:58
|
Гуру
     
Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164

|
ОШибка одна и та же D:\Keil Projects\mynewapp\RTE\Device\STM32F407VG\stm32f4xx_conf.h(90): error: #5: cannot open source input file "misc.h": No such file or directory А дальше загадочная строка #include "misc.h" /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */ Подключаю Misc.h из папки D:\Keil\ARM\Pack\Keil\STM32F4xx_DFP\1.0.8\Device\StdPeriph_Driver\inc И появляются 90 ошибок типа Цитата D:\Keil\ARM\PACK\Keil\STM32F4xx_DFP\1.0.8\RTE_Driver\GPIO_STM32F4xx.h(85): error: #40: expected an identifier GPIO_AF_TIM14 = 9,
Сообщение отредактировал zheka - Apr 15 2015, 18:01
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|