ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ β ΡΡΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ. ΠΠΎΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΠΌ, ΠΊΡΠΎ Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡ. β ΠΠ»Π°Π½ ΠΠΎΠΊΡ
Quantum Platform (QP) β ΡΡΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ
ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΠ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². QP ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΊ Π½Π° Β«ΠΏΠ»ΡΡΠ°Ρ
Β» (QP/C++), ΡΠ°ΠΊ ΠΈ Π½Π° Π‘ΠΈ (QP/C ΠΈ QP-nano), ΡΡΠΎ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΡΠΏΠ΅ΠΊΡΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡ ΠΈ ΡΠ΅Π»Π΅Π²ΡΡ
ΠΏΠ»Π°ΡΡΠΎΡΠΌ. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
QP ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π΄Π»Ρ RT(OS), Ρ
ΠΎΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΈ ΠΏΠΎΠ²Π΅ΡΡ
ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΡΠ°Π²ΠΎΡΠ»Π°Π²Π½ΠΎΠΉ ΠΠ‘.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° QP ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π°ΠΊΡΠΎΡΠΎΠ²) Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΡΠ΅Π»ΡΡΡΠ²Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ· ΡΠ΅Π±Ρ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡ. Π―Π΄ΡΠΎ QP, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ QV (Vanilla), Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π² ΡΠ²ΠΎΠ΅ΠΉ Π½ΠΈΡΠΈ QK. ΠΠΊΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ β Β«Π»Π΅Π½ΡΡΠΉΒ», ΠΎΠ½ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΠΊΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠΈΠ½ΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠ΅ Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° Π½ΠΈΡ
β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ΅Π³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΠΏΠΎΡΡ, ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ Π² Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ ΠΎΡΡΡΠ»Π°Π΅Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (ΡΠΈΠ³Π½Π°Π»ΠΎΠ²) Π΄ΡΡΠ³ΠΈΠΌ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ½ΠΎΠ²Π° ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ. ΠΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌ Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ (ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΊΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΄ΡΠ°) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π Π½ΠΈΠΊΡΠΎ ΠΈ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π»Π΅Π³ΠΊΠΎ :)
ΠΠΎΠ΄ Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±ΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΊΠ°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΡΠ½ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ² (Π΄Π°, Π² Π‘ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ), ΡΠ°ΠΊ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ UML Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ QM (QP Modeler) c ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π°. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡΡΡ Π°ΠΊΡΠ΅Π½Ρ Π½Π° Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡΠ°ΡΠΈΠ²ΡΡ
ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ. ΠΠ°ΡΠ½ΡΠΌ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ β ΠΌΠΈΠ³Π°ΡΡΠΈΡ
Π»Π°ΠΌΠΏΠΎΡΠ΅ΠΊ.
MSP430.js | ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ
ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½ΡΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ IDE Code Composer Studio (CCS), C++ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°ΠΌ ΡΠΆΠ΅ Π²ΡΡΡΠΎΠ΅Π½. ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°Π·Ρ Π²Π΅ΡΡ Π°ΡΡ
ΠΈΠ² Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ: File -> Import -> CCS Projects -> Select archive file. ΠΠ° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° ΡΡΠ΅Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ QM ΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ UML ΠΌΠΈΠ³Π°ΡΡΠΈΡ
Π»Π°ΠΌΠΏΠΎΡΠ΅ΠΊ (ΡΠ°ΠΉΠ» blink.qm Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ
). Π§Π°ΡΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π»Π°ΠΌΠΏΠΎΡΠ΅ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΠΈ ΠΏΡΠΈ BSP::TICKS_PER_SEC
ΡΡΠΎ ΠΎΠ΄Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠ»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°Π΄Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π΄Π»Ρ QM Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ $declare
ΠΈ $define
. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π΄Π°ΠΆΠ΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΈ Π±Π΅Π· ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ QP::QActive * const AO_BlinkyPtr
, ΠΎΠ½ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° BlinkyAO
β ΡΡΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ΄ΠΈΠΎΠΌΠ°.
blinky.h
#ifndef blinky_h
#define blinky_h
namespace blinky {
$declare(AOs::AO_BlinkyPtr)
}
// declare other elements...
#endif // project_h
blinky.cpp
#include "qpcpp.h"
#include "blinky.h"
#include "bsp.h"
namespace blinky {
enum {
TIMEOUT_SIG = QP::Q_USER_SIG,
};
$declare(AOs::BlinkyAO)
// Local objects -------------------------------------------------------------
static BlinkyAO __self_ao; // the single instance active object
// Global-scope objects ------------------------------------------------------
QP::QActive * const AO_BlinkyPtr = &__self_ao; // "opaque" AO pointer
$define(AOs::BlinkyAO)
}
// define other elements...
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ QEvent
ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠΈΠ³Π½Π°Π»Π° QSignal sig
ΠΈ ΠΏΠΎΠ»Ρ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ uint8_t dynamic_
, ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠ΄Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π΄Π»Ρ Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π½Π΅ Ρ Π½ΡΠ»Ρ Π° Ρ Q_USER_SIG
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² QP ΡΠΆΠ΅ Π΅ΡΡΡ ΡΠΈΠ³Π½Π°Π»Ρ, Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Q_EMPTY_SIG
, Q_ENTRY_SIG
, Q_INIT_SIG
, Q_EXIT_SIG
. ΠΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΆΠ΅Π»Π΅Π·ΠΊΠΎΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ bsp.cpp ΠΈ ΡΠ°ΠΌ ΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ (ΠΊΡΠ΄Π° ΠΆ Π±Π΅Π· Π½ΠΈΡ
ΡΠΎ) QP. ΠΡ Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ QP ΠΈ Π·Π°ΠΏΡΡΠΊ Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
main.cpp
#include "qpcpp.h"
#include "bsp.h"
#include "blinky.h"
int main() {
static QP::QEvt const *blinky_queueSto[10]; // Event queue storage
BSP::init(); // initialize the Board Support Package
QP::QF::init(); // initialize the framework and the underlying RT kernel
// publish-subscribe not used, no call to QF::psInit()
// dynamic event allocation not used, no call to QF::poolInit()
blinky::AO_BlinkyPtr->start(1U, // priority
blinky_queueSto, Q_DIM(blinky_queueSto), // event queue
(void *)0, 0U); // stack (unused)
return QP::QF::run(); // run the QF application
}
Π‘ ΠΌΠΈΠ³Π°ΡΡΠΈΠΌΠΈ Π»Π°ΠΌΠΏΠΎΡΠΊΠ°ΠΌΠΈ Π²ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅ΠΉ β ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ Π΄Π»Ρ ΡΠ°Π½Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ FreeRTOS. Π ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΠΈ Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠ° β Π»Π΅Π²ΡΠ΅ Π»Π°ΠΌΠΏΠΎΡΠΊΠΈ, ΠΏΡΠ°Π²ΡΠ΅ Π»Π°ΠΌΠΏΠΎΡΠΊΠΈ ΠΈ Π΄ΠΈΡΠΏΠ»Π΅ΠΉ. ΠΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΄ΡΠΎ QP ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π·Π°Π±ΡΡΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° Ρ ΠΏΠΎΡΡΠ°ΠΌ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΡΡ
ΠΈ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΎΠ½ΠΈ Π±ΡΠ²Π°ΡΡ. ΠΡΠ°ΠΊ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ BTNS_LEFT_SIG
ΠΈ BTNS_RIGHT_SIG
. Π‘ΠΎΠ±ΡΡΠΈΡ Π² QP Π±ΡΠ²Π°ΡΡ Π΄Π²ΡΡ
Π²ΠΈΠ΄ΠΎΠ²:
-
ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ β Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (immutable) ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±Π° ΡΠΎΠ±ΡΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅, ΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
-
Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ β ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ Q_NEW
Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π²ΡΠ΅ΠΌΠΈ Π°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ. ΠΠ»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° QP::QF::poolInit
. Π’Π°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ BtnEvt *btnEvt = Q_NEW(BtnEvt, BTNS_LEFT_SIG); btnEvt->value = 42;
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° QP ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:
-
Π½Π°ΠΏΡΡΠΌΡΡ β ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΡΠ²Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅Π±Π΅ me->POST(&UPDATE_EVENT, me)
-
ΠΌΡΠ»ΡΡΠΈΠΊΠ°ΡΡ β ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΡΡ
, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ / ΠΎΡΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ
Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠΈΠΉ. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Ρ
ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠΠ»Ρ ΠΌΡΠ»ΡΡΠΈΠΊΠ°ΡΡΠ° ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° QP::QF::psInit
. Π’Π°ΠΊ ΠΎΡΡΡΠ»Π°Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ QP::QF::PUBLISH(btnEvt, (void *)0);
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΠΏΡΠ°Π²ΡΠΌΠΈ Π»Π°ΠΌΠΏΠΎΡΠΊΠ°ΠΌΠΈ. Π£ Π½Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ ΡΠ»ΡΡΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ²Π΅Ρ Π΄Π»Ρ ΠΏΡΠ°Π²ΡΡ
Π»Π°ΠΌΠΏΠΎΡΠ΅ΠΊ. Π‘ΠΎΠ±ΡΡΠΈΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΠΎΠΉ Π½Π° ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°.
ΠΠ΄Π΅ΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ Π΄Π°Π½Π½ΡΡ
Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ, ΠΎΡΡΡΠ»Π°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅Π±Π΅. ΠΠ»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΡΠΎΠ±ΡΡΠΈΠ΅ DISPLAY_UPDATE ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ static QP::QEvt const UPDATE_EVENT = { DISPLAY_UPDATE_SIG, 0U, 0U };
Ρ.ΠΊ. Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² Π½ΡΠΌ Π½Π΅Ρ. Π ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠΊΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ Π»Π΅Π²ΡΡ
Π»Π°ΠΌΠΏΠΎΡΠ΅ΠΊ ΡΠ°ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ. Π’ΡΡ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ. ΠΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ Π΄ΡΡΠ³ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡ. Π ΠΊΠ°ΠΊΠΎΠΌ Π±Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π½Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ Π»Π΅Π²ΡΡ
Π»Π°ΠΌΠΏΠΎΡΠ΅ΠΊ, ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° ΡΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΎΡΠΊΠ΅, ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°Ρ. ΠΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΠΏΡΠΎΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΡΠ΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΡ Π² Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ
ΡΠΎΡΡΠΎΡΠ½ΠΈΡΡ
. ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΏΡΠΈΡΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ (Transition to History), Π»Π°ΠΌΠΏΠΎΡΠΊΠΈ ΠΏΠΎΠΌΠ½ΡΡ ΡΠ²ΠΎΠΉ ΡΠ²Π΅Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΌΠΈΠ³Π°Π½ΠΈΡ.
MSP430.js | ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ
Π QP ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΡΡΡ ΡΠ΅ΡΡΡΠ·Π½Π°Ρ ΠΊΠ½ΠΈΠ³Π° Β«Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded SystemsΒ» ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Quantum Leaps. Π Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π³Π»Π°Π²Π° Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ
Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠ². ΠΠ° ΡΠ°ΠΉΡΠ΅ Quantum Leaps ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΡΠ°ΡΡΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ QP ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β ΡΠ½ΠΈΡ ΡΠ΅ΡΡΡ QUTest, QSpy.
ΠΠ°Π»Π΅Π΅ ΠΈΠ³ΡΠ° Β«ΠΠΌΠ΅ΠΉΠΊΠ°Β» Π½Π° QP/C++.
There are comments.