@@ -207,7 +207,7 @@ int can_frequency(can_t *obj, int f)
207
207
208
208
int can_write (can_t * obj , CAN_Message msg , int cc )
209
209
{
210
- uint32_t transmitmailbox = 5 ;
210
+ uint32_t transmitmailbox = CAN_TXSTATUS_NOMAILBOX ;
211
211
CAN_TypeDef * can = (CAN_TypeDef * )(obj -> can );
212
212
213
213
/* Select one empty transmit mailbox */
@@ -218,33 +218,31 @@ int can_write(can_t *obj, CAN_Message msg, int cc)
218
218
} else if ((can -> TSR & CAN_TSR_TME2 ) == CAN_TSR_TME2 ) {
219
219
transmitmailbox = 2 ;
220
220
} else {
221
- transmitmailbox = CAN_TXSTATUS_NOMAILBOX ;
221
+ return 0 ;
222
222
}
223
223
224
- if (transmitmailbox != CAN_TXSTATUS_NOMAILBOX ) {
225
- can -> sTxMailBox [transmitmailbox ].TIR &= CAN_TI0R_TXRQ ;
226
- if (!(msg .format )) {
227
- can -> sTxMailBox [transmitmailbox ].TIR |= ((msg .id << 21 ) | msg .type );
228
- } else {
229
- can -> sTxMailBox [transmitmailbox ].TIR |= ((msg .id << 3 ) | CAN_ID_EXT | msg .type );
230
- }
231
-
232
- /* Set up the DLC */
233
- can -> sTxMailBox [transmitmailbox ].TDTR &= (uint32_t )0xFFFFFFF0 ;
234
- can -> sTxMailBox [transmitmailbox ].TDTR |= (msg .len & (uint8_t )0x0000000F );
235
-
236
- /* Set up the data field */
237
- can -> sTxMailBox [transmitmailbox ].TDLR = (((uint32_t )msg .data [3 ] << 24 ) |
238
- ((uint32_t )msg .data [2 ] << 16 ) |
239
- ((uint32_t )msg .data [1 ] << 8 ) |
240
- ((uint32_t )msg .data [0 ]));
241
- can -> sTxMailBox [transmitmailbox ].TDHR = (((uint32_t )msg .data [7 ] << 24 ) |
242
- ((uint32_t )msg .data [6 ] << 16 ) |
243
- ((uint32_t )msg .data [5 ] << 8 ) |
224
+ can -> sTxMailBox [transmitmailbox ].TIR &= CAN_TI0R_TXRQ ;
225
+ if (!(msg .format )) {
226
+ can -> sTxMailBox [transmitmailbox ].TIR |= ((msg .id << 21 ) | msg .type );
227
+ } else {
228
+ can -> sTxMailBox [transmitmailbox ].TIR |= ((msg .id << 3 ) | CAN_ID_EXT | msg .type );
229
+ }
230
+
231
+ /* Set up the DLC */
232
+ can -> sTxMailBox [transmitmailbox ].TDTR &= (uint32_t )0xFFFFFFF0 ;
233
+ can -> sTxMailBox [transmitmailbox ].TDTR |= (msg .len & (uint8_t )0x0000000F );
234
+
235
+ /* Set up the data field */
236
+ can -> sTxMailBox [transmitmailbox ].TDLR = (((uint32_t )msg .data [3 ] << 24 ) |
237
+ ((uint32_t )msg .data [2 ] << 16 ) |
238
+ ((uint32_t )msg .data [1 ] << 8 ) |
239
+ ((uint32_t )msg .data [0 ]));
240
+ can -> sTxMailBox [transmitmailbox ].TDHR = (((uint32_t )msg .data [7 ] << 24 ) |
241
+ ((uint32_t )msg .data [6 ] << 16 ) |
242
+ ((uint32_t )msg .data [5 ] << 8 ) |
244
243
((uint32_t )msg .data [4 ]));
245
- /* Request transmission */
246
- can -> sTxMailBox [transmitmailbox ].TIR |= CAN_TI0R_TXRQ ;
247
- }
244
+ /* Request transmission */
245
+ can -> sTxMailBox [transmitmailbox ].TIR |= CAN_TI0R_TXRQ ;
248
246
249
247
return 1 ;
250
248
}
0 commit comments