Подготавливаем программное обеспечение
Во-первых, нам нужны три основных документа, прежде чем начинать программировать микросхемы STM8. Это следующие:
1. STM8 Reference Manual.
http://www.st.com/content/ccc/resource/technical/document/reference_manual/9a/1b/85/07/ca/eb/4f/dd/CD00190271.pdf/files/CD00190271.pdf/jcr:content/translations/en.CD00190271.pdf
2. Datasheet of the MCU (STM8S003) that we’ll be using.
http://www.st.com/content/ccc/resource/technical/document/datasheet/42/5a/27/87/ac/5a/44/88/DM00024550.pdf/files/DM00024550.pdf/jcr:content/translations/en.DM00024550.pdf
3. STM8SVLDiscovery Board User Manual.
http://www.st.com/content/ccc/resource/technical/document/user_manual/c8/37/11/ba/b5/e7/4c/ee/DM00040810.pdf/files/DM00040810.pdf/jcr:content/translations/en.DM00040810.pdf
Данная документация понадобится на протяжении всего обучения. Справочное руководство подробно описывает использование и назначение всех аппаратных блоков. Он включает описания регистров, соглашения об именах, режимы работы всего оборудования и т. д.
Однако в нем не указаны спецификации данного микроконтроллера STM8, и это потому, что это обобщенная литература для всех микропроцессоров STM8S и STM8AF. Как мы знаем, даже в семействе МК один от другого отличается многими моментами. И чаще всего это проявляется в виде емкости памяти и количества выводов ввода / вывода.
Иногда электрические характеристики также различаются, поэтому, чтобы узнать общие характеристики наших микроконтроллеров, нам необходимо использовать их соответствующие таблицы данных.
Наконец, руководство пользователя платы Discoveryнаиболее полезно для схем аппаратного обеспечения, назначения контактов и прототипирования. Если вы используете какую-то другую плату, я предлагаю вам раздобыть хотя бы ее схему.
Теперь, когда мы установили Cosmic, STVD и STVP, необходимо настроить наше программное обеспечение. Существует два подхода к программированию STM8.
В первом используются традиционные концепции кодирования на основе доступа к регистрам, что означает, что вам придется настраивать каждый регистр самостоятельно.
Второй способ использует стандартные библиотеки, разработанных ST, которые являются как универсальными, так и независимыми от платформы, то есть код будет одинаковым для любого компилятора, использующего эти библиотеки. Эти библиотеки называются стандартными периферийными библиотеками (SPL).
С этими библиотеками не придется переходить к доступу на уровне регистров. Библиотеки закодированы таким образом, что кодировщику нужно будет знать только аппаратные характеристики своих чипов и некоторые основы этого оборудования.
В части кодирования нужно будет только установить свойства и желаемые значения SPL управляет остальным. Например, при настройке UART нам нужно будет только установить прерывания, IO и свойства UART, такие как скорость передачи, четность и т. д. Все эти настройки выполняются с помощью специальных значений.
Стандартные периферийные библиотеки (SPL) STMicroelectronics для микроконтроллеров STM8 можно найти здесь: http://www.st.com/en/embedded-software/stsw-stm8069.html.
В этом цикле статей используется SPL, так как было бы неудобно да и запутано кодировать STM8, используя более сложный способ настройки регистров один за другим вручную. Таким образом SPL, является обязательным элементом загрузки. Необходимо сохранить загруженный zip-файл с SPL в сохранности. Он может понадобиться, когда что-то пойдет не так.
Теперь необходимо создать две папки с названиями «inc» и «src». Папка «inc» будет заполнена файлами заголовков (файлы с расширением «.h») из извлеченного zip-файла. Точно так же папка «src» будет содержать исходные файлы (файлы с расширением «.c»).
Для простоты работы лучше хранить эти папки отдельно, как в случае с zip-файлом SPL, потому что каждый раз, когда мы будем создавать новые проекты, файлы в этих папках будут необходимы.
Вы можете скопировать эти файлы в папку своего проекта или хранить их где-нибудь отдельно. Я предпочитаю первый метод, так как при этом не возникнет конфликтных проблем с другими проектами, требующими изменений. Однако они будут занимать место на жестком диске.
Все же этот метод менее запутан и удобен для новичков. Извлеките все файлы, как показано ниже:
Обратите внимание, что заголовочных файлов больше, чем файлов с исходными кодами. Это связано с тем, что есть два дополнительных файла заголовков - stm8s.h и stm8s_conf.h, которые определяют тип процессора и его свойства.
Чтобы все заработало, нам нужно прокомментировать одну строку stm8s_conf.h. Внизу этого файла вы найдете строку, написанную как:
Вам нужно закомментировать или удалить эту строку, иначе компилятор выдаст сообщения об ошибках. Всегда проверяйте это в начале проекта. Мы не будем использовать данный механизм в дальнейшем в статьях.
Создание нового проекта
Предположим, что STVD, STVP и Cosmic правильно установлены, создадим новый проект.
· Запустим STVD
· Выбираем File >> New Workspace.
· Выбираем Create workspace and project.
· Выбираем директорию и название workspace.
· Задайте имя проекта и выберите компилятор STM8 Cosmic. Возможно, вам потребуется указать путь к месту установки вашего компилятора Cosmic. В моем случае это: C: \ Program Files (x86) \ COSMIC \ FSE_Compilers \ CXSTM8
· Выберете целевой микроконтроллер. Для нахождения нужного микроконтроллера достаточно последних двух-трех цифр и букв.
· Теперь добавьте исходные и заголовочные файлы из ранее упомянутой папки SPL.
· После включения файлов вкладка рабочего пространства должна выглядеть, как показано ниже:
· Найдите и откройте файл main.c на вкладке исходников (Source Files) и добавьте строчку #include «stm8s.h» в самом вверху, как показано ниже:
· Вам нужно будет отредактировать заголовочный файл stm8s.h и раскомментировать номер чипа, который вы собираетесь использовать, как показано ниже:
Примечание переводчика вместо этого можно добавить название контроллера в определения препроцессора компилятора. См. скриншот ниже:
· Скомпилируйте код один раз, используя комбинацию клавиш CTRL + F7 или выбрав в выпадающем меню compile. Если все в порядке, сообщения об ошибке или предупреждении быть не должно. Это было сделано для использования помощника по работе с кодом компилятора. С помощью этой функции мы можем предсказать или завершить часть строки кода, написав только первые несколько букв и затем одновременно нажав клавиши CTRL + SPACE.
Во время компиляции вы можете получить массу ошибок для аппаратных файлов, которые недоступны в выбранном контроллере STM8S. Например, оборудование CAN недоступно в STM8S003K3, поэтому, если вы добавили исходный и заголовочный файлы CAN, вы получите сообщение об ошибке. После обнаружения сообщений об ошибках соответствующие заголовочные и исходные файлы для конкретного контроллера должны быть удалены.
Чтобы избежать этой проблемы стоит проверить документацию на предмет доступности оборудования в МК. В разделе содержание это показано, как показано ниже:
Для этих целей можно использовать STM8CubeMX , но как было показано ранее некоторые периферийные устройства, могут быть не показаны в ней. Например четвертый таймер в контроллере STM8S003K3
Точно так же следует учесть, что если ваш код не использует какие-либо прерывания, заголовочные и исходные файлы прерываний (stm8s_it.h и stm8s_it.c) должны быть исключены.
Иногда лучше добавить только необходимые файлы. Например, если ваш проект просто использует GPIO, лучше добавлять файлы GPIO только вместе с stm8s.h и stm8s_conf.h. Однако данные подход рекомендуется только после того, как вы хорошо освоите кодирование STM8, потому что в большинстве случаев вам понадобится несколько аппаратных средств, которые зависят друг от друга. Например, при использовании SPI вам понадобятся модули GPIO и SPI. Если вы понимаете эти зависимости, вы можете выбирать только необходимые файлы.
Затем вы можете закомментировать ненужные файлы аппаратных модулей, указанные в файле заголовка stm8s.h, и ускорить процесс компиляции и сборки. После компиляции вы всегда должны пересобирать свой проект, нажимая кнопку Build или Rebuild. Это сгенерирует окончательный выходной файл s19 в папке Debug или Release в соответствии с выбранным режимом генерации. Если все в порядке, сообщения об ошибке или предупреждении быть не должно.
И в заключении, я не нашел никакого полезного программного обеспечения для эмуляции МК, такого как Proteus VSM или Electronic Workbench, которое поддерживает семейство STM8. Таким образом, нам приедтся отлаживать наш код в реальной жизни на реальном оборудовании. Сначала это может показаться трудным, но на самом деле это не так. Все же данное ПО будет полезно для создания печатных плат и подготовки устройства к окончательной сборке. В действительности эмуляция не всегда корректно отражает действительные процессы в цепях.
Еще один совет, который хочу дать читателям пожалуйста, прочтите файл справки SPL. Он находится в zip-файле SPL под именем stm8s-a_stdperiph_lib_um.chm. В нем описана каждая функция, определение, структуру данных, все внутренние аппаратные модули и способы их правильного использования. Это очень важный документ и ваш лучший друг в написании программ для МК STM8. Помимо этого документа, справочное руководство от ST не менее важно, поскольку оно подробно описывает возможности всей периферии . В статье я не буду подробно останавливаться на периферийном оборудовании, поскольку это можно прочитать в документации.
Оригинал статьи:
http://embedded-lab.com/blog/starting-stm8-microcontrollers/6/