20190816

Dependencies:   LCD_DISCO_F429ZI TS_DISCO_F429ZI BSP_DISCO_F429ZI

Committer:
VASKO
Date:
Fri Aug 16 22:22:05 2019 +0000
Revision:
0:81007dc65bac
20190816

Who changed what in which revision?

UserRevisionLine numberNew contents of line
VASKO 0:81007dc65bac 1
VASKO 0:81007dc65bac 2 #ifndef ParsLength
VASKO 0:81007dc65bac 3 #define ParsLength 4
VASKO 0:81007dc65bac 4 #endif
VASKO 0:81007dc65bac 5 #if ParsLength>16
VASKO 0:81007dc65bac 6 #error The length of the parameters seems to be too long. Maybe You should use a different Protocol.
VASKO 0:81007dc65bac 7 #elif ParsLength<2
VASKO 0:81007dc65bac 8 #error The length of the parameters seems to be meaningless. Maybe You should use a different Protocol.
VASKO 0:81007dc65bac 9 #endif
VASKO 0:81007dc65bac 10
VASKO 0:81007dc65bac 11 #ifndef UsedSerialClass
VASKO 0:81007dc65bac 12 #define UsedSerialClass RawSerial
VASKO 0:81007dc65bac 13 #endif
VASKO 0:81007dc65bac 14
VASKO 0:81007dc65bac 15 #define HeaderByte 0x00
VASKO 0:81007dc65bac 16 #define HeaderLength (ParsLength+1)
VASKO 0:81007dc65bac 17
VASKO 0:81007dc65bac 18 // ++++++++ Назначение параметров используемого U(S)ART по умолчанию
VASKO 0:81007dc65bac 19 // У F031K6 U(S)ART один, поэтому
VASKO 0:81007dc65bac 20 // для F031K6 и для всех неопробованных плат назначается
VASKO 0:81007dc65bac 21 // U(S)ART по умолчанию (USBTX,USBRX).
VASKO 0:81007dc65bac 22 #ifndef WorkTx
VASKO 0:81007dc65bac 23 #ifdef TARGET_NUCLEO_L432KC
VASKO 0:81007dc65bac 24 #define WorkTx PA_9 // USART1
VASKO 0:81007dc65bac 25 #elif defined TARGET_NUCLEO_F072RB
VASKO 0:81007dc65bac 26 #define WorkTx PA_9 // USART1
VASKO 0:81007dc65bac 27 #elif defined TARGET_DISCO_F429ZI
VASKO 0:81007dc65bac 28 #define WorkTx PG_14 // USART6; USART1(PA_9,PA_10) используется для терминала
VASKO 0:81007dc65bac 29 #elif defined TARGET_NUCLEO_F031K6
VASKO 0:81007dc65bac 30 #define WorkTx USBTX
VASKO 0:81007dc65bac 31 #else
VASKO 0:81007dc65bac 32 #define WorkTx USBTX
VASKO 0:81007dc65bac 33 #endif
VASKO 0:81007dc65bac 34 #endif
VASKO 0:81007dc65bac 35 #ifndef WorkRx
VASKO 0:81007dc65bac 36 #ifdef TARGET_NUCLEO_L432KC
VASKO 0:81007dc65bac 37 #define WorkRx PA_10 // USART1
VASKO 0:81007dc65bac 38 #elif defined TARGET_NUCLEO_F072RB
VASKO 0:81007dc65bac 39 #define WorkRx PA_10 // USART1
VASKO 0:81007dc65bac 40 #elif defined TARGET_DISCO_F429ZI
VASKO 0:81007dc65bac 41 #define WorkRx PG_9 // USART6; USART1(PA_9,PA_10) используется для терминала
VASKO 0:81007dc65bac 42 #elif defined TARGET_NUCLEO_F031K6
VASKO 0:81007dc65bac 43 #define WorkRx USBRX
VASKO 0:81007dc65bac 44 #else
VASKO 0:81007dc65bac 45 #define WorkRx USBRX
VASKO 0:81007dc65bac 46 #endif
VASKO 0:81007dc65bac 47 #endif
VASKO 0:81007dc65bac 48 // Назначение выводов используемого U(S)ART по умолчанию --------
VASKO 0:81007dc65bac 49
VASKO 0:81007dc65bac 50
VASKO 0:81007dc65bac 51 #pragma pack(push, 1)//https://os.mbed.com/forum/bugs-suggestions/topic/4264/ проблема выравнивания данных
VASKO 0:81007dc65bac 52 typedef union {
VASKO 0:81007dc65bac 53 uint8_t ui8[ParsLength];
VASKO 0:81007dc65bac 54 int8_t i8[ParsLength];
VASKO 0:81007dc65bac 55 uint16_t ui16[ParsLength/2];
VASKO 0:81007dc65bac 56 int16_t i16[ParsLength/2];
VASKO 0:81007dc65bac 57 #if ParsLength>=4
VASKO 0:81007dc65bac 58 uint32_t ui32[ParsLength/4];
VASKO 0:81007dc65bac 59 int32_t i32[ParsLength/4];
VASKO 0:81007dc65bac 60 float f[ParsLength/4];
VASKO 0:81007dc65bac 61 #endif
VASKO 0:81007dc65bac 62 } ParsType;
VASKO 0:81007dc65bac 63
VASKO 0:81007dc65bac 64 typedef struct {
VASKO 0:81007dc65bac 65 uint8_t cmd;
VASKO 0:81007dc65bac 66 ParsType pars;
VASKO 0:81007dc65bac 67 uint8_t cs;
VASKO 0:81007dc65bac 68 } MsgType;
VASKO 0:81007dc65bac 69 #pragma pack(pop)
VASKO 0:81007dc65bac 70
VASKO 0:81007dc65bac 71 #define ArrTxSize (HeaderLength + sizeof(MsgType))
VASKO 0:81007dc65bac 72 #define ArrRxSize (HeaderLength + sizeof(MsgType))
VASKO 0:81007dc65bac 73
VASKO 0:81007dc65bac 74 enum TxRxStates {
VASKO 0:81007dc65bac 75 TxOK,
VASKO 0:81007dc65bac 76 TxBuffBusy,
VASKO 0:81007dc65bac 77 RxBuffEmpty,
VASKO 0:81007dc65bac 78 RxRcvd,
VASKO 0:81007dc65bac 79 RxCS_Err,
VASKO 0:81007dc65bac 80 Undefined
VASKO 0:81007dc65bac 81 };
VASKO 0:81007dc65bac 82
VASKO 0:81007dc65bac 83 #define ArrTxInitializer {HeaderByte,HeaderByte,HeaderByte,HeaderByte,HeaderByte}
VASKO 0:81007dc65bac 84
VASKO 0:81007dc65bac 85 extern void TxRxServiceInit();
VASKO 0:81007dc65bac 86 extern TxRxStates SendMsg(uint8_t *parr);
VASKO 0:81007dc65bac 87 extern TxRxStates GetMsg(uint8_t *parr);
VASKO 0:81007dc65bac 88