CAN a enviar_TLMoto

Dependencies:   CANnucleo mbed

Fork of CANnucleo_Hello by Zoltan Hudak

Revision:
6:7ff95ce72f6d
Parent:
5:c6503b7ae971
Child:
7:2dce8ed51091
--- a/main.cpp	Fri Oct 23 19:54:49 2015 +0000
+++ b/main.cpp	Sat Dec 05 10:20:00 2015 +0000
@@ -1,30 +1,29 @@
 /*
  * An example showing how to use the CANnucleo library:
  *
- * Two NUCLEO boards are connected to the same CAN bus via CAN transceivers (MCP2551 or TJA1040, or etc.).
- * Transceivers are not part of the NUCLEO boards, therefore must be added by you.
- * Remember also that CAN bus must be terminated with 120 Ohm resitors on both ends.
- * See <https://developer.mbed.org/users/WiredHome/notebook/can---getting-started/>
- * The same source code is used for both NUCLEO boards, but:
+ * Two affordable (less than $4 on ebay) STM32F103C8T6 boards (20kB SRAM, 64kB Flash), 
+ * compatible with the NUCLEO-F103RB platform (20kB SRAM, 128kB Flash), 
+ * are connected to the same CAN bus via transceivers (MCP2551 or TJA1040, or etc.). 
+ * CAN transceivers are not part of NUCLEO boards, therefore must be added by you. 
+ * Remember also that CAN bus (even a short one) must be terminated with 120 Ohm resitors at both ends.
+ *
+ * For more details see the wiki page <https://developer.mbed.org/users/hudakz/code/CAN_Nucleo_Hello/>
+ *
+ * NOTE: If you'd like to use the official NUCLEO-F103RB boards
+ *       comment out the line #define TARGET_STM32F103C8T6  1
+ *
+ * The same code is used for both NUCLEO boards, but:
  *      For board #1 compile the example without any change.
  *      For board #2 comment out the line #define BOARD1 1 before compiling 
  *
- * Once compiled, download the binaries to the boards. 
- * To start ping/ponging messages reset both boards at the same time.
+ * Once the binaries have been downloaded to the boards reset board #1.
  *
- * Note:
- *  To simplify adding/getting data to/from a CAN message
- *  inserter "<<" and extractor ">>" operators have been defined.
- *  Please be aware that CAN message maximum data length is limited to eight bytes.
- *  To make sure this limitation is not violated I recommend to first compile
- *  your application with DEBUG enabled in "CAN.h" file.
- *  Then run it and check for error messages.
  */ 
 
 #include "mbed.h"
 #include "CAN.h"
 
-#define BOARD1    1     // please comment out this line when compiling for board #2
+#define BOARD1    1                 // comment out this line when compiling for board #2
 
 #if defined(BOARD1)
     #define RX_ID   0x100
@@ -34,7 +33,15 @@
     #define TX_ID   0x100
 #endif
 
-DigitalOut      led(LED1);
+// See wiki page <https://developer.mbed.org/users/hudakz/code/CAN_Nucleo_Hello/>
+#define TARGET_STM32F103C8T6  1     // comment out this line if you'd like to use the official NUCLEO-F103RB boards
+                                    
+#if defined(TARGET_STM32F103C8T6)  
+    DigitalOut  led(PC_13);
+#else
+    DigitalOut  led(LED1);
+#endif
+
 int             ledReceived;
 Timer           timer;
 CAN             can(PA_11, PA_12);  // CAN Rx pin name, CAN Tx pin name, Automatic recovery from bus-off state enabled by default
@@ -63,12 +70,20 @@
 int main() {
     can.frequency(1000000);                     // set bit rate to 1Mbps
     can.attach(&onMsgReceived, CAN::RxIrq);     // attach 'CAN receive-complete' interrupt handler
-    timer.reset();
+    
 #if defined(BOARD1)
-    led = 1;
+    #if defined(TARGET_STM32F103C8T6)
+        led = 0;    // turn LED on
+    #else
+        led = 1;    // turn LED on
+    #endif
     timer.start();
 #else
-    led = 0;
+    #if defined(TARGET_STM32F103C8T6)
+        led = 1;    // turn LED off
+    #else
+        led = 0;    // turn LED off
+    #endif
 #endif
 
     while(1) {
@@ -82,7 +97,12 @@
             txMsg << led.read();                // append second data item (make sure that CAN message total data lenght <= 8 bytes!)
             can.write(txMsg);                   // transmit message
             printf("CAN message sent\r\n");
-            led = 0;                            // turn off LED
+            
+            #if defined(TARGET_STM32F103C8T6)
+                led = 1;                        // turn LED off
+            #else
+                led = 0;                        // turn LED off
+            #endif
         }
         if(msgAvailable) {
             msgAvailable = false;               // reset flag for next use
@@ -106,5 +126,3 @@
         }
     }
 }
-
-