
Съдържание:
- Консумативи
- Стъпка 1: Инсталиране на инструментите на YAKINDU Statechart като приставка за Code Composer Studio
- Стъпка 2: Първи стъпки с държавни машини в Code Composer Studio
- Стъпка 3: Създайте Blinky State Machine
- Стъпка 4: Генерирайте State Machine C код
- Стъпка 5: Извикване на държавната машина от вашия код
- Стъпка 6: Стартирайте проекта
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36


Ще ви покажа как да програмирате MSP430G2 Launchpad с конечни машини (FSM) с помощта на инструментите за диаграми на състоянието на YAKINDU директно в Texas Instruments Code Composer Studio.
Този урок съдържа шест стъпки:
- Инсталиране на YAKINDU Statechart Tools като приставка за Code Composer Studio
- Първи стъпки с State Machines в Code Composer Studio
- Създайте Blinky State Machine
- Генерирайте кода на State Machine C
- Обаждане на State Machine от вашия код
- Стартирайте проекта!
Този проект може да се използва като план за всеки MPS430 или MSP432!
Консумативи
Софтуер:
- Инструменти за диаграми на състоянието на YAKINDU
- Code Composer Studio (CCS) Интегрирана среда за разработка (IDE)
Хардуер:
MSP430G2 комплект за разработка на LaunchPad
Стъпка 1: Инсталиране на инструментите на YAKINDU Statechart като приставка за Code Composer Studio



Първо, трябва да инсталирате Code Composer Studio на TI. Веднъж успешно тествах настройката с CCS версия 9.2 и по -стара. Тук можете да намерите връзка за изтегляне:
Изтеглете CCS
Кликнете за изтегляне и се уверете, че сте избрали поне MSP430 MCU с ултра ниска мощност, докато инсталирате. Междувременно можете да вземете сайта за актуализация за YAKINDU Statechart Tools. Отидете на:
Изтеглете инструменти за диаграми на състоянието на YAKINDU
На този сайт кликнете върху Изтеглете сега и следвайте инструкциите. Както можете да видите на снимката: Той е безплатен за некомерсиална употреба. След регистрацията ще получите преглед на опциите за изтегляне. Щракнете върху СТАНДАРТЕН ИЗТЕГЛЯНЕ НА САЙТ и кликнете върху ИНСТАЛИРАНЕ ОТ АКТУАЛИЗИРАНЕ НА САЙТА. Там ще получите връзка под Стабилни версии. Вземете тази връзка и я запазете или поставете в клипборда.
Инсталирането на YAKINDU Statechart Tools в Code Composer Studio може да бъде малко сложно, в зависимост от версията на Code Composer Studio, която използвате. Може би тези стъпки са остарели междувременно - обаче: не се колебайте да ме попитате в коментарите, ако имате нужда от помощ.
Това са моите стъпки:
След като успешно инсталирате CCS във вашата система, отворете раздела Помощ и щракнете върху Инсталиране на нов софтуер … В този съветник добавете следния сайт за актуализация чрез бутона Добавяне …:
download.eclipse.org/releases/2018-09/
Не добавяйте нищо, просто трябва да се реши. Можете да го видите на снимката.
След това повторете стъпките и кликнете върху бутона Добавяне … Вмъкнете сайта за актуализиране на инструментите за държавни диаграми на YAKINDU, който се надяваме да сте запазили. След това поставете отметка в квадратчето YAKINDU License Management и щракнете върху напред. Следвайте инструкциите. Вашата IDE може да се рестартира веднъж.
И накрая, можете да инсталирате инструментите на YAKINDU Statechart. Повторете последните стъпки, но този път изберете YAKINDU Statechart Tools Standard Edition. Още веднъж следвайте инструкциите. След рестартиране успешно сте инсталирали YAKINDU Statechart Tools.
Стъпка 2: Първи стъпки с държавни машини в Code Composer Studio


За да използвате машините на състоянието, продължете нормално и създайте нов CCS проект. Отворете раздела Файл, отворете Ново и щракнете върху CCS Project. Определете име на проект, изберете вашия микроконтролер и създайте празен проект, който съдържа празен файл main.c. Използвах MSP430G2553.
Сега можете да започнете работа с държавни машини!
Щракнете с десния бутон върху проекта, отворете New и изберете Statechart Model. Ще се отвори съветник, в който можете да изберете вашия проект и да дадете име на вашата диаграма на състоянието. Например, наречете го blinkyStateMachine.sct.
Моделът Statechart ще се появи в папката на проекта след щракване върху Finish. Щракнете върху Да, ако бъдете помолени да промените перспективата.
Стъпка 3: Създайте Blinky State Machine

Сега можете да започнете да създавате диаграма на състоянието!
От лявата страна ще намерите така наречения раздел за дефиниция. Там можете да добавите текстови елементи към модела, например операции, които могат да бъдат извикани в машината на състоянието.
Изтрийте всичко от него и просто добавете тези три дефиниции на операции:
вътрешен:
операция init () операция redOn () операция redOff ()
След това преминете към модела на диаграмата на състоянията и добавете три състояния:
- Инициализация
- червен светодиод свети
- червеният светодиод е изключен
Свържете състоянията, както е показано на снимката, и добавете преходите и действията за въвеждане. Можете да ги намерите отново на включената снимка.
Стъпка 4: Генерирайте State Machine C код

Сега е време да генерираме C-кода. За да направите това, трябва да се добави модел на генератор. Щракнете с десния бутон върху проекта още веднъж и отворете New и щракнете върху Model Generator Code. Изберете име за sgen-файла. Добра практика е да останете с името на държавната машина. Наречете го blinkyStateMachine.sgen и щракнете върху Напред. Изберете желания State Machine, като щракнете върху квадратчето за отметка. Уверете се, че сте избрали YAKINDU SCT C Code Generator (тъй като искаме да генерираме C-Code) и щракнете върху Finish.
Обикновено C-кодът ще бъде генериран автоматично, но ако не, можете да щракнете с десния бутон върху sgen -файла и да кликнете върху Generate Code Artefacts, за да го направите. Папките src и src-gen трябва да се появят във вашия проект. Те включват генерирания C-код, който автоматично ще се актуализира, когато редактирате и запишете диаграмата на състоянието.
Тъй като тази диаграма на състоянието използва събития, базирани на времето, трябва да се внедри услуга за таймер. За да подготвите това, имате нужда от тези два файла: sc_timer_service.c и sc_timer_service.h Можете да ги получите от GitHub или да ги изтеглите тук. Трябва да ги добавите в папката src.
Стъпка 5: Извикване на държавната машина от вашия код
И накрая, машината на състоянието може да се използва във вашата основна функция!
Първо, трябва да включите държавната машина и услугата таймер. След това машината на състоянието, услугата таймер и необходимите функции за услугата таймер трябва да бъдат декларирани и дефинирани. Освен това трябва да се изпълнят дефинираните операции, които включват и изключват червения светодиод.
#включва
#include "src-gen/BlinkyStateMachine.h" #include "src/sc_timer_service.h" BlinkyStateMachine мигащ; #define MAX_TIMERS 4 статични sc_timer_t таймера [MAX_TIMERS]; статична sc_timer_service_t timer_service; //! реализация на обратно извикване за настройка на времеви събития extern void blinkyStateMachine_setTimer (BlinkyStateMachine* дръжка, const sc_eventid evid, const sc_integer time_ms, const sc_boolean periodic) {sc_timer_start (& timer_service, handle, evid, time_ms, periodic); } //! реализация на обратно повикване за отмяна на събития във времето. extern void blinkyStateMachine_unsetTimer (BlinkyStateMachine* дръжка, const sc_eventid evid) {sc_timer_cancel (& timer_service, evid); } //! дефиниране на операции extern void blinkyStateMachineInternal_init (const BlinkyStateMachine* дръжка) {WDTCTL = WDT_MDLY_32; IE1 | = WDTIE; P1DIR | = BIT0; } extern void blinkyStateMachineInternal_redOn (const BlinkyStateMachine* дръжка) {P1OUT | = BIT0; } extern void blinkyStateMachineInternal_redOff (const BlinkyStateMachine* дръжка) {P1OUT & = ~ BIT0; }
Основната функция се състои от две части:
Инициализацията и функцията за въвеждане на машината на състоянието и инициализацията на таймера.
Втората част е безкраен цикъл - цикъл while (1). В този цикъл се извиква функцията цикъл на изпълнение на машината на състоянието. След това MSP430 ще бъде настроен в режим на ниска мощност 0 и битът за активиране на общото прекъсване ще бъде зададен. Сега микроконтролерът спи и чака прекъсване. След прекъсването на WDT таймерът ще продължи. Това означава, че всеки таймер се актуализира и изминалото време се увеличава с 32 - времето в милисекунди, което се извършва след всяко прекъсване на WDT.
void main (void) {WDTCTL = WDTPW | WDTHOLD; // Спиране на таймера за наблюдение
// Таймер за стартиране и машина за състояния sc_timer_service_init (& timer_service, timers, MAX_TIMERS, (sc_raise_time_event_fp) & blinkyStateMachine_raiseTimeEvent); blinkyStateMachine_init (& blinky); blinkyStateMachine_enter (& blinky);
докато (1)
{// извиквайте машината на състоянието на всеки 32 ms blinkyStateMachine_runCycle (& blinky); _bis_SR_register (LPM0_bits + GIE); sc_timer_service_proceed (& timer_service, 32); }}
// WDT ISR
#pragma vector = WDT_VECTOR _прекъсване на празнотата watchdog_timer (void) {_bic_SR_register_on_exit (LPM0_bits + GIE); }
Стъпка 6: Стартирайте проекта
Това е - Сега можете да изградите и качите програмата на вашия MSP430!
Надяваме се, че този урок ви помогна успешно да създадете проект за вашия MSP430. Сега е време да реализирате собствените си идеи!
За генериране на код, инструментите за диаграми на състоянието на YAKINDU са необходими като плъгин във вашето Studio Composer Studio.
Можете да получите сайта за актуализация тук! <
Той започва с 30 -дневна пробна версия. След това можете да получите безплатен лиценз за некомерсиална употреба!
Препоръчано:
Система за опростено състояние и резервация на Kicker със слаба интеграция: 12 стъпки (със снимки)

Simple Kicker Status and Reserve System with Slack Integration: Във фирма, в която работя, има маса за кикър. Компанията заема много етажи и за някои от служителите са необходими до 3 минути, за да стигнат до масата и … да осъзнаят, че масата вече е заета. Затова възникна идея за изграждане на ки
Самообучаващ се робот от лабиринт-раци ПРОТОТИП 1 СЪСТОЯНИЕ НЕПЪЛНО: 11 стъпки

Самообучаващ се робот Maze Crab Robot PROTOTYPE 1 СЪСТОЯНИЕ НЕПЪЛНО: ОТКАЗ ОТ ОТГОВОРНОСТ !!: Здравейте, извинявам се за лошите снимки, по-късно ще добавя още инструкции и диаграми (и по-конкретни подробности. Не документирах процеса (вместо просто направих видео с интервал от време). Също така тази инструкция е непълна, както направих аз
Цифров часовник на Arduino с използване на машина с крайно състояние: 6 стъпки

Цифров часовник на Arduino с използване на машина с крайни състояния: Здравейте, ще ви покажа как може да се създаде цифров часовник с инструментите за диаграми на състоянието на YAKINDU и да работи на Arduino, който използва щит за LCD клавиатура. Оригиналният модел на цифровия часовникът е взет от Дейвид Харел. Той публикува статия за
HX1 -DM - Upcycled Arduino DUE Powered DIY барабанна машина (направена с мъртва машина MK2): 4 стъпки

HX1 -DM - Upcycled Arduino DUE Powered DIY Drum Machine (направен с Dead Maschine MK2): Спецификацията. Хибриден Midi контролер / барабанна машина: Arduino DUE захранван! 16 подложки за чувствителност на скоростта с много ниска латентност 1 > ms 8 копчета, които потребителят може да назначи за всяка Midi #CC команда 16ch Вграден секвенсор (не е необходим компютър !!) MIDI вход/изход/чрез функция
Състояние на батерията DF65: 6 стъпки

DF65 Състояние на батерията: Ел проблем - ПроблемътEl DragonForce 65 е без веле RC que protege la electrónica del agua, de un modo que hace que sea muy poco acseble. En estas circunstancias, es muy trabajoso el acceder al pack de baterías para medir el voltaje y así comp