Can Stable Einstein Version
Dependencies: mbed-STM32F103C8T6 CANMsg
Revision 5:3a5281126310, committed 2018-12-15
- Comitter:
- sid26
- Date:
- Sat Dec 15 19:06:43 2018 +0000
- Parent:
- 4:09d564da0e24
- Commit message:
- 123
Changed in this revision
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