Keil как создать lib библиотеку


| Текущее время: Вт янв 09, 2024 19:40:17 |
Часовой пояс: UTC + 3 часа
Запрошенной темы не существует.
Часовой пояс: UTC + 3 часа

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y
Работоспособность сайта проверена в браузерах:
IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
При меньших разрешениях возможно появление горизонтальной прокрутки.
По всем вопросам обращайтесь к Коту: kot@radiokot.ru
©2005-2024
Alex_EXE
Первой задачей после установки IDE, в качестве которой выбрали Keil, будет создание проекта, конфигурирование его и написание первой программы – «Hello World», т.е. помигаем светодиодом.
Внимание!
Все описанные действия приводятся для демонстрационной платы STM32vlDiscovery и установленному на ней микроконтроллеру STM32F100RB. Для других плат и контроллеров ниже описанное справедливо, но требуются поправки на используемый контроллер.
Подключаем демоплату, которую находит система, и запускаем среду.
И создаём новый проект: Project->New uVision Project
Создаём папку под новый проект и сохраняем его туда. Далее выбираем используемый нами камень (тот, что установлен на нашей Discovery) STMicroelectronics->STM32F100RB
Среда поддерживает множество ARM’ов от различных производителей. В правом окошке можно прочитать краткую информацию по выбранному камушку.
Далее соглашаемся с созданием инициализирующего файла и перед нами открыт созданный наш голый проект, которые ещё конфигурировать и конфигурировать.
Теперь переименовываем каталоги в проекте для удобства навигации и создадим исполняемый файл.
Добавить каталог «Add Group», добавить файл «Add New Item to Group» в меню по правому клику на каталогах проекта.
Следующим шагом будет подключения библиотек CMSIS и Standard Peripheral Library, наш контроллер относиться к семейству STM32F10x. Скачать библиотеку можно с официального сайта ST Microelectronics:
http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257890
Ссылка на момент написания статьи. К сожалению их сайт в течение последнего времени несколько раз менял свой дизайн и пути, и если он снова обновиться найти данную библиотеку можно будет по запросу «STM32F10x standard peripheral library».
Разархивируем содержимое паки Libraries из архива в папку нашего проекта и добавляем ключевые файлы через меню «Add Existing Files to Group» в наш проект:
Библиотеки CMSIS:
CMSIS\CM3\CoreSupport\core_cm3.c
CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
Из библиотеки работы с периферией нужны для проекта следующие файлы:
STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c
STM32F10x_StdPeriph_Driver\src\stm32f10x_rcc.c
Ещё из архива нам понадобится скопировать 3 файла из каталога Project в папку STM32F10x_StdPeriph_Driver нашего проекта:
Project\STM32F10x_StdPeriph_Template\stm32f10x_it.h
Project\STM32F10x_StdPeriph_Template\stm32f10x_it.с
Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h
Из которых
STM32F10x_StdPeriph_Template\stm32f10x_it.с
добавим к проекту.
Далее заходим в меню проекта, через меню «Option for Target» или по Alt+F7, и начинаем его конфигурировать под наши нужды
В открывшимся окне переходим на вкладку «Output», где разрешаем создание HEX файлов в нашем проекте:
На вкладке C/C++ в поле «Define» раздела «Preprocessor Symbols» прописываем:
STM32F10X_MD_VL, USE_STDPERIPH_DRIVER
Где:
STM32F10X_MD_VL – мы указываем, к какой линейке принадлежит используемый контроллер;
USE_STDPERIPH_DRIVER – что будем применять стандартную библиотеку периферии.
Так же прописываем все пути ко всем файлам проекта в строке «Include Paths», для этого щелкаем по кнопке «…».
Теперь настроим работу со встроенным в Discovery программатором-отладчиком ST-Link. Для этого на вкладках «Debug» и «Utilites» выбираем «ST-Link Debugger».
На первой вкладке переключаемся на «Use» в правом верхнем углу и выбираем из списка:
На второй вкладке убираем галочку с «Use Debug Driver» и выбираем в разморозившемся выпадающем списке:
Переходим к настройки программатора по кнопке «Setting». Первым делом в новом открывшемся окне в разделе «Debug Adapter» переключаем «Port» с «JTAG» на «SW».
А на вкладке «Flash Download» нужно добавить используемый контроллер. Жмём на «Add», в появившемся окне выбираем «STM32F10x Med-density Flash».
Теперь мы можем открыть основной файл проекта «main.c», и приступить к написанию нашей программы:
#include "stm32f10x.h" GPIO_InitTypeDef GPIO_InitStructure; void init() // инициализация < RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; // использовать выводы PC8 и PC9 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // на выход GPIO_Init(GPIOC, &GPIO_InitStructure); >void delay(unsigned long p) // задержка < unsigned long i; for(i=0;iint main(void) < init(); GPIO_SetBits(GPIOC, GPIO_Pin_9); // включить зеленый светодиод, подключенный к PC9 while(1) // в бесконечном цикле крутиться программа < GPIO_SetBits(GPIOC, GPIO_Pin_8); // включить синий светодиод, подключенный к Led PC8 delay(2000000); GPIO_ResetBits(GPIOC, GPIO_Pin_8);// погасить синий светодиод, подключенный к Led PC8 delay(2000000); >>
И он, наконец, сможет скомпилироваться порект, для этого нажимаем F7.
Ход успешной компиляции:
Теперь можно залить проект в контроллер. Для этого можно воспользоваться главным меню Flash->Download или нажать ту же кнопку на панели инструментов.
Наблюдаем за успешным ходом прошивки:
После завершения прошивки нажимаем «Reset» на плате и наблюдаем за горением зеленого и миганием синего светодиода. Это означает, что вся работа (проделанная в 20 шагов) проделана правильно, контроллер прошит и работает.
12 комментариев на « STM32. 2. Первый проект»
- Serg пишет 09.08.2013 в 11:51 #
Здравствуйте!
Расскажите пожалуйста, будет ли это цикл статей от простого к сложному или же просто пара статей о светодиодах?
Думаю сделать цикл статей, но что выйдет, увидим.
Добавь пустую строку в конце кода.
помогло, просто слов нет
Статья очень интересная.
Возник только один вопрос будет у вас статья по STM8 ?
STM8S103F стоит 1$ .И паять ее легче ,чем STM32.
STM8 изучать самостоятельно не собираюсь и соответственно писать о нём не буду. На ту нишу у меня есть пики, хоть они и подороже, но они уже освоены. STM32 это уже другой уровень — ARM, как 8-ми битников начало переставать хватать начал переходить на более высокую ступень.
Почему STM32 — доступность и растущая популярность, соответственно много наработок, почему пики — так сложилось.
спасибо большое! все получилось с первого раза! только вот у меня микроконтроллер был STM32F030F4P6. Там названия регистров отличаются, там разобраться легко, что да как. Библиотека вся хорошо читаемая.
Почему то Keil вначале не предлагает создать инициализирующий файл. Версия Keil 5 uVision
По Keil подсказать нечего не могу, т.к. на нем дальше hello world и ещё пары вещей, описанных на сайте, не ущел. Перешел на CoCoox.
Keil как создать lib библиотеку
Профиль
Группа: Участник
Сообщений: 171
Регистрация: 16.4.2006
Репутация: нет
Всего: 1
Кто-нибуть пытался собрать lib-библиотеку uC/GUI под компилятор Keil RealView?
Создал проект в Keil uVision3, подключил к нему созданную собственноручно lib-библиотеку, все header-файлы uc/GUI и файлы конфигурации. При компиляции получил множесто ошибок L6212E вроде этих:
| Код |
| Error: Undefined symbol GUI_X_Init (referred from GUICore.o) Error: Undefined symbol GUI_X_GetTaskId (referred from GUITask.o) . |
| Код |
| #include #include «gui.h» |
extern «C» void startTask() __task;
extern «C» void guiInitTask() __task;
int main()
os_sys_init(startTask);
void startTask() __task
os_sys_init(guiInitTask);
os_tsk_delete_self();
>
Решил было, что напортачил с make-файлами и неправильно собрал библиотеку, решил проверить, подключил к проекту вместо lib-библиотеки исходники uc/GUI, получил аналогичные ошибки:
| Код |
| Error: Undefined symbol GUI_X_ErrorOut (referred from gui_errorout.o) . |
Решил перепроверить с другим компилятором, создал проект в IAR, подключил к нему lib-библиотеку (созданную с помощью make-файлов идущих в составе uc/GUI под компилятор IAR), все header-файлы uc/GUI и файлы конфигурации. При компиляции получил ошибки:
| Код |
| Error[e46]: Undefined symbol «GUI_X_Init» referred in GUICore Error[e46]: Undefined symbol «GUI_X_GetTaskId» referred in GUICore . |
Проблема в том, что мне совсем не понятно, с чем связаны эти ошибки и как с ними бороться. Есть какие-нибуть мысли?
| Дата 19.10.2007, 06:51 (ссылка) | (нет голосов) Загрузка . |
Профиль
Группа: Участник
Сообщений: 171
Регистрация: 16.4.2006
Репутация: нет
Всего: 1
Для того чтобы собрать и запустить uC/GUI, необходимо:
1. Описать все ф-ции объявленные в gui_x.h и некоторые ф-ци из gui.h (ф-ции взаимодействия GUI с операционной системой) [для некоторых ОС файлы с описанием ф-ций уже имеются в директории Sample\GUI_X];
2. Заменить исходный файл lcdconf.h на файл содержащий конфигурацию подключаемого LCD, либо определить макросы самостоятельно [файлы конфигураций для некоторых дисплеев поставляются вместе с GUI в директории sample\LCDConf\xxx];
3. Описать низкоуровневые ф-ции работы с LCD, объявленные в lcdconf.h (LCD_X_READ(), LCD_X_READ() и т.п.) [для некоторых дисплеев уже имеются в директории Sample\LCD_X];
Это сообщение отредактировал(а) fear — 19.10.2007, 06:54
Настройка проекта в Keil uvision5
До работы с STM микроконтроллерами, упорно изучал AVR. После приобретения своей первой платы STM32f3discovery, своим первым проектом, конечно же, хотел помигать светодиодами. Думал ща приду домой, включу и сразу начну программировать и без проблем делать всякие там проекты. Но не тут то было. После создания проекта постоянно вылетали всякие ошибки, компилятор постоянно ругался на недостающие файлы.
Наиболее часто вылетала ошибка типа этой:
«.\Objects\Ex3.axf: Error: L6218E: Undefined symbol assert_param (referred from stm32f30x_adc.o). Not enough information to list image symbols. Finished: 1 information, 0 warning and 1 error messages. ".\Objects\Ex3.axf" - 1 Error(s), 497 Warning(s). Target not created.»
После долгих попыток наконец-то удалось установить причину всех моих неудач. Ниже представлены несколько шагов, которые делаю я для создания проекта. Эти шаги облегчат процесс создание своих первых проектов на микроконтроллерах семейства STM32.
Среда Keil имеет свои «внутренние» файлы, которые она использует по умолчанию. К примеру фалы отвечающие за конфигурацию периферии и др. Для того чтобы компилятор использовал скипированные файлы необходимо сделать
1. Шаг первый – скачиваем файлы настройки контроллера
Для того чтобы настроить свой первый проект вам необходимо для начала скачать архив для вашей конкретной платы с официального сайта
Для своей платы STM32f3Discovery я скачал архив с примерами по ссылки
Далее распаковываем данный архив.
2. Создаем папки проекта
- cmsis – папка содержащая файлы настройки микроконтроллера;
- pl – папка с файлами переферрий;
- user – пользовательская папка, тут главный исполняемый файл;
- startup – начальная инициализация/
У меня это выглядит так:
3. Создаем аналогичные группы в среде Keil u vision
Аналогично в нашем проекте создаём группы с такими же названиями. Названия можно давать любые, но чтобы не путаться лучше такие же, как и сами папки.
Важно понимать, что создание группы в проекте это не создание аналогичных папок в папке проекта, а всего лишь группировка исполняемых файлов.
4. Копируем нужные файлы в папки проекта
Далее нам необходимо скопировать из нашего,ранее скаченного архива, следующие файлы.
- » F:\Projects\STM32\Ex4\cmsis\system_stm32f30x.c»
- » F:\Projects\STM32\Ex4 \cmsis\system_stm32f30x.h»
- » F:\Projects\STM32\Ex4cmsis\stm32f30x.h»
Файл stm32f30x.h – это файл необходимый для настройки работы микроконтроллера.
В папку pl две папки из STM32F30x_StdPeriph_Driver это
inc и src, в которых находится куча файлов для работы с периферией.
Также в папку pl необходимо скопировать файл stm32f30x_conf.h из любого проекта.
- «F:\Projects\STM32\Ex4\pl\stm32f30x_conf.h»
- «F:\Projects\STM32\Ex4\pl\inc\тут куча файлов h»
- «F:\Projects\STM32\Ex4\pl\src\ тут куча файлов c»
В папку startupкопируем следующий файл
В папке userсоздаем наш исполняемый файл main.c
5. Добавляем файлы в проект
- В группу cmsis добавляем один файл system_stm32f30x.c;
- В группу pl все си-шные файлы периферии из папки src;
- В группу startup файл startup_stm32f30x.s;
- А в папке user создаем файл main.cв ручную.
На данном этапе это выглядит так:
6. Самый главные этап создания проекта
Далее нам необходимо открыть файл stm32f30x.h и убрать комментарий со следующей строки:
В результате Keil начинает использовать ваши скопированные файлы.
7. Добавляем в проект стандартную библиотеку core
Для того чтобы добавить данную библиотеку необходимо менеджере проектов выбрать пунк Run-TimeEnviroment и поставить галочку в поле CMSIS.
Далее открываем наш main.c и компилируем, если ошибок нет. Значит проект настроен верно.