Перейти к содержанию
    

STM32F0+Keil=простой старт

Добрый день уважаемые форумчане!

Бьюсь уже третий день. Не могу начать работать с СТМ32Ф0...

В интернете полно примеров для STM32f1 серии, а для 0 серии информации "0".

Помогите (подскажите) пошаговую настройку Кейла для работы с STM32F0. Из отладочного комплекта имеется STM32F0Discovery

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет. Где-то я тебя видел :)

Надо было здесь писать - http://electronix.ru/forum/index.php?showforum=190 . Модераторы перенесут.

 

1. Запустить кейл, зайти в меню Project -> New project

2. Указать путь, где будет лежать проект.

3. Указать имя файла проекта. Например, test1. Жмём сохранить.

4. Выбираем из кучи нужный процессор, например, STM32F051. Я не знаю, какой там у тебя на плате стоит, сам укажи, какой надо.

5. Кейл спросит, скопировать ли файл startup_.....s в каталог проекта. Лучше согласиться.

6. В принципе, всё. Но в этом виде проект неработоспособен, т.к. кейл не генерит main и не добавляет в проект ещё один важный файл - system_stm32f0xx.c .В нём лежит код инициализации проца (тактовый генерратор и пр.). Этот файл есть в директории кейла, у меня это C:\Keil\ARM\Startup\ST\STM32F0xx\. Ну и main добавить.

 

Т.к. кейл жутко гадит временными и объектными файлами в каталог проекта, то лучше держать свои модули (файлы *.c) в каком-нибудь подкаталоге.

Результат прилагаю.

 

Библиотеки периферии и пр. надо качать с сайта ST и добавлять нужное в проект руками.

Если что, спрашивай.

TestF0.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет. Где-то я тебя видел :)

Привет! Спасибо большое за помощь ;)

 

Подскажи, где взять этот пакет? stm32f0xx stdperiph_lib

На сайте производителя по поиску ни в какую не находит!!!!!!! Уже готов разбить "аП стену" монитор :))

 

Где вообще взять этот злосчастный пакет библиотек?! Надо: CMSIS & SPL

 

Если что, спрашивай.

 

СПАСИБО огромнейшее! Скачал твой пример, и проект от компилировался!!! :)

Теперь надо что то полезное (работоспособное) откомпилировать :)

 

Изменено пользователем Artos5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тоже пару дней ковыряюсь, с STM32F0Discovery, хочу выполнить маленькую задачу. Пока проблем не увидел. А в чем у Вас проблемы? Напишите, поможем чем сможем.

В рабочей папке проекта создал папки: CMSIS, StdLib, Project, Source.

В CMSIS скопировал startup_stm32f0xx.s, stm32f0xx.h, system_stm32f0xx.c и system_stm32f0xx.h.

В StdLib папки inc и src из STM32F0xx_StdPeriph_Driver.

В папке Project сохраняю сам проект.

В Source stm32f0xx_it.c, stm32f0xx_it.h, stm32f0xx_conf.h и также создаю, в самом Keil, main.c, добавляю еще main.h, а также init_main.c и init_main.h, в которых инициализирую модули.

При создании проекта выбираю нужный камень и в опциях проекта в С/С++ Define пишу USE_STDPERIPH_DRIVER,USE_FULL_ASSERT. Там же в Include Parts прописываю пути к папкам Source, CMSIS, StdLib/inc.

Будут вопросы пишите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу "поблымать" светодиодом . Но дальше не пойму как это сделать..

Я так понимаю надо подключить библиотеку для работы с вводом/выводом , но где ее взять?

Проц в твоем проекте выбран в точности такой как у меня стоит на плате :)

 

В CMSIS скопировал startup_stm32f0xx.s, stm32f0xx.h, system_stm32f0xx.c и system_stm32f0xx.h

 

Спасибо за помощь Вам!

Где взять выше указанные файлы?

 

Можно поделиться настроенным проектом со всеми выше указанными файлами? Буду Вам очень признателен! :)

 

Изменено пользователем Artos5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот архив в сайта ST - http://www.st.com/web/en/catalog/tools/PF257885 для твоей платы.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://www.st.com/web/en/catalog/tools/PF257884

Скачать STSW-STM32048. В нем есть папка STM32F0xx_StdPeriph_Lib_V1.0.0, а в ней папка Libraries. Вот там все есть CMSIS & SPL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот архив в сайта ST - http://www.st.com/web/en/catalog/tools/PF257885 для твоей платы.

 

Пребольшущее Тебе спасибо ;)

А то по поиску на ихнем сайте ничего не находило.........

Буду сейчас ковырять :)

 

 

В Source stm32f0xx_it.c, stm32f0xx_it.h, stm32f0xx_conf.h и также создаю, в самом Keil, main.c, добавляю еще main.h, а также init_main.c и init_main.h, в которых инициализирую модули.

Прошу прощение за возможно ламерский вопрос...

В архиве нашел мешок таких файлов. Какие из них надо добавить к проекту?

И всеже для меня , было бы проще разобраться в прикрепленном проекте.. А то я что то уже запутался : ))

post-77613-1374400027_thumb.png

Изменено пользователем Artos5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу "поблымать" светодиодом . Но дальше не пойму как это сделать..

 

Можно поделиться настроенным проектом со всеми выше указанными файлами? Буду Вам очень признателен! :)

Создал проект, пробуйте.

Blink_LED_.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создал проект, пробуйте.

 

Спасибо большое! Откомпилировал, залил, работает! ;)

 

 

пробуйте.

 

В вашем коде есть строчка:

if(Butt_User_Get_State != RESET)
        {
            LED_Blue_On;
            LED_Greeen_On;
        }
        else
        {
            LED_Blue_Off;
            LED_Greeen_On;
            Delay(1000);
            LED_Blue_On;
            LED_Greeen_Off;
            Delay(1000);
        }

 

Все понятно кроме одного. Где взялась строчка: Butt_User_Get_State и строчка: RESET

Чтобы было "задефайнено" не вижу..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А то по поиску на ихнем сайте ничего не находило.........

 

Надо искать по STM32F0Discovery. Эта ссылка оттуда :rolleyes: .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все понятно кроме одного. Где взялась строчка: Butt_User_Get_State и строчка: RESET

Чтобы было "задефайнено" не вижу..

 

Вопрос снят, нашел :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создал проект, пробуйте.

Второй ламерский вопрос:

 

void Delay(__IO uint32_t nTime)
{
  TimingDelay = nTime;
  while(TimingDelay != 0);
}

 

Не понятный для меня код... как выполняется декремент?

 

Если бы было так:

 

void Delay(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay )
{
TimingDelay--;
}
}

 

Вопросов бы не было вовсе :)

 

И тоже для меня странно... нету объявления TimingDelay это переменная или это какой то системный таймер?

Изменено пользователем Artos5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понятный для меня код... как выполняется декремент?

 

И тоже для меня странно... нету объявления TimingDelay это переменная или это какой то системный таймер?

глобальная переменная. Декремент смотреть в прерывании системного таймера

объявлена в main.c (как вы ищите - непонятно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...