CANtest module (A base for more complex ones)

Dependencies:   mbed-STM32F103C8T6 mbed

Fork of CANtest by Melchior Pau

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "stm32f103c8t6.h"
00002 #include "mbed.h"
00003 #include "CAN.h"
00004 
00005 #define board_transmitter
00006 Serial pc(USBTX,USBRX,115200);
00007 Ticker ticker;
00008 DigitalOut led1(LED1);
00009 DigitalOut led2(LED2);
00010 #ifdef board_transmitter
00011 CAN transmitter_can(PB_8, PB_9);  // rd, td Transmitter
00012 #else
00013 CAN receiver_can(PB_8, PB_9);  // rd, td Transmitter
00014 #endif
00015 
00016 int counter = 0;
00017 char data[8];
00018 
00019 //***************void send is the data you are sending**************
00020 #ifdef board_transmitter
00021 void send() {
00022         data[0] = (char)(0xbf); // NMT Start RemoteNode
00023         data[1] = (char)(0x00); // Global
00024         data[2] = (char)(0x00);
00025         data[3] = (char)(0x00);
00026         data[4] = (char)(0x00);
00027         data[5] = (char)(0x00);
00028         data[6] = (char)(0x00);
00029         data[7] = (char)(0x00);
00030         if(transmitter_can.write(CANMessage(0000,data,2))) {
00031            pc.printf("Startup sent \n");
00032         }
00033 
00034 }
00035 #endif
00036 
00037 int main() {
00038 //----------------Initialization-----------------------
00039 #ifdef board_transmitter
00040     transmitter_can.frequency(500000);
00041 #else
00042     receiver_can.frequency(500000); //500kbit/s
00043 #endif
00044     //receiver_can.monitor(1); //Works without this, in my case.
00045 #ifdef board_transmitter
00046     ticker.attach(&send, 1); //Send every second
00047 #endif
00048     CANMessage msg;
00049 //-----------------------------------------------------
00050 
00051 //---------------The read out----------------------
00052     while(1) {
00053         
00054 #ifndef board_transmitter
00055         if(receiver_can.read(msg)) {
00056            pc.printf("Message read with ID: %d\n", msg.id);
00057            pc.printf("Data: %x", msg.data[0]);
00058            pc.printf(" %x", msg.data[1]);
00059            pc.printf(" %x", msg.data[2]);
00060            pc.printf(" %x", msg.data[3]);
00061            pc.printf(" %x", msg.data[4]);
00062            pc.printf(" %x", msg.data[5]);
00063            pc.printf(" %x", msg.data[6]);
00064            pc.printf(" %x\n", msg.data[7]);
00065            pc.printf("Length: %d", msg.len);
00066            pc.printf(", Type: %d", msg.type);
00067            pc.printf(", Format: %d\n\n", msg.format);
00068             led2 = !led2;  //Blink!
00069         }
00070 #endif
00071     }
00072 //----------------------------------------------------
00073 }
00074 //*********************************************************