Jump to content

    
Sign in to follow this  
Artos5

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

Recommended Posts

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

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

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

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

Share this post


Link to post
Share on other sites

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

Надо было здесь писать - 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

Share this post


Link to post
Share on other sites
Привет. Где-то я тебя видел :)

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

 

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

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

 

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

 

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

 

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

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

 

Edited by Artos5

Share this post


Link to post
Share on other sites

Я тоже пару дней ковыряюсь, с 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.

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

 

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

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

 

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

 

Edited by Artos5

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
Вот архив в сайта 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

Edited by Artos5

Share this post


Link to post
Share on other sites
Хочу "поблымать" светодиодом . Но дальше не пойму как это сделать..

 

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

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

Blink_LED_.rar

Share this post


Link to post
Share on other sites
Создал проект, пробуйте.

 

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

 

 

пробуйте.

 

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

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

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

Share this post


Link to post
Share on other sites
Все понятно кроме одного. Где взялась строчка: Butt_User_Get_State и строчка: RESET

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

 

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

 

Share this post


Link to post
Share on other sites
Создал проект, пробуйте.

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

 

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

 

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

 

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

 

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

 

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

 

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

Edited by Artos5

Share this post


Link to post
Share on other sites
Не понятный для меня код... как выполняется декремент?

 

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this