реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Проблема с Keil, но скорее всего со мной, Error: L6218E: Undefined symbol assert_failed
endasm
сообщение Jan 23 2013, 19:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 9-07-12
Пользователь №: 72 673



Здравствуйте, после долгого сидения на AVR, решил перейти на STM32F10x. Купил плату STM32F10xVLDISCOVERY, в качестве среды разработки решил выбрать Keil(uVision).
При попытке откомпилировать код - постоянно выдает следующую ошибку: .\Out\test1.axf: Error: L6218E: Undefined symbol assert_failed (referred from stm32f10x_rcc.o).
Я понимаю что причина в неопределенной функции "assert_failed", но ничего поделать с этим не могу. Помогите разобраться. Код ниже:
CODE
#include <stm32f10x.h>
#include <stm32f10x_conf.h>
#include <stm32f10x_rcc.h>
#include <stm32f10x_gpio.h>

void InitAll(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //объявляем инициализационную структуру
GPIO_DeInit(GPIOC); //функция сбрасывающая текущие настройки порта в значения по умолчанию
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //включаем тактирование порта С

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9; //настройки будут относится к 8 и 9 битам
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //настраиваем порт С на выход push-pull
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //максимальная частота переключения
GPIO_Init(GPIOC, &GPIO_InitStructure); //функция инициализации порта с заданной структурой
}

int main(void)
{
InitAll();
while(1)
{
GPIOC->ODR = 0xFFFF; //выводим в порт С единицы
}
}


Сообщение отредактировал IgorKossak - Jan 23 2013, 20:03
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!

Прикрепленные файлы
Прикрепленный файл  test1.rar ( 505.49 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
flopix
сообщение Jan 24 2013, 09:24
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 21-06-12
Пользователь №: 72 429



Откройте настройки проекта (Alt+F7), вкладка с/с++, и в строке define уберите USE_FULL_ASSERT

Чтобы не писало предупреждение "main\main.c(26): warning: #1-D: last line of file ends without a newline" - добавьте пустую строку в самом конце файла main.c

Сообщение отредактировал flopix - Jan 24 2013, 09:20
Go to the top of the page
 
+Quote Post
endasm
сообщение Jan 24 2013, 09:24
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 9-07-12
Пользователь №: 72 673



Я пробовал и с этой строкой и без неё, всё равно не работает(
Go to the top of the page
 
+Quote Post
flopix
сообщение Jan 24 2013, 09:26
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 21-06-12
Пользователь №: 72 429



Работает

Build target 'test1'
linking...
Program Size: Code=2628 RO-data=320 RW-data=40 ZI-data=1632
FromELF: creating hex file...
".\Out\test1.axf" - 0 Error(s), 0 Warning(s).


Там в строке должно остаться только USE_STDPERIPH_DRIVER
Go to the top of the page
 
+Quote Post
endasm
сообщение Jan 24 2013, 09:34
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 9-07-12
Пользователь №: 72 673



Цитата(flopix @ Jan 24 2013, 12:26) *
Работает

Build target 'test1'
linking...
Program Size: Code=2628 RO-data=320 RW-data=40 ZI-data=1632
FromELF: creating hex file...
".\Out\test1.axf" - 0 Error(s), 0 Warning(s).


Там в строке должно остаться только USE_STDPERIPH_DRIVER

Хм, с одной строкой не пробовал, позже обязательно отпишусь, сейчас на работе.
Go to the top of the page
 
+Quote Post
endasm
сообщение Jan 24 2013, 15:39
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 9-07-12
Пользователь №: 72 673



Попробовал, действительно компилится, всё хорошо. Но вот только светодиодики на плате не горят, может что то не так с кодом ?
И почему компилятор выдает предупреждение если я переменную объявляю где нибудь в середине мэйна, и не ругается если сразу первой строчкой в мэйне, это нормально?

Сообщение отредактировал endasm - Jan 24 2013, 15:41
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jan 24 2013, 16:02
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(endasm @ Jan 24 2013, 17:39) *
И почему компилятор выдает предупреждение если я переменную объявляю где нибудь в середине мэйна, и не ругается если сразу первой строчкой в мэйне, это нормально?

Видимо компилируется в каком-то древнем Си-стандарте. Поищите галку в настройках проекта навроде С99...
Go to the top of the page
 
+Quote Post
endasm
сообщение Jan 24 2013, 17:29
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 9-07-12
Пользователь №: 72 673



Так а почему же не загорается светодиод, где может быть ошибка в таком простом коде?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 24 2013, 17:32
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(_Артём_ @ Jan 24 2013, 19:02) *
Видимо компилируется в каком-то древнем Си-стандарте. Поищите галку в настройках проекта навроде С99...

галки такой нет, нужно в опциях компилятора Misc Controls написать --C99
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jan 24 2013, 23:20
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(endasm @ Jan 24 2013, 12:29) *
Так а почему же не загорается светодиод, где может быть ошибка в таком простом коде?

А конфигурация RCC где-то в другом месте запрограммирована?


--------------------
ASB
Go to the top of the page
 
+Quote Post
allsettingsdone
сообщение Jan 25 2013, 05:02
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 22-01-13
Пользователь №: 75 284



Вы имеете ввиду тактирование порта? Тогда там оно включено:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //включаем тактирование порта С
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jan 25 2013, 13:22
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(allsettingsdone @ Jan 25 2013, 00:02) *
Вы имеете ввиду тактирование порта? Тогда там оно включено:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //включаем тактирование порта С

Нет, выбор источника клоков, частоты, програмирование PLL и пр.


--------------------
ASB
Go to the top of the page
 
+Quote Post
endasm
сообщение Jan 25 2013, 18:46
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 9-07-12
Пользователь №: 72 673



Такого не выбирал, и, честно сказать, даже не знал что это нужно делать. Подскажите пожалуйста как точно это сделать. Очень важно на первых порах получить хоть какой нибудь результат.
Go to the top of the page
 
+Quote Post
andries5
сообщение Jan 25 2013, 19:47
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 15-01-09
Из: Moldova
Пользователь №: 43 421



Пробую у себя, все работает. В файле stm32f10x.h у Вас выбран CPU
#define STM32F10X_XL /*!< STM32F10X_XL: STM32 XL-density devices */
а в stm32vldiscovery используется STM32F100RB, это значит
#define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */
в остальном работает.
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jan 25 2013, 20:19
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(endasm @ Jan 25 2013, 13:46) *
Такого не выбирал, и, честно сказать, даже не знал что это нужно делать. Подскажите пожалуйста как точно это сделать. Очень важно на первых порах получить хоть какой нибудь результат.

Можно посмотреть в файле stm32f10x_rcc.c. А потом сделать по-своему, если захочется.


--------------------
ASB
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 15:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01465 секунд с 7
ELECTRONIX ©2004-2016