Stm8s discovery как программировать

от admin

Изучаем STM8S Медленный старт. Часть 0

При написании данной статьи, я предполагаю, что читающий умеет:

  • Внимательно читать (что редкость)
  • Немного работать с англоязычной технической литературой (ну или мотивацию научиться, т.к. первый язык программиста — английский)
  • Паять (хотя бы минимальные навыки)
  • Программировать на С (опять же, не все так сложно)
  • Гуглить (без этого никуда)
  • Пользоваться мультиметром и имеет прочие базовые навыки (по типу «не суй пальцы в розетку»)
  • Обзорно пробежать все этапы разработки системы на базе микроконтроллера
  • Дать необходимые вводные для человека практически не посвященного
  • По возможности формирование у читающего понимания того, где, что и как найти

Думаю имеет смысл сделать подробный курс программирования МК.

Мне послужит поводом изучить всю периферию более детально и попутно поможет другим.
Знаю, что уже существует огромное количество статей и даже обучающих курсов, но я имею слегка иной подход. (Возможно получу адекватную критику, изменю мнение и примкну к MX Cube ребятам).

Грустно видеть, как stm контроллеры превращают в arduino.

По поводу arduino:

Есть 3 (известных мне, мб я просто не дорос) подхода к разработке ПО на МК:

  1. Разработка на ассемблере
  2. Разработка под конкретную модель МК
  3. Разработка с использованием HAL и им подобных библиотек

2) Библиотеки HAL и т.п. для начинающего непрозрачна и слишком много моментов «просто пиши вот так». Потому — тоже в помойку.

3) Наиболее здоровым вариантом для начинающего считаю процесс создания ПО под конкретный МК, полученные навыки позволят разобраться и с 8L и 32 сериями (хоть это и больно делать единолично по документации).

Вы наверно заметили, что arduino в этом списке не фигурирует, потому что это образовательная платформа и для разработки на её базе компактных устройств не предназначена. Но подход к её программированию по какой-то (мне не известной) причине переносится и расползается по интернету. И даже применяется в реальных коммерческих проектах. (представляет собой, «скачал на форуме библиотеку, подключил, заработало, как работает не знаю»).

Я же предлагаю, с моей точки зрения, академически и методически более осмысленный подход.

1. Выбор микроконтроллера

У меня в наличии имеется несколько STM8S105K6 в корпусе LQFP32, он из этого семейства, потому выбираю его.

Вы можете выбрать любой МК в пределах серии.

Есть готовые Discovery платы от ST, можно купить у китайцев или заказать с других ресурсов. Есть готовые платы на STM8S103F3P6 и ей подобные от китайцев.

Но, следует учесть, что готовые платы предназначены для обучения.

На сайте производителя st.com, находим свой МК и скачиваем к нему документы:

Reference manual: RM0016 — общий документ для всех МК семейств STM8S и STM8AF. Далее RM.
Datasheet: У меня DS5855 — документ к моделям STM8S105C4/6, STM8S105K4/6 и STM8S105S4/6. Далее DS.

Из вкусного у него (поверхностно):

  • Поддержка 16 МГц
  • 32 Кб Flash памяти, 1 Кб EEPROM и 2Кб RAM
  • Питание 2.95-5.5В
  • 8-и 16-битные таймеры
  • UART, SPI, I2C
  • 10-битный АЦП
  • до 38 дискретных входов/выходов

2. Необходимое оборудование

Я вижу два варианта работы с МК:

Здорово, классно, мне нравится. Так делают многие люди.

В этом случае для МК нужна будет так называемая обвязка. План простой:

  1. Берем макетную плату, в моем случае TQFP(32-64PIN)0.8MM, запаиваем на неё МК
  2. Берем двухрядную гребенку PLS-2×40 припаиваем к отверстиям, которые ведут к выводам МК
  3. Берем печатную макетную плату (у меня 9х15 см) и припаиваем на нее прошлый бутерброд
  4. Смотрим RM пункт 7. Power supply, читаем. Написано нужен конденсатор соединяющий вывод VCAP и наши 0В источника питания. Еще написано, что подробней в смотреть нужно в DS к конкретному МК в секции electical characteristics. Для меня это пункт 10.3.1 VCAP external capasitor со ссылкой на Table 18 где и указан номинал 470 — 3300 нФ. Я взял 1 мФ (на схеме C3). (для чего он нужен, надеюсь, почитаете сами в RM)
  5. Там же в DS в пункте 10.3.8. Reset pin characteristics находим номинал конденсатора 0.1мФ(на схеме C4). Резистор R4 номиналом 10 КОм используют в отладочных платах и различных application note, хотя внутри МК уже есть подтягивающий резистор номиналом от 30 до 80 КОм (если верить тому же DS). Параллельно конденсатору C4 ставим нашу кнопку сброса. Такую схему сброса можно увидеть например в Desighn note DN0005.
  6. Также, ST любят добавлять на отладочные платы конденсаторы по питанию на 100нФ, в количестве N выводов подключенных к питанию +1. На схеме нарисовано всего C1, C2 и C5 3 шт, и на плату я их не паял, но смысл вы поняли. На столе работать будет и без них, а в реальной коммерческой разработке лучше этим делом озаботиться при разведении платы устройства.
  7. Распаять SWIM разъем программирования (я делаю из PLS-1×40)

Здорово, классно, мне нравится. Так делают многие люди.

Стоит ознакомиться с конфигурацией платы, если это плата от ST, то она сразу с программатором и подключается USB type B кабелем. На сайте ST будет схема на странице продукта. На плате будут кнопки, светодиоды, пищалки, ёмкостные кнопки и прочие прелести с которыми можно поиграться.

Если плата китайская, то часто платы без программатора, то нужен будет программатор.

Шелкографии названий выводов лучше не верить и перепроверить сравнив с DS.

Плюс нужен программатор, у меня китайский ST-Link V2. Умеет программировать и STM8 и STM32.

3. Выбор IDE

Для меня вопрос выбора пока не актуален, работаю в IAR для STM8, ибо в ней делали проект над которым я сейчас работаю, по той же причине старая версия.

Идем на сайт iar.com, в поиске набираем модель своего МК.
Скачиваем IAR Embedded Workbench for STM8, выбираем при установке size-limited evaluation и миримся с ограничением в 8 Кб кода. Или покупаем. Есть на запрещенных на территории РФ ресурсах взломанные версии, но для коммерческих проектов не годится.

Инструкция по установке есть в самом установщике либо в гугле.
Я использую версию 6.5.3.2581.
Устанавливаем среду, вместе с ней драйвера на программатор.

4. Создание проекта

Заходим в IDE, идем Project -> Create new project -> C++

Жмем OK, выбираем директорию (желательно не имеющую кириллицы и пробелов), выбираем имя (без пробелов и кириллицы).

Идем в корневую папку своей IDE и находим папку inc, для меня путь:

Находим среди заголовочных файлов iostm8 свою модель МК, для меня:

Подключаем её в самом начале и добавляем бесконечный цикл.

В меню Project -> Options -> General Options в графе Device выбираем свой МК.

В Project -> Options -> Debugger в графе Driver выбираем ST-LINK.

Находим на панели инструментов кнопку Download and Debug.
При первой компиляции среда попросит выбрать имя .eww файла. (Я называю так же как и проект.)

Внизу в окне Debug Log должны быть сообщения, что:

  • Preprocessor for STM8 — запустился препроцессор
  • Debugger for STM8 — запустился отладчик
  • Connected to STM8 SWIM Debugging system — произошло подключение к МК
  • Loaded debugee — произошла загрузка прошивки
  • Target reset — произошел сброс

Нажимаем Stop debugging, отладка прекращается, но МК питается от программатора и дальше выполняет программу, а именно крутит бесконечный цикл и делает ничего.

Итоги

Получился краткий обзор и вводная в программирование МК серии STM8S без самого программирования. Получилась только база для работы, с этого обычно все и начинается — со сборки макета.

Раскрывать тему подробней смысла не вижу.

Во многих статьях уже после введения, буквально через пару строчек мигают светодиодами, что мне не понятно.

Насколько выполнены цели судить можно будет по тому, получилось ли у начинающего что-то сделать самостоятельно, используя предложенную мной информацию. (индикатор окно Debug log)

STM8S-Discovery, первый опыт программирования.

Сразу скажу, что не претендую на спеца в области программирования, если честно, то уровень ниже плинтуса.
Но хочется сделать что-нибудь своими руками, мозгами, ну и восполнить пробел в области программирования.
Мозги уже не как в молодости, но ещё не заржавели).
Всю жизнь возился только с железом и мне проще понять как работает программа по примерам.
Очень просто и доходчиво пишет addelectronics, его статьи и сподвигли меня взяться за микроконтроллеры.
Выбор остановил на отладочной плате STM8S-Discovery и среды программирования IAR (IAR Embedded Workbench IDE).
Уроки по основам и т.п. найдёте у addelectronics
И так, "Hello светодиод" прошёл на ура, надо что то посложнее, вот тут то и выяснилось, что мне ещё "Учиться, учиться и учиться" как говаривал дедушка Ленин (кстати, слизал он лозунг у буддистов).
Чтобы совместить полезное с приятным было решено сделать устройство ШИМ регулятор вентилятора охлаждения с индикацией температуры по датчику.

Первый этап — это индикация, опыт мигания светодиодом есть уже)))

Принцип работы устройства на STM8S будет такой:
— Напряжение с датчика температуры прямо пропорционально меняет сигнал ШИМ от 0% до 100% и индикацию от 1 до, например, 8 светодиодов.
Вот таблица зависимости выходного напряжения от температуры с ДТ инжекторного авто ВАЗ-2109.

Схема подключения ДТ

Исходя от эти данных и будем "плясать".
R1 = 2150 Ohms
R2 = 177 Ohms +100C
U in = 5 Volts
U out = 0,38 Volts
———————————-
R1 = 2150 Ohms
R2 = 241 Ohms +90C
U in = 5 Volts
U out = 0,50 Volts
———————————-
R1 = 2150 Ohms
R2 = 332 Ohms
U in = 5 Volts +80C
U out = 0,67 Volts
———————————-
R1 = 2150 Ohms
R2 = 467 Ohms +70C
U in = 5 Volts
U out = 0,89 Volts
———————————-
R1 = 2150 Ohms
R2 = 667 Ohms +60C
U in = 5 Volts
U out = 1,18 Volts
———————————-
R1 = 2150 Ohms
R2 = 973 Ohms +50C
U in = 5 Volts
U out = 1,56 Volts
———————————-
R1 = 2150 Ohms
R2 = 1188 Ohms +45C
U in = 5 Volts
U out = 1,78 Volts
———————————-
R1 = 2150 Ohms
R2 = 1459 Ohms +40C
U in = 5 Volts
U out = 2,02 Volts
———————————-
R1 = 2150 Ohms
R2 = 1802 Ohms +35C
U in = 5 Volts
U out = 2,28 Volts
———————————-
R1 = 2150 Ohms
R2 = 2238 Ohms
U in = 5 Volts
U out = 2,55 Volts
———————————-
R1 = 2150 Ohms
R2 = 2796 Ohms
2,83 Volts

Так как сигнал с датчика аналоговый, то используем возможности STM8S как АЦП.
Здесь описан принцип работы АЦП на четыре разряда
Displaying variable voltage on a bar of LEDs using STM8S-DISCOVERY (AN3280)

АЦП с индикацией уровня сигнала

Пришлось повозить чтобы заставить работать не 4, а 8 индикаторов и загорания всех светодиодов не при максимальном вх. напряжении, а при уменьшении входного напряжения, ведь у нас с увеличением температуры, напряжение с ДТ уменьшается.
В результате получилась вот такаой кусок программы, можете сравнить с докой AN3280 с сайта ST:

#include "stm8s.h" // file needed only for registers mask
#include "parameter.h"
/**
* addtogroup ADC1_Example1
* @<
*/

#define ALL_LEDs ((u8)0xff) // LEDs mask

#define switch_all_LEDs_on < GPIOB->ODR|= ALL_LEDs; >//LEDs control : all on
#define switch_all_LEDs_off < GPIOB->ODR&=

ALL_LEDs; > //LEDs control : all off

/* Private variables ———————————————————*/
u8 temp_AD_H; // temporary registers for reading ADC result (MSB)
u8 temp_AD_L; // temporary registers for reading ADC result (LSB)
u8 ADInit; // flag for ADC initialized
u8 ADSampRdy; // flag for filed of samples ready
u8 AD_samp; // counter of stored samples
u16 AD_sample[NUMB_SAMP]; // store samples field
u16 AD_avg_value; // average of ADC result

u8 peak_memo; // variables for peak level detector
u8 peak_filt; // variables for peak level detector*/

/* Private function prototypes ————————————————*/
/**
* brief Count average of samples stored in the u16 field
* par Parameters:
* *p: pointer to the begin of the field
* smp: number of samples in the field
* retval Average u16 value
*/
u16 u16_average(u16 *p, u8 smp) <
u8 i;
u16 sum;

for(i=0, sum= 0; i < smp; ++i)
sum+= *p++;
return sum / smp;
>
/* ————————————————————————— */
/**
* brief Prepare data for four LED bar of signal and peak indicator
* par Parameters:
* val: Level of the mesured signal [0-5]
* retval 4 bits (low nibble) of the composite bar graph information
*/
u8 signal_and_peak_level(u8 val) <
u8 signal;
u8 peak;

case 0: peak= 0x80; signal= 255; break;
case 1: peak= 0x40; signal= 127; break;
case 2: peak= 0x20; signal= 63; break;
case 3: peak= 0x10; signal= 31; break;
case 4: peak= 8; signal= 15; break;
case 5: peak= 4; signal= 7; break;
case 6: peak= 2; signal= 3; break;
case 7: peak= 1; signal= 1; break;
case 8: peak= 0; signal= 0; break;
default: peak= signal= 255;

>;
if(peak_filt == 0) < // slow fall of peak level indicator
if(peak_memo) <
peak_memo>>= 1;
peak_filt= PEAK_FILTER;
>;
>
else
—peak_filt;
if(peak >= peak_memo) < // check the highest level value
peak_memo= peak; // and copy it to peak indicator
peak_filt= PEAK_FILTER; // with fall speed refresh
>;
return (signal | peak_memo); // return bar graph information
>

ALL_LEDs; // LEDs — as push-pull outputs, all off
GPIOB->DDR|= ALL_LEDs; //
GPIOB->CR1|= ALL_LEDs;

GPIOC->DDR|= 0x02; // PC.1 as push-pull outputs
GPIOC->CR1|= 0x02;

0x40; // PE.6 as a floating input
GPIOE->DDR&=

// *** ADC INITIALIZATION ***
TIM1->ARRH= (u8)(AUTORELOAD >> 8); // set autoreload register for trigger period
TIM1->ARRL= (u8)(AUTORELOAD); //
TIM1->CCR1H= (u8)((AUTORELOAD-AD_STAB) >> 8); // set compare register for trigger period
TIM1->CCR1L= (u8)(AUTORELOAD-AD_STAB);
TIM1->CR1|= TIM1_CR1_ARPE; // auto reload register is buferred

TIM1->CR2= (4<<4) & TIM1_CR2_MMS; // CC1REF is used as TRGO
TIM1->CCMR1= (6<<4) & TIM1_CCMR_OCM; // CC1REF in PWM 1 mode
TIM1->IER|= TIM1_IER_CC1IE; // CC1 interrupt enable
TIM1->CCER1|= TIM1_CCER1_CC1P; // CC1 negative polarity
TIM1->CCER1|= TIM1_CCER1_CC1E; // CC1 output enable
TIM1->BKR|= TIM1_BKR_MOE;

TIM1->SMCR|= TIM1_SMCR_MSM; // synchronization of TRGO with ADC

TIM1->CR1|= TIM1_CR1_CEN; // timer 1 enable

ADC1->CSR= ADC1_CSR_EOCIE | (9 & ADC1_CSR_CH); // ADC EOC interrupt enable, channel 9
ADC1->CR1= 4<<4 & ADC1_CR1_SPSEL; // master clock/8, single conversion
ADC1->CR2= ADC1_CR2_EXTTRIG; // external trigger on timer 1 TRGO, left alignment
ADC1->TDRH= 2; // disable Schmitt trigger on AD input 9
ADC1->TDRL= 0; //

// init ADC variables
AD_samp= 0; // number of stored samples 0
ADInit= TRUE; // ADC initialized
ADSampRdy= FALSE; // No sample

ADC1->CR1|= ADC1_CR1_ADON; // ADC on

enableInterrupts(); // enable all interrupts

// *** MAIN LOOP ***
while (1) <
if (ADSampRdy == TRUE) < // field of ADC samples is ready?
AD_avg_value= u16_average(&AD_sample[0], AD_samp); // average of samples

AD_samp= 0; // reinitalize ADC variables
ADSampRdy= FALSE;

leds= signal_and_peak_level((u8)((AD_avg_value + 64) / 128)); // setting LED status

ALL_LEDs); // LEDs settings in according to LED status
GPIOB->ODR|= leds;
>;
>;
>
/**
* @>
*/

Начало работы с stm8s с использованием компилятора stvd и cosmic c

STM8 представляет собой серию из 8-битных микроконтроллеров от STMicroelectronics, который стал общим выбором микроконтроллера для разработки продуктов чувствительных к стоимости. Я ранее работал с AVR, PIC и несколькими другими микроконтроллерами ARM Cortex, но, безусловно, в некоторых приложениях они становятся излишними и значительно увеличивают стоимость спецификации. Недавно, разобрав несколько дешевых китайских продуктов, я обнаружил, что в большинстве из них есть микроконтроллер STM8. ИС не только дешевая, но и обладает множеством функций и опций, что делает ее пригодной для использования во многих различных приложениях. Например, STM8S Серия контроллеров (которую мы изучим в этой серии руководств) является контроллером общего назначения, но есть и другие серии, такие как STM8A для автомобильных конструкций и STM8L для конструкций с маломощным аккумуляторным питанием, которые расширяют область применения этих контроллеров.

В этой серии руководств мы узнаем, как программировать микроконтроллеры STM8S, в частности, STM8S103F3P6.. Причина для начала работы с этим конкретным номером детали — это просто соотношение цены и производительности. Подобно!! просто посмотрите на это всего за 0,25 доллара (около 20 рупий) мы получаем 8-битный микроконтроллер с внутренним генератором 16 МГц, 8 КБ Flash, 10-битный АЦП, UART, SPI и I2C. Кто бы не был заинтригован? Кроме того, широко популярен STM8S103F3P6, и, следовательно, как новичок, вы найдете достаточно поддержки, если вам понадобится помощь вне руководств. Начиная с этого, у нас будет последовательность руководств, аналогичных учебным пособиям по программированию PIC, где мы узнаем, как программировать этот контроллер от простого мигания до различных интерфейсов дисплея и датчиков. Вы также можете ознакомиться с учебным пособием по STM32F103C8 и проектами, если вас интересуют 32-разрядные микроконтроллеры STM.

Выбор средств разработки оборудования и программного обеспечения

Теперь, когда мы нашли микроконтроллер, нам нужно будет выбрать инструменты разработки аппаратного и программного обеспечения, чтобы начать процесс обучения. Вариантов много, здесь я выбрал те, которые бесплатны и доступны каждому.

STM8S103F3P6 Разработка

Официальная плата разработки для 8-битного микроконтроллера ST называется комплектом STM8 Discovery, но мы будем использовать другую недорогую плату для разработки, которую вы можете легко найти у местного поставщика или в интернет-магазине. Изображение платы разработки STM8S103F3P6, которую мы будем использовать в этом руководстве, показано ниже.

Плата состоит только из минимума компонентов, необходимых для начала разработки. Это макетная плата и подходит для компактных приложений. Внутренняя принципиальная схема макетной платы показана ниже.

Присмотревшись, вы заметите, что помимо контроллера STM8S103F3p6, у нас есть кнопка сброса для сброса контроллера. Светодиод питания и тестовый светодиод подключены к PB5 (порт B, контакт 5) и регулятору напряжения AMS1117, который преобразует 5 В из порта USB в 3,3 В для контроллера. При необходимости контроллер также может быть настроен на работу от 5 В. Различные части контроллера отмечены ниже. У нас также есть 4 вывода программатора, а именно 3.3V, GND, SWIM и NRST, которые можно использовать для простого программирования и отладки нашего микроконтроллера.

Программатор STM8S103F3P6

Для программирования нашего контроллера мы будем использовать ST-LINK v2, который дешев и легко доступен в Интернете. Существует множество вариантов (металл, пластик, золото, розовый, голая плата) этой платы ST-LINK v2, и все они служат одной цели. Мой показан ниже, но вы можете использовать любой тип программатора ST-LINK, распиновка будет отличаться, поэтому просто убедитесь, что вы правильно прочитали распиновку на корпусе. Существует также ST-LINK V3 от самой ST-Microelectronics, который можно использовать для серьезной отладки. Мы не будем использовать это сейчас, так как это немного дорого, мы сохраним его на будущее.

STM8S103F3P6 IDE и компилятор

Выбор правильной IDE и компилятора для STM8S103F3P6 вызывает недоумение просто потому, что есть много вариантов на выбор. Официальные инструменты, доступные для микроконтроллера STM8, показаны на изображении ниже.

Что касается конфигурации, у нас есть STM8CubeMx, я попробовал программное обеспечение, и оно меня полностью разочаровало. В отличие от STM32Cube, STM8Cube не может автоматически генерировать код. Он может генерировать отображение контактов только для целей визуализации и может пригодиться, если вы переносите свой код с одного контроллера на другой. В остальном я бы не стал его использовать. Поэтому в этой серии руководств мы не будем использовать это.

Для IDE и компилятора у нас есть множество вариантов на выбор. Два основных варианта для IDE — это рабочая среда IAR и ST Visual Develop (STVD), оба программного обеспечения выглядят так, как будто они из 90-х, но после некоторого времени, поигравшего с ним, я обнаружил, что STVD — хороший выбор только потому, что он полностью бесплатный. Точно так же для компилятора мы будем использовать компилятор Cosmic C, опять же только потому, что он полностью бесплатен. Еще одна причина выбора этой IDE и компилятора заключается в том, что, как только мы познакомимся со средой, будет легко использовать любой другой 8-битный микроконтроллер от ST без особых усилий. Далее в этой статье мы узнаем, как установить и настроить STVD с компилятором Cosmic C.

Для перепрошивки мы будем использовать ST Visual Programmer (STVP), этот инструмент будет автоматически установлен при установке STVD. Он будет интегрирован в саму среду IDE, что поможет нам быстро программировать и отлаживать. Последним программным обеспечением будет STMStudio, которое представляет собой программу мониторинга STM8. Программное обеспечение может помочь с отладкой STM8 в реальном времени и имеет некоторые интересные функции, такие как мониторинг значения переменной, построение графика и т. Д. Я недостаточно экспериментировал с этим программным обеспечением. И, по крайней мере, для первых нескольких руководств мы не будем использовать это программное обеспечение, поскольку нам не потребуются большие требования к отладке.

Стандартная периферийная библиотека STM8S: ST Microelectronics предоставляет набор библиотек для упрощения разработки кода для микроконтроллеров STM8S, эта библиотека называется « Стандартная периферийная библиотека » или сокращенно SPL. Библиотека классная, за исключением того, что она написана с учетом всех возможных контроллеров в 8-битном семействе STM8S / A, а не только контроллера STM8S103F3P6, который мы будем использовать. Следовательно, мы должны внести некоторые изменения здесь и там, чтобы заставить его работать (о чем я расскажу позже). Но все же я считаю, что стоит попробовать, потому что он может сделать разработку очень быстрой, и, следовательно, мы будем использовать его в нашем руководстве.

Если вы не хотите использовать библиотеку, вам необходимо получить прямой доступ к регистрам контроллера или выполнить программирование сборки на голом железе. И то, и другое доставляет удовольствие, если у вас есть время изучить и использовать их. Моя идея состоит в том, чтобы использовать библиотеку SPL везде, где она хорошо работает, а затем также работать на уровне регистров и сборки, если это необходимо. Постараемся не изобретать велосипед заново!

STM8S с Arduino с использованием Sduino

Обсуждение вариантов программного обеспечения никогда не будет полным, если я не упомяну, что Arduino IDE поддерживает STM8S. Да, та же самая плата STM8S103F3P6 может быть запрограммирована непосредственно из Arduino IDE с помощью Sduino, спасибо Майклу Майеру. Но проект все еще находится в стадии разработки и, вероятно, потребуется некоторое время и поддержка сообщества Sduino, чтобы обеспечить полную поддержку платформы. Однако всего через несколько минут после игры со Sduino мне это понравилось, и поэтому я решил написать отдельную статью о том, как программировать микроконтроллер STM8S с Arduino. Я свяжу статью здесь, когда она будет готова. В этой статье будет обсуждаться, почему и почему вам не следует использовать Arduino IDE для программирования микроконтроллеров STM8S.

Итак, это мой выбор программного и аппаратного обеспечения, дайте мне знать в разделе комментариев, если вы думаете, что другое программное обеспечение было бы лучшим выбором и почему. Я хотел бы изучить и другие варианты.

Загрузка необходимого программного обеспечения

Теперь, когда мы определились с программным обеспечением, которое мы будем использовать в этом руководстве, давайте загрузим их, используя следующую ссылку. Все программное обеспечение можно загрузить и использовать бесплатно, вам просто нужно зарегистрировать бесплатную учетную запись на ST и Cosmic, если вы еще этого не сделали.

  • ST Visual Develop (STVD)
  • Компилятор Cosmic C
  • Стандартная периферийная библиотека
  • STM8Cube Mx (дополнительно)
  • STMStudio для STM8 (необязательно)

Настройка STVD и компилятора Cosmic C

После загрузки обоих программ просто следуйте инструкциям на экране, чтобы установить их. Я бы рекомендовал оставить их в каталогах по умолчанию, чтобы избежать путаницы в дальнейшем. STVD IDE установится без каких-либо усилий. Для компилятора Cosmic C вы должны получить бесплатный лицензионный ключ в процессе установки. Вам просто нужно предоставить информацию о компании с идентификатором электронной почты, если вы студент, просто укажите это. Процесс получения лицензионного ключа происходит мгновенно и автоматически, хотя в инструкциях по настройке сказано, что это может занять день или два, я получил лицензионный ключ автоматически на свой идентификатор электронной почты, как только отправил его, просто убедитесь, что вы проверьте СПАМ. Мое электронное письмо с подтверждением показано ниже.

В соответствии с инструкциями по электронной почте, просто скопируйте файл license.lic и вставьте его в подпапку «лицензия» в папке установки. Для меня путь был «C: \ Program Files (x86) COSMIC \ FSE_Compilers \ CXSTM8 \ License» . Просто вставьте файл в место, как показано ниже.

Стандартная периферийная библиотека для STM8S103F3P6

Как было сказано ранее, ST Microelectronics предоставляет библиотеки под названием SPL, которые можно использовать для всех 8-битных микроконтроллеров STM8S / A. Вы можете либо загрузить исходный SPL из ST Microelectronics и внести необходимые изменения, либо загрузить мои библиотеки SPL STM8S103F3P6 и использовать их как таковые. Я бы порекомендовал позже.

Оригинальный SPL от ST Microelectronics

Пока вы там, не забудьте загрузить руководство пользователя SPL, которое будет очень удобно при программировании контроллера.

Составление первой программы

Теперь, когда все готово, давайте попробуем скомпилировать нашу первую программу, чтобы проверить, работают ли IDE, компилятор и библиотека должным образом. Вы также можете посмотреть видео внизу страницы для получения подробных инструкций.

Начните с открытия STVD и выберите File -> WorkSpace, во всплывающем окне выберите «New Workspace» и введите имя проекта и путь, в котором программа должна быть сохранена. Я называю свою программу BareMinimum и сохраняю ее в папке на рабочем столе. Нажмите OK, и вы получите диалоговое окно New Project, как показано ниже.

Я снова называю проект bareminimum, и в цепочке инструментов мы должны указать корень цепочки инструментов в путь, где установлен компилятор STM8 Cosmic. Адрес пути по умолчанию — «C: \ Program Files (x86) COSMIC \ FSE_Compilers \ CXSTM8» . После этого просто нажмите OK, чтобы открыть окно «Выбор MCU».

Найдите STM8S103F3P, выберите его и нажмите OK. Это откроет новый проект для STM8S103F3P на STVD, окна должны выглядеть так, когда закончите.

Щелкните правой кнопкой мыши «исходный файл» и выберите «Добавить файлы в папку», чтобы включить все файлы c из нашей библиотеки SPL, аналогичным образом щелкните правой кнопкой мыши «Включить файлы», чтобы включить все файлы заголовков. Если у вас есть вопросы, вы можете обратиться к видео ниже. После добавления всех файлов нажмите « Сборка» -> «Перестроить все», а затем «Скомпилировать», чтобы проверить правильность работы компилятора и SPL. Если все пойдет хорошо, вы должны увидеть следующий экран с ошибкой 0 результата сборки и предупреждением 0.

Читать:
Как залудить эмалированный провод

После этого мы можем быть уверены, что все наши библиотеки SPL работают с компилятором Cosmic и STVD. Это стандартная процедура, которой мы будем следовать для каждого нового проекта. Вы также можете включить только необходимые заголовочные и исходные файлы, которые необходимы для проекта, чтобы при необходимости сократить время сборки.

Загрузка кода из STVD в плату разработки STM8S с помощью ST-Link V2

Подключите ST-Link V2 к плате разработки, как показано ниже.

Подключения довольно просты, и, что самое приятное, вам не нужны внешние компоненты. Моя аппаратная установка для программирования показана ниже, я только что использовал соединительные провода для подключения. Однако обратите внимание, что распиновка вашего ST-Link может отличаться от моей, убедитесь, что вы соблюдаете распиновку на устройстве, прежде чем выполнять подключения.

Выполните подключение и подключите устройство к компьютеру, установка драйвера должна начаться автоматически. Вы можете использовать диспетчер устройств, чтобы убедиться, что ваш компьютер правильно обнаружил ST-LINK V2. Вы также заметите, что индикатор проверки на плате мигает, если это первый раз, когда плата включается. Как только мы успешно скомпилируем код на STVD, мы получим файл расширения «S19» в каталоге отладки папки проекта. Мой файл S19 показан ниже.

Этот S19 похож на файл Hex, который следует загрузить в контроллер. Чтобы загрузить программу, откройте ST Visual Programmer (STVP), который должен быть установлен вместе с STVD. Затем в окне конфигурации выберите, как показано на изображении ниже, и нажмите OK.

Затем нажмите File-> Open и перейдите к файлу S19, который мы показали ранее. Затем, чтобы прошить устройство, перейдите в Program -> Current Tab. Если перепрошивка прошла успешно, вы должны увидеть следующий результат.

По умолчанию, когда вы покупаете STM8S, у него будет мигающая программа, которая мигает тестовым светодиодом. Теперь, после загрузки этого пустого кода, светодиод больше не будет мигать.

Важно: я обнаружил, что мой ST-Link не сбрасывает плату автоматически после программирования. Мне пришлось отключить и снова подключить его, чтобы проверить вывод моей программы. Я не уверен, что это проблема для всех, дайте мне знать в разделе комментариев. Также посмотрите видео внизу, в котором объясняется решение этой проблемы.

На этом давайте закончим этот урок, мы изучили основы оборудования, настроили среду разработки и узнали, как компилировать и загружать код. Теперь мы готовы к прогрессу и будем использовать это во всех наших будущих уроках. Если у вас есть вопросы, напишите их на нашем форуме и следите за новостями !!

Микроконтроллеры STM8 «с нуля»

В статье подробно рассказывается о том, как начать работать с микроконтроллерами STM8 компании STMicroelectronics. Мы рассмотрим среды разработки, разберемся, как настроить проект для работы, коснемся некоторых особенностей линковки библиотек к проекту, и, в конце концов, совместно разберем небольшой рабочий проект для закрепления полученных знаний.

Новая серия ИП LI100-20BxxPR3 от MORNSUN: от умных домов до промышленной автоматизации

Линейка микроконтроллеров STM8 заменила STR7 в 2008 году. На сегодня она состоит из трех семейств: для автомобильного, низкопотребляющего и общего применений. Это, соответственно, STM8A, STM8L и STM8S. Общая же номенклатура составляет более 160 позиций, и компания постоянно работает над расширением каждой линейки. Хотя на рынке наметилась тенденция перехода на 16/32-битные микроконтроллеры, 8-битные все еще составляют основную часть рынка, и в ближайшее десятилетие их доля останется значительной.

Инструментарий для работы

Для работы с любым микроконтроллером, и STM8 – в частности, нам понадобятся отладочный комплект и среда разработки c Си-инструментарием. В качестве отладочного комплекта можно использовать любой из предоставляемых комплектов как от ST, так и от сторонних производителей. Рассмотрим STM8S-Discovery, его внешний вид представлен на рис. 1.

STM8S-Discovery
Рис. 1. STM8S-Discovery

Данный выбор обусловлен, в первую очередь, очень низкой стоимостью комплекта (меньше $15), его доступностью и дальнейшей пригодностью. Комплект состоит из двух частей. Одна – это контроллер STM8S105С6 со светодиодом, сенсорной кнопкой и разъемами, на которые выведены все свободные порты ввода/вывода. Вторая – программатор-отладчик ST-Link c USB-интерфейсом. Если внимательно посмотреть на изображение отладочного комплекта, то можно увидеть, что с помощью небольших усилий его можно разделить на две части, и в дальнейшем использовать отделенный ST-Link для программирования и отладки своих собственных разработок. Всю необходимую документацию вы можете посмотреть и скачать по ссылке.

Выбор программного инструментария для разработки

На данный момент для разработки и отладки программного обеспечения для STM8 существует четыре среды: ST Toolset от STMicroelectronics, Ride7 от Raisonance, CXSTM8 от Cosmic software, IAR Embedded Workbench от IAR Systems. Сравнительный анализ средств разработки программного обеспечения представлен в таблице 1.

Таблица 1. Сравнительный анализ бесплатных средств разработки программного обеспечения

Инструментарий

Среда
разработки

Си-инструментарий

Си-инструментарий
других
производителей

Ограничение
Си-иструментария,
Кбайт

Программатор-
отладчик

ST Visual Develop

Cosmic software,
Raisonance

ST-Link R-Link STICE

8 или полная версия
на 30 дней

Пакет ST Toolset включает в себя среду разработки ST Visual Develop и отдельную программу для более функционального внутрисхемного программирования flash-памяти микроконтроллеров ST Visual Programmer. Среда разработки ST Visual Develop имеет встроенный инструментарий для разработки программного обеспечения на языке assembler, но у нее также имеется возможность подключения и использования Си-инструментария от Raisonance и Cosmic software. Стоит заметить, что все четыре среды с Си-инструментарием предоставляют возможность использования с некоторыми ограничениями, а именно – по загружаемому коду во flash-память. У Raisonance оно составляет 16 Кбайт, у Cosmic software — 32 Кбайт, а у IAR – 8 Кбайт или полную версию с 30-дневным ограничением. Самый дешевый и оптимальный вариант – это использование ST Visual Develop в качестве среды разработки и Си-инструментария либо от Raisonance, либо от Cosmic software. Вы, конечно же, можете заметить, что наиболее известным и популярным является инструментарий от IAR System, и тут с вами трудно не согласиться. Он представляет собой более серьезный продукт с лучшей технической поддержкой, но и является самым дорогим. Итак, мы останавливаем свой выбор на ST Visual Developer, плюс Си-инструментарий от Cosmiс software и Raisonance. Большой разницы в использовании обоих инструментариев нет, и далее в своих разработках вы можете остановиться на любом из них. Если вы – начинающий разработчик, и у вас недостаточный опыт, рекомендую устанавливать все программное обеспечение по предполагаемым установщиком местам расположения, т.е. по умолчанию. Это необходимо для меньшей путаницы при дальнейшей настройке проектов, расположении файлов, библиотек и синхронизации с информацией приведенных материалов.

Установка программного инструментария для разработки

Итак, скачиваем и устанавливаем ST Toolset по ссылке. Далее нам необходимо скачать Си-инструментарий от Raisonance и от Cosmic software.

Открываем браузер, входим по ссылке, скачиваем два установочных файла – это среда разработки Ride7 и инструментарий RKit-STM8. Устанавливаем в той же последовательности. После установки, необходимо получить бесплатную лицензию на использование Си-инструментария, заполнив регистрационную форму. В течение короткого срока вы получите лицензионный ключ по указанной в регистрации электронной почте. Запускаем среду «Пуск ® Программы ® Raisonance Tools ® Ride7 ® Ride7» и переходим на «Help ® License». Вводим общую информацию, выбираем «Manual Activation», копируем ключ из поля «This computer Serial Key» в поле «Serial Key», вводим ключ, присланный по электронной почте в поле «Paste the Activation code and Select Next» и, если все сделано верно, Си-инструментарий будет активирован и выдаст соответствующее сообщение.

Для установки Си-инструментария от Cosmic Software переходим по ссылке и скачиваем инструментарий «STM8 32k free tools 2010 special edition», предварительно заполнив регистрационные данные. Далее устанавливаем инструментарий, отправляем информацию, выданную при его установке, на электронную почту «[email protected]». Спустя некоторое время вам придет ответное письмо с файлом лицензии. Теперь вы можете активировать Си-инструментарий, запустив среду разработки «Пуск ® Программы ® Cosmic Tools ® STM8 32K Compiler 4.3.4 ® CXSTM8», которая предложит вам активировать продукт двумя методами. Мы выбираем «Specify the License File» и указываем файл с лицензией.

На сайте STMicroelectronics вы можете найти всю необходимую информацию для работы c STM8S. На основе одного из примеров мы рассмотрим проект, более подробно останавливаясь на ключевых моментах. Также мы остановимся на двух библиотеках – сенсорной и библиотеке стандартной периферии микроконтроллера – написанных инженерами STMicroelectronics для быстрого освоения всех линеек МК и вывода продукции на рынок. Вы можете отказаться от использования библиотек и работать напрямую с именами регистров или написать собственное программное обеспечение для работы с периферией микроконтроллера.

Обзор библиотек

Библиотека стандартной периферии содержит набор функций, структур данных и макросов, охватывающих свойства периферии микроконтроллеров STM8S. Использование библиотеки в значительной степени облегчает процесс разработки собственного программного обеспечения, т.к. устраняется необходимость изучения документации с именами регистров и их функционального назначения. Последняя версия библиотеки со всей необходимой информацией доступна по ссылке, раздел «firmware». Структура библиотеки представлена на рис. 2.

Рис. 2. Структура библиотеки стандартной периферии

Заголовочный файл «stm8s.h» содержит определения констант и структур регистров для всей периферии. Для использования библиотеки данный файл необходимо включить («#include "stm8s.h"») в основной листинг программы «main.c», и раскомментировать строку («#define USE_STDPERIPH_DRIVER»). Функционал каждого периферийного модуля состоит из заголовочного и исполняемого файла, например, для GPIO – это «stm8s_gpio.h» и «sym8s_gpio.с». В заголовочном файле описаны все переменные, константы, структуры данных и функции, обеспечивающие полный функционал конкретного периферийного модуля. В исполняемом файле осуществляется реализация функционала, описанного в заголовочном файле.

В заголовочном файле «stm8s_type.h» стандартные типы переменных стандарта ANSI C переопределены в более короткие и понятные имена типов. В конечном счете вы можете скорректировать данный файл под наиболее понятные и удобные для вас имена типов.

Заголовочный файл «stm8s_conf.h» используется для конфигурирования библиотеки необходимых для работы периферийных модулей, задания определенных констант (например, тактовой частоты работы ядра). Это осуществляется через раскомментирование макроопределений, соответствующих определенному периферийному модулю, например, в приведенном ниже листинге расскомментированы вторая и четвертая строки:

В связи с наличием разной периферии в файле «stm8s_conf.h» учтены особенности периферийных модулей для определенного микроконтроллера. Например, в нижеприведенном листинге таймер 3 определен только в микроконтроллерах STM8S208, STM8S207 и STM8S105:

Работа с библиотекой и ее использование на конкретном примере будут рассмотрены ниже в разделе «Создание нового проекта, конфигурирование библиотек». Более подробную информацию, файл справки «stm8s_fwlib_um.chm» вы можете посмотреть либо по ссылке, либо в директории «STM8S_StdPeriph_Driver» загруженного пакета программного обеспечения.

При использовании прерываний необходимо быть внимательным, так как обработка источников прерывания различна для обоих инструментариев. Для инструментария от Raisonance используется функция без параметров (void) с префиксом «interrupt» и номера прерывания, например:

Для инструментария от Cosmic все «пустые» обработчики прерывания описаны в файле «stm8s_it.c», и весь код по обработке прерывания следует размещать здесь. Таблица векторов прерывания располагается в «stm8s_interrupt_vector.c», который связан с документом «stm8s_it.c» через заголовочный файл. Для более подробного ознакомления с обработкой прерываний и особенностями компилятора необходимо посмотреть документацию соответствующего компилятора.

Сенсорная библиотека разработана инженерами STMicroelectronics для применения в микроконтроллерах STM8, так как в настоящее время популярность и актуальность использования решений на основе сенсоров очень велика. Библиотека представляет собой набор совместимых С-файлов, включающих API, который образует интерфейс для работы с другими уровнями программного обеспечения. У компании STMicroelectronics существуют разнообразные решения в данной области, более подробную информацию вы можете получить на сайте компании. Структура библиотеки представлена на рис. 3.

Рис. 3. Структура сенсорной библиотеки

Для использования библиотеки в приложении необходимо добавить все заголовочные и исполняемые файлы в проект. Исключение составляют два файла – «STM8_TSL_RC_Configuration_TOADAPT.h» и «STM8_TSL_RC_routines.asm». Первый копируется в директорию проекта и переименовывается в «stm8_TSL_RC_Configuration.h». Второй добавляется в проект только при использовании инструментария от Raisonance. Файлы «stm8_tsl_rc_api.h» и «stm8_tsl_rc_api.c» определяют функции API, переменные, структуры данных, константы для связи между библиотекой и кодом пользователя. Для использования библиотеки заголовочный файл «stm8_tsl_rc_api.h» должен быть включен в основной исполняемый файл «main.c». Документ «stm8_TSL_RC_Configuration.h» содержит статические конфигурационные параметры, которые должны быть сконфигурированы в соответствии с аппаратной частью проекта. Необходимо проверить все параметры с префиксом «#define» в соответствии с правильными значениями. Более подробно работа с библиотекой будет рассмотрена в разделе «Проект discover».

Среда разработки ST Visual Developer

Для начала работы нам необходимо ознакомиться со средой разработки ST Visual Developer. В среде существуют два основных понятия – проект и рабочая область.

Одна рабочая область может содержать несколько проектов. Это может быть удобно при разработке ПО. Рабочая область создается или открывается через «File ® New Workspace. » или «File ® Open Workspace. ». В уже созданной рабочей области можно создавать, удалять и добавлять новый проект через «Project ® Add New Project to WorkSpace. », «Project ® Remove Project from WorkSpace» или «Project ® Insert Project to WorkSpace. ». Для работы с определенным проектом необходимо его сделать активным: «Project ® Set Active Project». Все вышеописанные операции также можно выполнить, кликнув правой кнопкой мыши на проекте или рабочей области. Добавление папок и файлов в проект осуществляется кликом правой кнопки мыши на проекте или файле; в выпадающем меню вам будут доступны эти операции. Операции по компилированию и сборке проекта доступны во вкладке основного меню «Build ® Compile filename», «Build ® Build», «Build ® Rebuild All». Выбор программатора-отладчика доступен во вкладке «Debug Instrument ® Target Settings. », а все операции по отладке находятся во вкладке основного меню «Debug» и на дополнительной панели инструментов. Для отдельной настройки каждого проекта в среде, по умолчанию, доступны два режима конфигурации проекта – «debug» и «release». Режим «debug» предназначен для использования в режиме отладки. Режим «release» предназначен для автономной работы ПО в микроконтроллере без избыточной функциональности режима «debug». Каждый из режимов вы можете настроить персонально или создать свой собственный режим со специфичными для вас настройками. Более подробную информацию для работы со средой вы можете прочитать в соответствующем руководстве.

Структура пакета программного обеспечения микроконтроллера STM8S-Diccovery

Для дальнейшей работы нам необходимо скачать пакет программного обеспечения (примеры, библиотеки, файлы справки (8,5 Мбайт) для оценочного набора STM8S-Discovery. Пакет имеет следующую структуру:

  • «Libraries» – директория состоит из двух частей:
    • STM8_TouchSensing_Driver – сенсорная библиотека с заголовочными, исполняемыми и справочными файлами;
    • STM8S_StdPeriph_Driver – библиотека периферии с заголовочными, исполняемыми и справочными файлами;
    • discover – проект демонстрирующий работу сенсорной библиотеки и библиотеки периферии;
    • program_template – шаблон для быстрого создания проекта;

    Каждый проект состоит из трех поддиректорий:

    • inc – в ней хранятся заголовочные файлы проекта, включая конфигурационные файлы для сенсорной библиотеки (STM8_TSL_RC_Configuration.h) и библиотеки периферийных устройств (stm8s_conf.h);
    • src – в ней хранятся все файлы исходных текстов, включенные и используемые в проекте (main.c, stm8_interrupt_vector.c и др.);
    • STVD(Raisonance, Cosmic) – в ней хранятся рабочие файлы проектов, областей, настроек (discover.stw).

    Итак, копируем папки «Libraries» и «Project» в рабочую область, где мы предполагаем их использовать, например, в следующее местоположение: «C:Program FilesSTMicroelectronicsst_toolset». Теперь запускаем среду разработки «Пуск ® Программы ® ST Toolset ® Development Tools – ST Visual Develop», кликаем «File ® Open Workspace. » и открываем проект «discover» из папки «C:Program FilesSTMicroelectronicsst_toolsetProjectdiscoverSTVDRaisonance» или «C:Program FilesSTMicroelectronicsst_toolsetProjectdiscoverSTVDCosmic». Теперь мы можем скомпилировать, собрать, прошить микроконтроллер и запустить программу на исполнение. Сборка проекта должна пройти без каких-либо проблем, единственное, что понадобится сделать – это выбрать программатор-отладчик ST-Link через «Debug instrument ® Target Settings ® Swim ST-Link» (рис. 4). Если по каким-то причинам сборка проекта произошла с ошибками, ниже будут приведены все настройки проекта.

    Свойства проекта
    Рис. 4. Свойства проекта

    Самостоятельная настройка проекта

    Если вы решили разместить проект, библиотеки, исходные и заголовочные файлы по вашему собственному усмотрению или создать проект «с нуля», то у вас могут возникнуть проблемы с линковкой файлов библиотек. Все пути к этим файлам можно прописать вручную, но это слишком загромождает проект и делает ваш код менее наглядным. Ниже будут приведены основные настройки проекта для каждого из Си-инструментария в отдельности, и начнем мы с настройки инструментария от Raisonance. Заметим, что в качестве примера будет использоваться проект «discover», скачанный по вышеприведенной ссылке. Переходим на «Projects ® Settings. » (рис. 4).

    В поле «Toolset» выбирается Си-инструментарий с необходимыми настройками, в нашем случае выбран инструментарий от Raisonance. В поле «Root path» указывается путь к Си-инструментарию, а в «Output directory» – режим конфигурации проекта, для которого и будут применяться все настройки; на рисунке 4 выбран режим «debug».

    Следующая вкладка «Projects ® Settings. ®
    Debug». В данной вкладке нас интересует поле «Source Directories:», где прописываются пути к используемым файлам проекта с исходным кодом. Для проекта «discover» – это «С:Program filesstmicroelectronicsst_toolsetprojectdiscoversrc», «C:Program filesstmicroelectronicsst_toolsetlibrariesstm8s_stdperiph_driversrc» и «C:Program filesstmicroelectronicsst_toolsetlibrariesstm8_touchsensing_driversrc».

    Следующая вкладка «Projects ® Settings. ® MCU Selection». Здесь выбирается тип микроконтроллера – STM8S105C6 для выбранного нами оценочного комплекта.

    Следующая вкладка – «Projects ® Settings. ® C Compiler» (рис. 5). В поле «Category» необходимо выбрать «Preprocessor» и далее в поле «Additional include directories» прописать пути к заголовочным файлам, используемым в проекте. Для проекта «discover» – это «C:Program FilesSTMicroelectronicsst_toolsetProjectdiscoverinc», «C:Program FilesSTMicroelectronicsst_toolsetLibrariesSTM8_TouchSensing_Driverinc» и «C:Program FilesSTMicroelectronicsst_toolsetLibrariesSTM8S_StdPeriph_Driverinc».

    Свойства проекта
    Рис. 5. Свойства проекта

    И последняя вкладка – «Projects ® Settings. ®
    Linker». Если вы используете ограниченно-бесплатный Си-инструментарий, то необходимо убрать флажок «Run Code Compressor», иначе при сборке проекта будет сгенерирована ошибка.

    Что касается использования Си-инструментария от Cosmic Software, необходимо всего лишь произвести некоторые изменения в поле «General» (рис. 6), остальные настройки идентичны приведенным выше для Raisonance. В частности в поле «Toolset» выбирается Си-инструментарий от Cosmic software и соответствующие настройки.

    Свойства проекта
    Рис. 6. Свойства проекта

    В разделе, посвященном настройке проекта, были затронуты лишь основные моменты. К сожалению, описать все настройки и тонкости не хватит места, да и в этом, собственного говоря, нет необходимости. Для более детальной информации вам следует обратиться к руководству описания среды ST Visual Developer. Что касается приведенных выше настроек проекта – путей к файлам, вы можете пересобрать и перекомпоновать проект по вашему усмотрению, нужно лишь прописать правильные пути к исходным и заголовочным файлам. По мере работы со средой и приобретения опыта вы сами разберетесь, какие настройки для чего необходимы.

    Создание нового проекта, конфигурирование библиотек

    Возможно, по каким-либо причинам у вас не возникнет желания использовать предоставляемые производителем библиотеки. В таком случае вам понадобится следующая информация. Все файлы с описанием регистров находятся в папке «C:Program FilesSTMicroelectronicsst_toolsetinclude». Пути для Си-компилятора прописываются в свойствах проекта «Project ® Settings ® C compiler ® Category Preprocessor». Свойства линковщика находятся в «Project ®Settings ® Linker ® Category Input».

    Для создания собственного проекта с использованием библиотек наиболее простым и быстрым методом является использование шаблона проекта «Project_template», расположенного в скачанном пакете в папке «Project». При создании проекта вы вручную создаете папку с названием вашего проекта и копируете туда содержимое проекта «Project_template». Затем в среде ST Visual Develop открываем проект из вновь созданной папки (рис. 7).

    Создание нового проекта
    Рис. 7. Создание нового проекта

    Структура проекта состоит из следующих директорий:

    • Source Files – содержит исходные файлы проекта;
    • Source FilesFWLib – содержит исходные файлы библиотеки периферии;
    • Source FilesTSLib – содержит исходные файлы сенсорной библиотеки;
    • Include Files – содержит заголовочные файлы проекта;
    • Include FilesFWlib – содержит заголовочные файлы библиотеки периферии;
    • Include FilesSTlib – содержит заголовочные файлы сенсорной библиотеки.

    Далее нам необходимо выбрать в свойствах проекта программатор-отладчик, Си-инструментарий, тип микроконтроллера, прописать пути к файлам, если они не указаны. Эти операции описывались выше.

    Для использования библиотеки стандартной периферии необходимо убедиться, что в основном файле проекта «main.с» был подключен файл «stm8s.h» (#include ), который содержится в директории «inc» библиотеки периферии микроконтроллера. Также файл «stm8s.h» необходимо добавить в поддиректорию «Include FilesFWlib», кликнув правой кнопкой мыши на папке, и выбрать в выпадающем меню «Add Files to Folder. » (рис. 7).

    Шаблон проекта подразумевает, что разработчик будет использовать библиотеку стандартной периферии микроконтроллера. В другом случае вам нужно закомментировать строку «#define USE_STDPERIPH_DRIVER» в файле «stm8s.h». Если вы все же будете использовать библиотеку стандартной периферии, то вам необходимо выполнить следующие шаги:

    1) Убедиться, что строка «#define USE_STDPERIPH_DRIVER» в файле «stm8.h» раскомментирована;

    2) Добавить файл «stm8s_conf.h» из директории вашего проекта «My Projectinc» в папку корневого каталога «Include Files» проекта с помощью операции «правая кнопка мыши ® Add Files to Folder. ». Для использования какого-либо периферийного модуля необходимо раскомментировать его название в файле «stm8s_conf.h» (рис. 8);

    Создание нового проекта
    Рис. 8. Конфигурирование библиотеки периферии

    3) Вся периферия и функции работы с ней описаны в двух файлах: заголовочном (расширение .h) и исходном (расширение .с) с именем «stm8s_PeriphType». Данные файлы расположены в директориях «inc» и «src» по следующему пути «C:Program FilesSTMicroelectronicsst_toolsetLibrariesSTM8S_StdPeriph_Driver». При использовании любого периферийного модуля в вашем проекте необходимо добавить исходный файл в поддиректорию «Source FilesFWLib», а заголовочный – в «Include FilesFWLib» (рис. 8). Данные операции выполняются кликом правой кнопкой мыши на соответствующей папке: «Правая кнопка мыши ® Add Files to Folder. »

    После вышеперечисленных действий вы можете использовать функционал библиотеки периферии. В примере «discover» используется сенсорная кнопка, работа с которой реализована в специальной библиотеке. Для использования библиотеки ее необходимо сконфигурировать следующим образом:

    1) Сконфигурировать библиотеку в соответствии с количеством сенсорных кнопок (до 24), ползунков (до двух) и колец (до двух):

    • Скопировать файл «STM8_TSL_RC_Configuration_TOADAPT.h» из директории «C:Program FilesSTMicroelectronicsst_toolsetLibrariesSTM8_TouchSensing_Driverinc» в директорию проекта «C:Program FilesSTMicroelectronicsst_toolsetProject ew_projectinc» и переименовать данный файл в «STM8_TSL_RC_Configuration.h»;
    • Сконфигурировать файл «STM8_TSL_RC_Configuration.h» в соответствии с аппаратными особенностями проекта;
    • Добавить файл «STM8_TSL_RC_Configuration.h» в директорию «Include Files» проекта: «правая кнопка мыши®Add Files to Folder. »;
    • При использовании инструментария от Raisonance добавить файлы с расширением «.h» и «.c», исключая файл «STM8_TSL_RC_Configuration_TOADAPT.h» из сенсорной библиотеки C:Program FilesSTMicroelectronicsst_toolsetLibrariesSTM8_TouchSensing_Driver», соответственно, в директории «Include FilesTSLib» и «Source FilesTSLib» (рис.9). При использовании инструментария от Cosmic Software файл «STM8_TSL_RC_routines.asm» также не добавляется, вместо него необходимо сконфигурировать «Project® Settings® Linker», что будет описано ниже;
    Конфигурирование сенсорной библиотеки
    Рис. 9. Конфигурирование сенсорной библиотеки
    • Добавить строчку «#include » в основной файл проекта «main.c»;
    • Некоторые функции библиотеки должны быть расположены в памяти по специальным адресам при использовании инструментария Cosmic software (рис.10):
      • Выбираем «Project ® Settings ® Linker»;
      • На вкладке «Linker» в поле «Category» выбираем «Input»;
      • В поле «Vector File name» прописываем путь к файлу «stm8_interrupt_vector.c»;
      • В окне «Segment/Section name» добавляем «TSL_IO_ALCODE» в секции «Code,Constant» c опцией «-r2»;
      Конфигурирование сенсорной библиотеки для Cosmic software
      Рис. 10. Конфигурирование сенсорной библиотеки для Cosmic software
      • При использовании инструментария Raisonance в операциях с «Project® Settings® Linker» нет необходимости. Необходимо всего лишь добавить файл «STM8_TSL_RC_routines.asm» в директорию проекта «Source FilesFWLib».

      Общую настройку проекта с обеими библиотеками вы можете посмотреть на примере «discover» в загруженном пакете программного обеспечения.

      Проект «discover»

      Алгоритм работы программного обеспечения проекта следующий: программа ожидает срабатывания нажатия сенсора TS1 и меняет частоту мерцания светодиода LD1. Рассмотрим проект более подробно. Открываем среду разработки ST Visual Developer, затем «File ® Open Workspace. » и выбираем проект по следующему пути C:Program FilesSTMicroelectronicsst_toolsetProjectdiscoverSTVDRaisonance». Как вы можете заметить, у данного проекта структура фактически идентична шаблону проекта «project_template» и используются обе библиотеки – сенсорная библиотека и библиотека периферии. Рассмотрим более подробно основные моменты основного файла проекта «main.c».

      Программы для микроконтроллеров имеют похожие структуры, точкой входа программы является функция «main()». Для начала работы с микроконтроллером, в зависимости от задачи, его необходимо сконфигурировать – настроить тактовые частоты, периферийные модули, разрешить прерывания, если необходимо. После этого уже запускается т.н. диспетчер, обычно – это бесконечный цикл «while(1)<. >» или «for(;;)<. >», в контексте которого уже и выполняются функции основной программы – реакция на события, выполнение вычислений и т.д.

      В проекте из библиотеки стандартной периферии используются функции для настройки тактового сигнала, настройка работы с портами ввода/вывода. С помощью функции «CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1)» в качестве источника тактового сигнала выбирается внутренний генератор HSI, работающий на частоте 16 МГц, коэффициент деления равен 1, соответственно рабочая частота микроконтроллера равна 16 МГц. Для работы со светодиодом LD1 необходимо настроить соответствующую ему ножку ввода/вывода. Данная операция выполняется с помощью функции библиотеки «GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST)». По передаваемым параметрам функции видно, что используется ножка «0» порта «D» микроконтроллера, режим push – pull, режим быстрого переключения (до 10 МГц), и в данный момент на ее выходе – сигнал низкого уровня. Переключение состояния ножки осуществляется с помощью функции «GPIO_WriteReverse(GPIOD, GPIO_PIN_0)».

      Процесс работы с сенсорной библиотекой начинается с ее инициализации: «TSL_Init()» – инициализация памяти, функций и структур данных. Далее необходимо настроить библиотеку согласно аппаратным требованиям. В нашем случае библиотека настраивается под сенсорную кнопку TS1 в функции ExtraCode_Init(). После того, как все настроено, можно начинать работать с библиотекой, которая предоставляет API для работы с ней, нам в частности необходимо определять событие нажатия TS1. Данная операция осуществляется в функции «ExtraCode_StateMachine()», также здесь задается режим мерцания светодиода LD1. Для работоспособности сенсорной библиотеки необходимо включать в основной цикл программы (диспетчер) функцию «TSL_Action()», которая выполняет необходимые операции для обработки и определения событий сенсорных кнопок и других сенсорных объектов.

      Заключение

      В статье мы представили необходимую информацию для начала работы с микроконтроллерами STM8. В материале были рассмотрены лишь основные моменты, для более подробного и глубокого ознакомления читателю следует обращаться к справочным материалам, доступным на сайте.

Похожие публикации