STM8S IAR создание проекта, настройка для использования SPL (Standard Peripheral Library) и загрузка в контроллер stm8s903k3t6 первой программы.
Как сказал Гагарин «Поехали!».
С чего начать?
Первым делом приобретите отладочную плату.Если у Вас нет опыта, в электротехнике то рекомендую приобрести stm8 discovery.
Почему discovery:
а. Программатор-отладчик;
б. Имеется согласователь уровней;
в. Защита программатора, если спалите контролер;
г. Удобство;
Что отсутствует кроме программатор-отладчика, в типа таких программаторов как этот.
Где взять IAR Embedded Workbench ?
1. С официального сайта, платная;
2. С официального сайта-бесплатная (с ограничениями);
3. В помощь сайты созвучные с богом Грома;
Если вы приобрели программатор-отладчик, добыли и установили IAR и скачали с сайта stm.com SPL (STM8S/A Standard peripherals library) или тут stm8s_SPL, тогда не будем, как говорится мяться на месте!
Создание проекта и подключение SPL.
Поехали!!!
Ссылка на видео в YouTube В директории для удобства, где установлен IAR создаем паку для проекта, название произвольное у меня project.
Распаковываем, ранее скаченный с stm.com архив en.stsw-stm8069.zip(STM8S/A Standard peripherals library), копируем в наш проект C:/Program Files/IAR Systems/project папку en.stsw-stm8069/STM8S_StdPeriph_Lib/Libraries/STM8S_StdPeriph_Driver, с содержимом, два файла Release_Notes.html и stm8s-a_stdperiph_drivers_um.chm можно удалить.
Копируем из папки en.stsw-stm8069STM/8S_StdPeriph_Lib/Project/STM8S_StdPeriph_Template распакованного архива три файла stm8s_conf.h, stm8s_it.c, stm8s_it.h в наш проект папку C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Lib должно получится вот так.
С файлами закончили, можно приступать к созданию проекта. Запускаем IAR заходим в Project->Greate New Project, появится это.
Выбираем С так как мы хотим творить на СИ, жмем ОК. Далее нам предложат придумать и сохранить наш проект, назовём его ‘test’. Сохраняем конечно в нашу папку C:/Program Files/IAR Systems/project.
Настраиваем IAR. Жмем правой кнопкой на test-Debug->Options->General Options в Device выбираем наш контролер stm8s903k3, жмем ОК.
Продолжаем, жмем правой кнопкой на test-Debug->Options->General Options->C/C++ Kompiler ->Preprocessor жмем кнопку и прописываем пути к нашим папкам, которые скопировали с en.stsw-stm8069(распакованного архива). Прописать надо к
C:/Program Files/IAR Systems/project,
C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Driver,
C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Driver/inc,
C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Driver/src.
Вот результат.
Ниже в таблице пишем STM8S903.
Жмем ОК.
Жмем правой кнопкой на test-Debug->Options->Debugger выбираем в Driver->ST_LINK. Жмем ОК.
Жмем правой кнопкой на test-Debug->Options->Add->Add Group вписываем SPL. Жмем ОК. Должна появится под test-Debug папка SPL, жмем на папку выбираем Add->File и добавляем из C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Driver/src все файлы, жмем Открыть. Вот результат.
Жмем на Download and Debug.
Получится вот так то, что выскочили ошибки это нормально, компилятор нам сказал, что такой периферии в данном контролере нет.
Нам надо данную периферию убрать, жмем правой кнопкой на надпись выделенную красной звездочкой Options и в верхнем левом углу в Exclude from bulid ставим галочку, жмем ОК и так со всеми.
Финал! Пишем простой код, мигаем светодиодом.
#include "stm8s.h"
void pause(void);
void main( void )
{
GPIO_Init(GPIOD,GPIO_PIN_0,GPIO_MODE_OUT_OD_HIZ_SLOW);
while(1){
GPIO_WriteHigh(GPIOD, GPIO_PIN_0);
pause();
GPIO_WriteLow(GPIOD, GPIO_PIN_0);
pause();
}
}
void pause(void){
for(uint16_t i=0;i<60000;i++){}
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
while (1){}
}
#endif
Забыл, мигать будем порт D пин 0, сохраняем, нажать на ДИСКЕТУ в верхнем левом углу, компилируем и загружаем нашу первую программу(жмем на Download and Debug).Надеюсь, Вы в экстазе!
ВНИМАНИЕ! Тот код который находится в низу и начинается с #ifdef USE_FULL_ASSERT, должен быть обязателен, без него будет выскакивать ошибка:
Error[Li005]: no definition for "assert_failed" [referenced from C:Program FilesIAR SystemsprojectDebugObjstm8s_gpio.o], все это предназначено для отлова ошибок в SPL и предотвращения зависания, используется для отладки. Если в коде вашей программе есть ошибки то во время работы программы произойдет переход в функцию void assert_failed(uint8_t* file, uint32_t line);.
Все это добавляет дополнительный код и соответственно будет замедлять программу, поэтому если вы не нуждаетесь в этом, то за комментируйте в файле stm8s_conf.h строку #define USE_FULL_ASSERT (1) должно стать //#define USE_FULL_ASSERT (1).