Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 10:c73d30edad03, committed 2019-03-22
- Comitter:
- Pankaj2201
- Date:
- Fri Mar 22 14:53:12 2019 +0000
- Parent:
- 9:3211e88e30a5
- Commit message:
- Communication between two NUCLEO 144 using CAN bus;
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Feb 08 13:16:55 2019 +0000
+++ b/main.cpp Fri Mar 22 14:53:12 2019 +0000
@@ -16,16 +16,16 @@
*
*/
-//#define TARGET_STM32F103C8T6 1 // uncomment this line to use STM32F103C8T6 boards
+#define TARGET_NUCLEOF767ZI 1 // uncomment this line to use STM32F103C8T6 boards
#define BOARD1 1 // comment out this line when compiling for board #2
-#if defined(TARGET_STM32F103C8T6)
- #define LED_PIN PC_13
+#if defined(TARGET_NUCLEOF767ZI)
+ #define LED_PIN PB_7
const int OFF = 1;
const int ON = 0;
#else
- #define LED_PIN LED1
+ #define LED_PIN PB_7
const int OFF = 0;
const int ON = 1;
#endif
@@ -40,9 +40,10 @@
#include "mbed.h"
#include "CANMsg.h"
-
+#include "mbed_error.h"
+CircularBuffer<char, 1024> rxbuf; // PC receiving Buffer
Serial pc(USBTX, USBRX);
-CAN can(PB_8, PB_9); // CAN Rx pin name, CAN Tx pin name
+CAN can(PD_0, PD_1); // CAN Rx pin name, CAN Tx pin name
//CAN can(p30, p29); // CAN Rx pin name, CAN Tx pin name
CANMsg rxMsg;
CANMsg txMsg;
@@ -76,21 +77,29 @@
* @param
* @retval
*/
+
+
+
+
+
void onCanReceived(void)
{
can.read(rxMsg);
pc.printf("-------------------------------------\r\n");
pc.printf("CAN message received\r\n");
printMsg(rxMsg);
+
+ rxbuf.reset();
if (rxMsg.id == RX_ID) {
// extract data from the received CAN message
// in the same order as it was added on the transmitter side
rxMsg >> counter;
- rxMsg >> voltage;
+ rxMsg >> voltage;
pc.printf(" counter = %d\r\n", counter);
pc.printf(" voltage = %e V\r\n", voltage);
}
+
timer.start(); // to transmit next message in main
}
@@ -101,6 +110,9 @@
* @param
* @retval
*/
+
+
+
int main(void)
{
pc.baud(9600); // set serial speed
@@ -108,16 +120,17 @@
can.filter(RX_ID, 0xFFF, CANStandard, 0); // set filter #0 to accept only standard messages with ID == RX_ID
can.attach(onCanReceived); // attach ISR to handle received messages
+
#if defined(BOARD1)
led = ON; // turn the LED on
timer.start(); // start timer
- pc.printf("CAN_Hello board #1\r\n");
+ pc.printf("reset pressed from board #1\r\n");
#else
led = OFF; // turn LED off
- pc.printf("CAN_Hello board #2\r\n");
+ pc.printf("reset pressed from board #2\r\n");
#endif
while(1) {
- if(timer.read_ms() >= 2000) { // check for timeout
+ if(timer.read_ms() >= 3000) { // check for timeout
timer.stop(); // stop timer
timer.reset(); // reset timer
counter++; // increment counter
@@ -127,7 +140,9 @@
// append data (total data length must not exceed 8 bytes!)
txMsg << counter; // one byte
txMsg << voltage; // four bytes
-
+ if (counter==10){
+ break;
+ }
if(can.write(txMsg)) { // transmit message
led = OFF; // turn the LED off
pc.printf("-------------------------------------\r\n");
@@ -139,6 +154,8 @@
}
else
pc.printf("Transmission error\r\n");
+
+
}
}
}