Rtos API example

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }