Rtos API example
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 /* mbed Microcontroller Library 00002 * Copyright (c) 2017 ARM Limited 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #include "mbed.h" 00017 #include "test_env.h" 00018 00019 #if !DEVICE_CAN 00020 #error [NOT_SUPPORTED] CAN not supported 00021 #endif 00022 00023 #if defined(TARGET_LPC1549) 00024 #define CAN_RD D9 00025 #define CAN_TD D8 00026 #elif defined(TARGET_LPC1768) || defined(TARGET_LPC4088) 00027 #define CAN_RD p9 00028 #define CAN_TD p10 00029 #elif defined(TARGET_B96B_F446VE) 00030 #define CAN_RD PD_0 00031 #define CAN_TD PD_1 00032 #elif defined(TARGET_VK_RZ_A1H) 00033 #define CAN_RD P5_9 00034 #define CAN_TD P5_10 00035 #elif defined(TARGET_NUCLEO_F042K6) || \ 00036 defined(TARGET_NUCLEO_F072RB) || \ 00037 defined(TARGET_NUCLEO_F091RC) || \ 00038 defined(TARGET_NUCLEO_F302R8) || \ 00039 defined(TARGET_NUCLEO_F303RE) || \ 00040 defined(TARGET_NUCLEO_F303K8) || \ 00041 defined(TARGET_NUCLEO_F334R8) || \ 00042 defined(TARGET_NUCLEO_F412ZG) || \ 00043 defined(TARGET_DISCO_F429ZI) || \ 00044 defined(TARGET_NUCLEO_F446RE) || \ 00045 defined(TARGET_NUCLEO_F746ZG) || \ 00046 defined(TARGET_NUCLEO_L432KC) || \ 00047 defined(TARGET_DISCO_L476VG) || \ 00048 defined(TARGET_NUCLEO_L476RG) 00049 #define CAN_RD PA_11 00050 #define CAN_TD PA_12 00051 #elif defined(TARGET_NUCLEO_F103RB) || \ 00052 defined(TARGET_NUCLEO_F207ZG) || \ 00053 defined(TARGET_DISCO_F303VC) || \ 00054 defined(TARGET_NUCLEO_F303ZE) || \ 00055 defined(TARGET_NUCLEO_F412ZG) || \ 00056 defined(TARGET_NUCLEO_F429ZI) || \ 00057 defined(TARGET_NUCLEO_F439ZI) || \ 00058 defined(TARGET_NUCLEO_F446ZE) || \ 00059 defined(TARGET_DISCO_F469NI) || \ 00060 defined(TARGET_DISCO_F746NG) || \ 00061 defined(TARGET_NUCLEO_F756ZG) || \ 00062 defined(TARGET_NUCLEO_F767ZI) || \ 00063 defined(TARGET_DISCO_F769NI) || \ 00064 defined(TARGET_NUCLEO_L486RG) 00065 #define CAN_RD PB_8 00066 #define CAN_TD PB_9 00067 #endif 00068 00069 int result = true; 00070 00071 void Check_CAN_Frequency(int CanFrequency) 00072 { 00073 printf("Init CAN at %d Hz\n", CanFrequency); 00074 00075 CAN can_object(CAN_RD, CAN_TD, CanFrequency); 00076 00077 #if !defined(TARGET_VK_RZ_A1H) 00078 can_object.mode(CAN::Reset); 00079 #endif 00080 00081 if (!can_object.mode(CAN::LocalTest)) { 00082 printf("CAN MODE_TEST_LOCAL failed\n"); 00083 result = false; 00084 } 00085 } 00086 00087 int main() 00088 { 00089 MBED_HOSTTEST_TIMEOUT(20); 00090 MBED_HOSTTEST_SELECT(dev_null); 00091 MBED_HOSTTEST_DESCRIPTION(CAN API at different frequency); 00092 MBED_HOSTTEST_START("MBED_A30"); 00093 00094 const int frequency_table[] = {10000, 50000, 100000, 500000, 1000000}; 00095 for (uint32_t i = 0; i < sizeof(frequency_table)/sizeof(int); i++) { 00096 Check_CAN_Frequency(frequency_table[i]); 00097 } 00098 00099 MBED_HOSTTEST_RESULT(result); 00100 }
Generated on Sun Jul 17 2022 08:25:26 by
1.7.2