![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Rtos API example
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 CAN can1(PA_11, PA_12); 00026 #elif defined(TARGET_DISCO_F469NI) ||defined(TARGET_DISCO_F746NG) 00027 CAN can1(PB_8, PB_9); 00028 #else 00029 CAN can1(p9, p10); 00030 #endif 00031 00032 #if defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM) 00033 CAN can2(p34, p33); 00034 #elif defined (TARGET_LPC1768) 00035 CAN can2(p30, p29); 00036 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_DISCO_F469NI) || \ 00037 defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F746ZG) || \ 00038 defined(TARGET_NUCLEO_F412ZG) || defined(TARGET_DISCO_F413ZH) || \ 00039 defined(TARGET_DISCO_F746NG) 00040 CAN can2(PB_5, PB_6); 00041 #endif 00042 char counter = 0; 00043 00044 void printmsg(char *title, CANMessage *msg) { 00045 printf("%s [%03X]", title, msg->id); 00046 for(char i = 0; i < msg->len; i++) { 00047 printf(" %02X", msg->data[i]); 00048 } 00049 printf("\n"); 00050 } 00051 00052 void send() { 00053 printf("send()\n"); 00054 CANMessage msg = CANMessage(1337, &counter, 1); 00055 if(can1.write(msg)) { 00056 printmsg("Tx message:", &msg); 00057 counter++; 00058 } 00059 led1 = !led1; 00060 } 00061 00062 int main() { 00063 printf("main()\n"); 00064 ticker.attach(&send, 1); 00065 CANMessage msg; 00066 while(1) { 00067 #if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \ 00068 !defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB) && \ 00069 !defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \ 00070 !defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \ 00071 !defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \ 00072 !defined(TARGET_DISCO_L476VG) && !defined(TARGET_DISCO_L475VG_IOT01A) && !defined(TARGET_NUCLEO_L476RG) && \ 00073 !defined(TARGET_NUCLEO_L432KC)) && !defined(TARGET_DISCO_F303VC) 00074 printf("loop()\n"); 00075 if(can2.read(msg)) { 00076 printmsg("Rx message:", &msg); 00077 led2 = !led2; 00078 } 00079 #endif 00080 wait(0.2); 00081 } 00082 }
Generated on Sun Jul 17 2022 08:25:26 by
![doxygen](doxygen.png)