![](/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 #include "test_env.h" 00003 00004 #if !DEVICE_CAN 00005 #error [NOT_SUPPORTED] CAN not supported 00006 #endif 00007 00008 #if defined(TARGET_LPC1549) 00009 CAN can1(D9, D8); 00010 #elif defined(TARGET_LPC1768) || defined(TARGET_LPC4088) 00011 CAN can1(p9, p10); 00012 #elif defined(TARGET_B96B_F446VE) 00013 CAN can1(PD_0, PD_1); 00014 #elif defined(TARGET_VK_RZ_A1H) 00015 CAN can1(P5_9, P5_10); 00016 #elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \ 00017 defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \ 00018 defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \ 00019 defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \ 00020 defined(TARGET_DISCO_F429ZI) || \ 00021 defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_DISCO_L476VG) || defined(TARGET_DISCO_L475VG_IOT01A) || \ 00022 defined(TARGET_NUCLEO_F412ZG) || defined(TARGET_DISCO_F413ZH) || \ 00023 defined(TARGET_NUCLEO_L476RG) || defined(TARGET_NUCLEO_L432KC) 00024 CAN can1(PA_11, PA_12); 00025 #elif defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG) || \ 00026 defined(TARGET_NUCLEO_F446ZE) || defined(TARGET_NUCLEO_F103RB) || \ 00027 defined(TARGET_NUCLEO_F207ZG) || defined(TARGET_NUCLEO_F303ZE) || \ 00028 defined(TARGET_DISCO_F769NI) || defined(TARGET_NUCLEO_F767ZI) || \ 00029 defined(TARGET_DISCO_F303VC) 00030 CAN can1(PB_8, PB_9); 00031 #endif 00032 00033 #define TEST_ITERATIONS 127 00034 00035 int main() { 00036 MBED_HOSTTEST_TIMEOUT(20); 00037 MBED_HOSTTEST_SELECT(dev_null); 00038 MBED_HOSTTEST_DESCRIPTION(CAN Loopback); 00039 MBED_HOSTTEST_START("MBED_A27"); 00040 00041 #if !defined(TARGET_VK_RZ_A1H) 00042 can1.mode(CAN::Reset); 00043 #endif 00044 00045 if (!can1.mode(CAN::LocalTest)) { 00046 printf("Mode change failed\n"); 00047 } 00048 00049 char success_count = 0; 00050 for (char i=0; i < TEST_ITERATIONS; i++) { 00051 unsigned int id = 1337; 00052 CANMessage tx_msg(id, &i, sizeof(i)); 00053 bool sent = false; 00054 if (can1.write(tx_msg)) { 00055 printf("Sent %u: %d\n", id, i); 00056 sent = true; 00057 } 00058 wait_ms(50); 00059 00060 bool read = false; 00061 CANMessage rx_msg; 00062 if (can1.read(rx_msg)) { 00063 printf("Read %u: %d\n", rx_msg.id, rx_msg.data[0]); 00064 read = (rx_msg.id == id) && (rx_msg.data[0] == i); 00065 } 00066 00067 bool success = sent && read; 00068 00069 if (success) { 00070 success_count++; 00071 } 00072 } 00073 00074 MBED_HOSTTEST_RESULT(success_count == TEST_ITERATIONS); 00075 }
Generated on Sun Jul 17 2022 08:25:26 by
![doxygen](doxygen.png)