28 июля 2016 г.

Создание проекта для STM8 в IAR EWSTM8

   Хотите создать проект для STM8 в IAR, но не знаете с чего начать? Тогда эта статья для Вас. Многие думают, что работать в IAR сущий ад, особенно когда речь идет о STM32, но с линейкой STM8 это совсем не так. 
   Шаг первый (создание проекта): 
  • запускаем IAR, жмем "Project" -> "Create New Project"
  • выбираем "С" или "C++" из списка "Project templates" и жмем "OK"

  • далее сохраняем наш проект в нужное место
   Проект создан, теперь нужно его настроить для работы с конкретным микроконтроллером.
   Шаг второй (настройка проекта):
  • Жмем правой кнопкой на название проекта в окне "Workspace" и выбираем "Options..."
  • В категории "General Options" на вкладке "Target" выбираем нужный микроконтроллер. У меня под рукой STM8S103F3P6, соответственно выбираем "STM8S103F3P".
  • Переходим к категории "Debugger", во вкладке "Setup" выбираем то, чем будем программировать / отлаживать наше устройство. Я использую ST-Link, поэтому выбираю именно его. Больше никакие настройки на первом этапе нас не интересуют, поэтому жмем "OK" и приступаем к написанию кода.

   Проект создан, настроен, осталось подключить библиотеки и написать код. Очень часто возникает вопрос, как узнать название основной библиотеки с тем или иным микроконтроллером. Здесь все очень просто. Открываем проводник, заходим в папку с установленным IAR (чаще всего это "C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.3"), далее идем в "...\stm8\inc\", там расположены библиотечные файлы для всех микроконтроллеров STM8. Ищем нужный файл по названию микроконтроллера, запоминаем или копируем его имя и переходим к написанию кода.
   Подключаем библиотеку ввода-вывода для STM8S103F3, как мы увидели выше, она называется "iostm8s103f3.h" и создаем функцию задержки для обычнейшего мигания светодиодом:

void delay(unsigned long time)
{
   while(time--)
      asm("nop");
}

   Теперь переходим к редактированию основной программы. Не будем вдаваться в подробности всех примененных функций - это не входит в тему данного поста. Просто вставим весь получившийся код программы для мигания светодиодом. На моей отладочной плате он подключен к порту "B5".

#include <iostm8s103f3.h>

void delay(unsigned long); //задержка

int main( void )
{
   //конфигурируем порт B5 на выход
   PB_DDR_bit.DDR5 = 1;
   PB_CR1_bit.C15 = 1;
   PB_CR2_bit.C25 = 1;
   //мигаем в бесконечном цикле
   while(1)
   {
      PB_ODR_bit.ODR5 = !PB_ODR_bit.ODR5;
      delay(10000);
   }
   return 0;
}

void delay(unsigned long time)
{
   while(time--)
      asm("nop");
}

   Теперь жмем "F7" или "Make", убеждаемся что нет ошибок, а затем загружаем код сочетанием клавиш "Ctrl+D" или кнопкой "Download and debug". Но пока ничего не происходит, т.к. микроконтроллер сейчас остановлен и ожидает действий пользователя, ведь мы в режиме отладки. Тут есть два варианта - нажать "Go" или "Stop debugging" (красный крест). Первый вариант запустит выполняться наш код в режиме отладки, а второй сбросит микроконтроллер, отключится от него и он сам будет выполнять программу из Flash памяти.
   Но это еще не все, есть небольшой подводный камень, который вызовет ошибку при попытке загрузить и отладить наш код. Если Вы сами собираете плату или подключаетесь проводками к голому контроллеру, то не забудьте подключить конденсатор, емкостью 470 - 3300 нФ (например 1 мкФ) между ножками Vss и Vcap. Без него, увы, ничего работать не будет.

Комментариев нет:

Отправить комментарий