|
Проблема с Keil, но скорее всего со мной, Error: L6218E: Undefined symbol assert_failed |
|
|
|
Jan 23 2013, 19:02
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Jan 24 2013, 09:24
|
Участник

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

|
Я пробовал и с этой строкой и без неё, всё равно не работает(
|
|
|
|
|
Jan 24 2013, 09:34
|
Участник

Группа: Участник
Сообщений: 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 Хм, с одной строкой не пробовал, позже обязательно отпишусь, сейчас на работе.
|
|
|
|
|
Jan 24 2013, 15:39
|
Участник

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

|
Попробовал, действительно компилится, всё хорошо. Но вот только светодиодики на плате не горят, может что то не так с кодом ? И почему компилятор выдает предупреждение если я переменную объявляю где нибудь в середине мэйна, и не ругается если сразу первой строчкой в мэйне, это нормально?
Сообщение отредактировал endasm - Jan 24 2013, 15:41
|
|
|
|
|
Jan 24 2013, 17:29
|
Участник

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

|
Так а почему же не загорается светодиод, где может быть ошибка в таком простом коде?
|
|
|
|
|
Jan 24 2013, 23:20
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Цитата(endasm @ Jan 24 2013, 12:29)  Так а почему же не загорается светодиод, где может быть ошибка в таком простом коде? А конфигурация RCC где-то в другом месте запрограммирована?
--------------------
ASB
|
|
|
|
|
Jan 25 2013, 05:02
|
Участник

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

|
Вы имеете ввиду тактирование порта? Тогда там оно включено:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //включаем тактирование порта С
|
|
|
|
|
Jan 25 2013, 13:22
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Цитата(allsettingsdone @ Jan 25 2013, 00:02)  Вы имеете ввиду тактирование порта? Тогда там оно включено:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //включаем тактирование порта С Нет, выбор источника клоков, частоты, програмирование PLL и пр.
--------------------
ASB
|
|
|
|
|
Jan 25 2013, 18:46
|
Участник

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

|
Такого не выбирал, и, честно сказать, даже не знал что это нужно делать. Подскажите пожалуйста как точно это сделать. Очень важно на первых порах получить хоть какой нибудь результат.
|
|
|
|
|
Jan 25 2013, 19:47
|
Участник

Группа: Участник
Сообщений: 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 */ в остальном работает.
|
|
|
|
|
Jan 25 2013, 20:19
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Цитата(endasm @ Jan 25 2013, 13:46)  Такого не выбирал, и, честно сказать, даже не знал что это нужно делать. Подскажите пожалуйста как точно это сделать. Очень важно на первых порах получить хоть какой нибудь результат. Можно посмотреть в файле stm32f10x_rcc.c. А потом сделать по-своему, если захочется.
--------------------
ASB
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|