init
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 #if !DEVICE_CAN 00004 #error [NOT_SUPPORTED] CAN not supported 00005 #endif 00006 00007 Ticker ticker; 00008 DigitalOut led1(LED1); 00009 DigitalOut led2(LED2); 00010 00011 #if defined(TARGET_LPC1549) 00012 // LPC1549 support only single CAN channel 00013 CAN can1(D2, D3); 00014 #elif defined(TARGET_B96B_F446VE) 00015 // B96B_F446VE support only single CAN channel 00016 CAN can1(PD_0, PD_1); 00017 #elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \ 00018 defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \ 00019 defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \ 00020 defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \ 00021 defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \ 00022 defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_L476RG) || \ 00023 defined(TARGET_NUCLEO_F412ZG) || defined(TARGET_DISCO_F413ZH) || \ 00024 defined(TARGET_NUCLEO_L432KC) || defined(TARGET_DISCO_F303VC) || \ 00025 defined(TARGET_NUCLEO_F413ZH) 00026 CAN can1(PA_11, PA_12); 00027 #elif defined(TARGET_DISCO_F469NI) ||defined(TARGET_DISCO_F746NG) 00028 CAN can1(PB_8, PB_9); 00029 #else 00030 CAN can1(p9, p10); 00031 #endif 00032 00033 #if defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) 00034 CAN can2(p34, p33); 00035 #elif defined (TARGET_LPC1768) 00036 CAN can2(p30, p29); 00037 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_DISCO_F469NI) || \ 00038 defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F746ZG) || \ 00039 defined(TARGET_NUCLEO_F412ZG) || defined(TARGET_DISCO_F413ZH) || \ 00040 defined(TARGET_DISCO_F746NG) || defined(TARGET_NUCLEO_F413ZH) 00041 CAN can2(PB_5, PB_6); 00042 #endif 00043 char counter = 0; 00044 00045 void printmsg(char *title, CANMessage *msg) { 00046 printf("%s [%03X]", title, msg->id); 00047 for(char i = 0; i < msg->len; i++) { 00048 printf(" %02X", msg->data[i]); 00049 } 00050 printf("\n"); 00051 } 00052 00053 void send() { 00054 printf("send()\n"); 00055 CANMessage msg = CANMessage(1337, &counter, 1); 00056 if(can1.write(msg)) { 00057 printmsg("Tx message:", &msg); 00058 counter++; 00059 } 00060 led1 = !led1; 00061 } 00062 00063 int main() { 00064 printf("main()\n"); 00065 ticker.attach(&send, 1); 00066 CANMessage msg; 00067 while(1) { 00068 #if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \ 00069 !defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB) && \ 00070 !defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \ 00071 !defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \ 00072 !defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \ 00073 !defined(TARGET_DISCO_L476VG) && !defined(TARGET_DISCO_L475VG_IOT01A) && !defined(TARGET_NUCLEO_L476RG) && \ 00074 !defined(TARGET_NUCLEO_L432KC)) && !defined(TARGET_DISCO_F303VC) 00075 printf("loop()\n"); 00076 if(can2.read(msg)) { 00077 printmsg("Rx message:", &msg); 00078 led2 = !led2; 00079 } 00080 #endif 00081 wait(0.2); 00082 } 00083 }
Generated on Tue Jul 12 2022 13:24:54 by
1.7.2