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

 
 
> STM32 Использование стандартной библиотеки, Не узнает имя регистров
BlackOps
сообщение Jan 27 2012, 08:07
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Использую под Линукс: Eclipse + GNU ARM PLUGIN + CodeSourcery LITE

скачал с сайта ST следующие файлы, и включил их в проект:
core_cm3.h
startup_stm32f10x_hd.s
stm32f10x.h
system_stm32f10x.h

и добавил еще вот такой линкер скрипт:
Код
MEMORY
{
    sram (W!RX) : ORIGIN = 0x20000000, LENGTH = 64k
    flash (RX) : ORIGIN = 0x08000000, LENGTH = 512k
}

SECTIONS
{  
    .text :
    {
        . = ALIGN(4);
        _text = .;
        PROVIDE(stext = .);
        KEEP(*(.isr_vector))
        KEEP(*(.init))
        *(.text .text.*)        
        *(.rodata .rodata.*)        
        *(.gnu.linkonce.t.*)
        *(.glue_7)
        *(.glue_7t)
        *(.gcc_except_table)
        *(.gnu.linkonce.r.*)
        . = ALIGN(4);
        _etext = .;
        _sidata = _etext;
        PROVIDE(etext = .);  
             _fini = .;
                *(.fini)

    } >flash

    .data : AT (_etext)
    {
        . = ALIGN(4);
        _sdata = .;
        *(.ramfunc .ramfunc.* .fastrun .fastrun.*)
        *(.data .data.*)
        *(.gnu.linkonce.d.*)
        . = ALIGN(4);
        _edata = .;
    } >sram
        
        .ARM.extab :
        {
            *(.ARM.extab*)
        } >sram
        
        __exidx_start = .;
        .ARM.exidx :
        {
            *(.ARM.exidx*)
        } >sram
        __exidx_end = .;
        
    .bss (NOLOAD) : {
        . = ALIGN(4);
        /* This is used by the startup in order to initialize the .bss secion */
        _sbss = .;
        *(.bss .bss.*)
        *(.gnu.linkonce.b.*)
        *(COMMON)
        . = ALIGN(4);        
        _ebss = .;
    } >sram
    
    end = .;
    PROVIDE( _estack = 0x20010000 );
}


вот простейшая программа где я хочу сконфигурировать порт А:
Код
#include <stdio.h>
#include "stm32f10x.h"



int main () {
// int i;
// int n;


    GPIOA->CRL = 0x0;



  while(1);
  return 0;
}


почемуто он мне выдает:
Type 'GPIOA' could not be resolved main.c /armtest1 line 11 Semantic Error


странно, ведь в файле stm32f10x.h есть корректное описание данного порта, и в основную программу этот файл включен.

когда компилю без этой строчки, то проект собирается нормально и создается исполняемый файл.

что может быть не так?


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Jan 27 2012, 08:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



А как компиллятор узнает ядро?
Ключики -mcpu=cortex-m3 -mthumb присутствуют?
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jan 27 2012, 15:18
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(adnega @ Jan 27 2012, 13:40) *
А как компиллятор узнает ядро?
Ключики -mcpu=cortex-m3 -mthumb присутствуют?

да. эта линия прописана в настройках. без линии: GPIOA->CRL = 0x0; все компилится нормально


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 28 2012, 06:34
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Добавьте в начале файла строчку
#include "stm32f10x.h"


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jan 30 2012, 01:07
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(AHTOXA @ Jan 28 2012, 11:34) *
Добавьте в начале файла строчку
#include "stm32f10x.h"

не помогло. убрал #include <stdio.h> тоже. т.к. это не нужно.

сейчас ковыряю разные ссылки с инструкциями... все пишут по разному, но то как у меня все установлено выглядит правильным и почти как в инструкциях.

просто сам факт того что файл заголовка с декларацией порта включен а компилер его не хочет принимать непонятен!

что еще может быть упущено?


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 30 2012, 05:39
Сообщение #6


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Ну чудес-то не бываетsm.gif
GPIOA описан в файле stm32f10x.h. Поэтому при выполнении двух условий:
1. Вы включили stm32f10x.h в свой Си-файл;
2. Компилятор нашёл файл stm32f10x.h.
всё должно быть нормально.
Как сейчас у вас ругается компилятор? Не пишет ли он случайно, что не нашёл stm32f10x.h?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jan 30 2012, 09:13
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(AHTOXA @ Jan 30 2012, 10:39) *
Как сейчас у вас ругается компилятор? Не пишет ли он случайно, что не нашёл stm32f10x.h?

нет. вот моя ошибка которая внизу в окошке видна:
Description Resource Path Location Type
Type 'GPIOA' could not be resolved main.c /armtest1 line 13 Semantic Error


А может всетаки дело связано как-то с линкером?


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 30 2012, 09:29
Сообщение #8


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Может там ещё что-то компилятор выдаёт, до этой строчки.
Вы переключитесь внизу на вкладку "Console", и посмотрите, что там пишется. Попробуйте ещё поместить файл stm32f10x.h в тот же каталог, где находится ваша программа.
Кстати, если мне не изменяет память, для корректной работы stm32f10x.h нужно определить тип используемого процессора, что-то типа
#define STM32F10X_HD


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
BlackOps
сообщение Jan 31 2012, 02:13
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Цитата(AHTOXA @ Jan 30 2012, 14:29) *
Может там ещё что-то компилятор выдаёт, до этой строчки.
Вы переключитесь внизу на вкладку "Console", и посмотрите, что там пишется.

Вот распечатка из консоли:

**** Build of configuration Debug for project armtest1 ****

make all
Invoking: ARM Sourcery Linux GNU Print Size
arm-none-eabi-size --format=berkeley armtest1.elf
text data bss dec hex filename
20 0 0 20 14 armtest1.elf
Finished building: armtest1.siz


**** Build Finished ****

Цитата(AHTOXA @ Jan 30 2012, 14:29) *
Попробуйте ещё поместить файл stm32f10x.h в тот же каталог, где находится ваша программа.

так он в том же каталоге и находится, и в директории проекта где сама программа.

Цитата(AHTOXA @ Jan 30 2012, 14:29) *
Кстати, если мне не изменяет память, для корректной работы stm32f10x.h нужно определить тип используемого процессора, что-то типа
#define STM32F10X_HD

это сделано, без этого он бы другую ошибку выдал. с этим проблем нет.


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- BlackOps   STM32 Использование стандартной библиотеки   Jan 27 2012, 08:07
|- - AHTOXA   Цитата(BlackOps @ Jan 31 2012, 08:13) ***...   Jan 31 2012, 02:36
|- - BlackOps   Цитата(AHTOXA @ Jan 31 2012, 06:36) Так у...   Jan 31 2012, 07:06
- - _Ivan_33   http://h0rr0rr-drag0n.blogspot.com/2011/08...inux-...   Jan 27 2012, 08:43
- - редактор   Возможно компилятор не понимает обращение -> (ч...   Jan 30 2012, 12:30
|- - aaarrr   Цитата(редактор @ Jan 30 2012, 16:30) Воз...   Jan 30 2012, 12:49
|- - ViKo   Цитата(aaarrr @ Jan 30 2012, 15:49) А руг...   Jan 31 2012, 07:51
- - Сергей Борщ   Простите что влезаю, но в вашем скрипте ошибка. О...   Jan 31 2012, 07:14


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

 


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


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