Can Stable Einstein Version

Dependencies:   mbed-STM32F103C8T6 CANMsg

Files at this revision

API Documentation at this revision

Comitter:
sid26
Date:
Sat Dec 15 19:06:43 2018 +0000
Parent:
4:09d564da0e24
Commit message:
123

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-STM32F103C8T6.lib Show annotated file Show diff for this revision Revisions of this file
mbed-os.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show diff for this revision Revisions of this file
diff -r 09d564da0e24 -r 3a5281126310 main.cpp
--- a/main.cpp	Wed Apr 25 12:00:10 2018 +0000
+++ b/main.cpp	Sat Dec 15 19:06:43 2018 +0000
@@ -19,12 +19,12 @@
  *
  */
 
-//#define TARGET_STM32F103C8T6    1       // uncomment this line and import the mbed-STM32F103C8T6 library when using STM32F103C8T6 boards!
+#define TARGET_STM32F103C8T6    1       // uncomment this line and import the mbed-STM32F103C8T6 library when using STM32F103C8T6 boards!
 
-#define BOARD1                  1       // comment out this line when compiling for board #2
+//#define BOARD1                  1       // comment out this line when compiling for board #2
 
 #if defined(TARGET_STM32F103C8T6)
-#include "stm32f103c8t6.h"
+//#include "stm32f103c8t6.h"
 #define LED_PIN PC_13
 const int           OFF = 1;
 const int           ON = 0;
@@ -43,8 +43,14 @@
 #include "mbed.h"
 #include "CANMsg.h"
 
-Serial              pc(USBTX, USBRX);
-CAN                 can(PB_8, PB_9);  // CAN Rx pin name, CAN Tx pin name
+#define CAN_RF0R    (*((volatile unsigned long *)0x4000640C))
+#define CAN_RF1R    (*((volatile unsigned long *)0x40006410))
+#define CAN_IER     (*((volatile unsigned long *)0x40006414))
+
+
+Serial              pc(PA_9, PA_10);
+CAN                 can2(PA_11, PA_12);
+CAN                 can(PB_8, PB_9);    // CAN Rx pin name, CAN Tx pin name
 CANMsg              rxMsg;
 CANMsg              txMsg;
 DigitalOut          led(LED_PIN);
@@ -52,7 +58,7 @@
 uint8_t             counter = 0;
 AnalogIn            analogIn(A0);
 float               voltage;
-
+volatile bool got_message = false;
 /**
  * @brief   Prints CAN msg to PC's serial terminal
  * @note
@@ -70,6 +76,14 @@
     pc.printf("\r\n");
 }
 
+void RxIsr(){
+            CANMsg              temp;
+            led = ON;
+            can.read(temp);
+            got_message = true;
+            return;
+                }
+
 /**
  * @brief   Main
  * @note
@@ -79,19 +93,23 @@
 int main(void)
 {
 #if defined(TARGET_STM32F103C8T6)
-    confSysClock();         //Configure system clock (72MHz HSE clock, 48MHz USB clock)
+//    confSysClock();         //Configure system clock (72MHz HSE clock, 48MHz USB clock)
 #endif
     pc.baud(9600);          // set Serial speed
-    can.frequency(1000000); // set bit rate to 1Mbps
-#if defined(BOARD1)
+    can.frequency(5000000); // set bit rate to 1Mbps
+    can.mode(CAN::Normal);
+    can.attach(&RxIsr, CAN::RxIrq);
+#if defined(BOARD1) 
     led = ON;               // turn the LED on
-    timer.start();          // start timer
+    timer.start();          // start timert
     pc.printf("CAN_Hello board #1\r\n");
 #else
     led = OFF;      // turn LED off
     pc.printf("CAN_Hello board #2\r\n");
 #endif
-    while(1) {
+    
+while(1) {
+        pc.printf("%d\n",got_message);
         if(timer.read_ms() >= 1000) {    // check for timeout
             timer.stop();                // stop timer
             timer.reset();               // reset timer
@@ -111,20 +129,22 @@
             else
                 pc.printf("Transmission error\r\n");
         }
-
-        if(can.read(rxMsg)) {
-            led = ON;       // turn the LED on
+        
+        if(got_message){
+            got_message = false;
+            can.read(rxMsg);
             pc.printf("-------------------------------------\r\n");
             pc.printf("CAN message received\r\n");
             printMsg(rxMsg);
 
             // Filtering performed by software:
-            if(rxMsg.id == RX_ID) {
+            //if(rxMsg.id == RX_ID) {
                 rxMsg >> counter >> voltage;    // extract data from the received CAN message
                 pc.printf("  counter = %d\r\n", counter);
                 pc.printf("  voltage = %e V\r\n", voltage);
                 timer.start();                  // transmission lag
+//            }
             }
-        }
+
     }
 }
diff -r 09d564da0e24 -r 3a5281126310 mbed-STM32F103C8T6.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-STM32F103C8T6.lib	Sat Dec 15 19:06:43 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/hudakz/code/mbed-STM32F103C8T6/#727468adfd1d
diff -r 09d564da0e24 -r 3a5281126310 mbed-os.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-os.lib	Sat Dec 15 19:06:43 2018 +0000
@@ -0,0 +1,1 @@
+https://github.com/ARMmbed/mbed-os/#2fd0c5cfbd83fce62da6308f9d64c0ab64e1f0d6
diff -r 09d564da0e24 -r 3a5281126310 mbed.bld
--- a/mbed.bld	Wed Apr 25 12:00:10 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://os.mbed.com/users/mbed_official/code/mbed/builds/5aab5a7997ee
\ No newline at end of file