20190816
Dependencies: LCD_DISCO_F429ZI TS_DISCO_F429ZI BSP_DISCO_F429ZI
TxRxService.h@0:81007dc65bac, 2019-08-16 (annotated)
- Committer:
- VASKO
- Date:
- Fri Aug 16 22:22:05 2019 +0000
- Revision:
- 0:81007dc65bac
20190816
Who changed what in which revision?
User | Revision | Line number | New 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 |