И так, есть отладочка stm32f429итд. Демки погоняли, посмотрели, что картиночки бегают, кнопочки на экране нажимаются, мимими. Это клёво, но начнём с пустого проекта.
Проект, в целом, создаётся точно так же, как и для stm32f4discovery.
Но если в кейле нет поддержки этого контроллера вовсе (не обновлён), то всё становится несколько хитрее =)
Во-первых, скачаем архив с библиотеками и примерами программ под плату — там есть что повыдирать.
читать дальшеИ в первую очередь, выдерем stm32f4xx.h из CMSIS. В кейле, если он не поставлен с нуля, последний, этот файл дюже древний. Для начала, конечно, хватит и его, но с экраном уже ничего сделать не выйдет, периферия такая только появилась.
Берём файл в папке STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include и передислоцируем его в аналогичную папку кейла Keil\ARM\INC\ST\STM32F4xx. У меня новый файл на 100 кб оказался больше.
Стартапы для новых серий 4хх можно найти в папке STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm. Их там много разных:
startup_stm32f4xx.s
startup_stm32f40_41xxx.s
startup_stm32f40xx.s
startup_stm32f401xx.s
startup_stm32f427_437xx.s
startup_stm32f427x.s
startup_stm32f429_439xx.s
Естественно, что нам нужен последний. Там же, на папку выше можно взять обновлённый system_stm32f4xx.c. Но не верьте ему, он настроен на частоту кварца 25 МГц. Лучше сделайте своё через генератор (если найдёте, я не нашёл) или стянуть из папки STM32F429I-Discovery_FW_V1.0.0\Projects\Demonstration\Core\Devices\STM32F4xx.
Неплохо было бы добавить файл описания регистров для System Viewer.
Сначала скачиваем svd файлы с сайта arm файл STM32F429x.svd: CMSIS (вкладка CMSIS-SVD, требуется регистрация). Выбираем там нужную серию, ставим галку и жмём Download.
Потом файл нужно сконвертировать в понятный кейлу вид с помощью утилиты SVDConv.exe, которая есть в папке STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\SVD. Но перед выполнением команды надо скопировать компилятор кейловский SfrCC2.Exe из папки Keil\UV4 в папку, где происходит конвертирование. И в итоге:
Получим файл STM32F429x.SFR.
Отлично. Создадим проект на базе какого-нибудь близкого по духу контроллера, а потом поправим его параметры под нужные нам. Сделаем пустой проект как для stm32f4discovery, но без startup-файла (всё равно другой нужен).
1. Project -> New project.
Выбираем папку и называем проект. Сохраняем.
2. Предлагают выбрать микроконтроллер. Окай.
В папочке ST ищем какой-нмбудь STM32F4xx и выбираем (или базовый Cortex-M4). Если его нету — обновите Кейл, так как без поддержки ядра CM4 ловить особо нечего. Я выбрал stm32f407vg.
3. Предлагают скопировать в проект startup — нафиг, он не совсем подходит.
Можем назначить папочки, куда класть объектники (Options->Output->Select Folder for Objects) и листинги (Options->Listing->Select Folder for Listings).
Изменим пределы памяти (см. раздел Memory Mapping в даташите). ROM размером 0x200000 (2 Мб), быстрая RAM1 по адресу 0x10000000 размером 0x10000, обычная RAM2 по адресу 0x20000000 размером 0x30000 (их там три разных, но какая пока разница). Карту памяти взяли в даташите в разделе 5 «Memory mapping».
На вкладке Debug выберем ST-Link Debugger (в его свойствах выбираем протокол SW). На вкладке Utilities также выбираем ST-Link Debugger и жамкаем Settings. Там добавляем алгоритм прошивки: Add -> STM32F4xx 1Mb Flash (если есть 2Mb, то супер). Для начала сойдёт, потом, видимо, придётся или обновить кейл, или стащить алгоритм для флеша побольше.
И добавим дефайн для выбора контроллера (библиотекам нужен, видимо) на вкладке C/C++: STM32F429_439xx.
Сохраняем проект и пока закроем его. Откроем проект (.uvproj) в текстовом редакторе и поправим всё остальное:
Device: STM32F429ZI;
Cpu: IRAM(0x20000000-0x2002FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x8000000-0x81FFFFF) CLOCK(8000000) CPUTYPE("Cortex-M4") FPU2
StartupFile: "Startup\ST\STM32F4xx\startup_stm32f429_439xx.s" ("STM32F429 Startup Code")
SFDFile: SFD\ST\STM32F4xx\STM32F429x.sfr
OCR_RVCT4.Size: 0x200000
Можем, в общем-то, открывать проект и добавлять файлы:
startup_stm32f429_439xx.s
system_stm32f4xx.c
main.c
Всё, компилируем и получаем пустой собирающийся проект, с которого можно начать путь постижения премудростей новых контроллеров ст.
stm32f429_blank.zip — пустой проект.
STM32F429. Первый проект.
И так, есть отладочка stm32f429итд. Демки погоняли, посмотрели, что картиночки бегают, кнопочки на экране нажимаются, мимими. Это клёво, но начнём с пустого проекта.
Проект, в целом, создаётся точно так же, как и для stm32f4discovery.
Но если в кейле нет поддержки этого контроллера вовсе (не обновлён), то всё становится несколько хитрее =)
Во-первых, скачаем архив с библиотеками и примерами программ под плату — там есть что повыдирать.
читать дальше
stm32f429_blank.zip — пустой проект.
Проект, в целом, создаётся точно так же, как и для stm32f4discovery.
Но если в кейле нет поддержки этого контроллера вовсе (не обновлён), то всё становится несколько хитрее =)
Во-первых, скачаем архив с библиотеками и примерами программ под плату — там есть что повыдирать.
читать дальше
stm32f429_blank.zip — пустой проект.