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.
Diff: main.cpp
- Revision:
- 0:ddcef4072662
- Child:
- 1:265dc028a37d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Jun 17 10:27:49 2019 +0000
@@ -0,0 +1,85 @@
+#include "mbed.h"
+
+
+#define can_len 8
+
+Serial pc(USBTX, USBRX, 115200); // tx, rx for Tera Term output
+
+DigitalOut myled(LED1); // LED1 displays messsage sent Status
+CAN can1(PA_11, PA_12); // CAN interface
+CANMessage msg; // create empty CAN message
+
+
+int main() {
+
+ uint16_t id_can, len_can=0, i, octet;
+ char trame[8];
+ uint8_t ok=0;
+
+ do{
+ pc.printf("\nTaper 1 pour envoyer un message CAN custom ou 0 pour afficher le contenu des trames CAN sur le bus : ");
+ scanf("%u",&ok);
+ pc.printf("%u", ok);
+ }while(ok>1);
+
+ pc.printf("\n");
+
+ if(ok == 1){
+
+ pc.printf("Entrez l'ID CAN de votre trame : ");
+ pc.printf(">");
+ scanf("%hu",&id_can);
+ pc.printf("%hu", id_can);
+ pc.printf("\n");
+
+ pc.printf("Entrez le nombre d'octet de donnees de votre trame (de 0 a 8) : ");
+ do{
+ pc.printf(">");
+ scanf("%hu",&len_can);
+ }while(8<len_can);
+ pc.printf("%hu", len_can);
+ pc.printf("\n");
+
+ if(len_can != 0){
+ pc.printf("Entrez successivement chaque octet de donnee (de 0 a 255) :\n");
+ for(i=0;i<len_can;i++){
+ pc.printf(" -> Octet[%hu] : ",i);
+ do{
+ pc.printf(">");
+ scanf("%hu",&octet);
+ }while(255<octet);
+ trame[i] = octet;
+ pc.printf("%hu", trame[i]);
+ pc.printf("\n");
+ }
+ pc.printf("\n");
+ }
+
+ pc.printf("**********Envoi de la trame par bus CAN**********\n\n");
+
+ if (can1.write(CANMessage(id_can, trame, len_can))) {
+ pc.printf("Message envoye !\n"); // display message
+ myled = !myled;
+ }
+ else{
+ pc.printf("Echec de l'envoi\n");
+ can1.reset(); // Reset CANbus if there is a problem
+ }
+ wait(1.0); // wait a second
+ }
+ else{
+ pc.printf("\nRecepetion en cours...");
+ while(1){
+ if(can1.read(msg)) { // if message is available, read into msg
+ pc.printf("\n");
+ pc.printf("|******TRAME RECU**********|\n");
+ printf("ID de la trame CAN : %d\n", msg.id);
+ printf("Nombre d'octets recus: %d\n", msg.len); // display message data
+ for(i=0;i<msg.len;i++) printf(" -> data[%d] = %d\n", i, msg.data[i]);
+ }
+ myled = !myled;
+ }
+ }
+
+
+}
\ No newline at end of file