Preliminary main mbed library for nexpaq development

Committer:
nexpaq
Date:
Fri Nov 04 20:54:50 2016 +0000
Revision:
1:d96dbedaebdb
Parent:
0:6c56fb4bc5f0
Removed extra directories for other platforms

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nexpaq 0:6c56fb4bc5f0 1 #include "mbed.h"
nexpaq 0:6c56fb4bc5f0 2
nexpaq 0:6c56fb4bc5f0 3 #if !DEVICE_CAN
nexpaq 0:6c56fb4bc5f0 4 #error [NOT_SUPPORTED] CAN not supported
nexpaq 0:6c56fb4bc5f0 5 #endif
nexpaq 0:6c56fb4bc5f0 6
nexpaq 0:6c56fb4bc5f0 7 Ticker ticker;
nexpaq 0:6c56fb4bc5f0 8 DigitalOut led1(LED1);
nexpaq 0:6c56fb4bc5f0 9 DigitalOut led2(LED2);
nexpaq 0:6c56fb4bc5f0 10
nexpaq 0:6c56fb4bc5f0 11 #if defined(TARGET_LPC1549)
nexpaq 0:6c56fb4bc5f0 12 // LPC1549 support only single CAN channel
nexpaq 0:6c56fb4bc5f0 13 CAN can1(D2, D3);
nexpaq 0:6c56fb4bc5f0 14 #elif defined(TARGET_B96B_F446VE)
nexpaq 0:6c56fb4bc5f0 15 // B96B_F446VE support only single CAN channel
nexpaq 0:6c56fb4bc5f0 16 CAN can1(PD_0, PD_1);
nexpaq 0:6c56fb4bc5f0 17 #elif defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F072RB) || \
nexpaq 0:6c56fb4bc5f0 18 defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F334R8) || \
nexpaq 0:6c56fb4bc5f0 19 defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303K8) || \
nexpaq 0:6c56fb4bc5f0 20 defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F446RE) || \
nexpaq 0:6c56fb4bc5f0 21 defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F103RB) || \
nexpaq 0:6c56fb4bc5f0 22 defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_L476RG) || \
nexpaq 0:6c56fb4bc5f0 23 defined(TARGET_NUCLEO_L432KC)
nexpaq 0:6c56fb4bc5f0 24 CAN can1(PA_11, PA_12);
nexpaq 0:6c56fb4bc5f0 25 #elif defined(TARGET_DISCO_F469NI) ||defined(TARGET_DISCO_F746NG)
nexpaq 0:6c56fb4bc5f0 26 CAN can1(PB_8, PB_9);
nexpaq 0:6c56fb4bc5f0 27 #else
nexpaq 0:6c56fb4bc5f0 28 CAN can1(p9, p10);
nexpaq 0:6c56fb4bc5f0 29 #endif
nexpaq 0:6c56fb4bc5f0 30
nexpaq 0:6c56fb4bc5f0 31 #if defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM)
nexpaq 0:6c56fb4bc5f0 32 CAN can2(p34, p33);
nexpaq 0:6c56fb4bc5f0 33 #elif defined (TARGET_LPC1768)
nexpaq 0:6c56fb4bc5f0 34 CAN can2(p30, p29);
nexpaq 0:6c56fb4bc5f0 35 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_DISCO_F469NI) || \
nexpaq 0:6c56fb4bc5f0 36 defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F746ZG) || \
nexpaq 0:6c56fb4bc5f0 37 defined(TARGET_DISCO_F746NG)
nexpaq 0:6c56fb4bc5f0 38 CAN can2(PB_5, PB_6);
nexpaq 0:6c56fb4bc5f0 39 #endif
nexpaq 0:6c56fb4bc5f0 40 char counter = 0;
nexpaq 0:6c56fb4bc5f0 41
nexpaq 0:6c56fb4bc5f0 42 void printmsg(char *title, CANMessage *msg) {
nexpaq 0:6c56fb4bc5f0 43 printf("%s [%03X]", title, msg->id);
nexpaq 0:6c56fb4bc5f0 44 for(char i = 0; i < msg->len; i++) {
nexpaq 0:6c56fb4bc5f0 45 printf(" %02X", msg->data[i]);
nexpaq 0:6c56fb4bc5f0 46 }
nexpaq 0:6c56fb4bc5f0 47 printf("\n");
nexpaq 0:6c56fb4bc5f0 48 }
nexpaq 0:6c56fb4bc5f0 49
nexpaq 0:6c56fb4bc5f0 50 void send() {
nexpaq 0:6c56fb4bc5f0 51 printf("send()\n");
nexpaq 0:6c56fb4bc5f0 52 CANMessage msg = CANMessage(1337, &counter, 1);
nexpaq 0:6c56fb4bc5f0 53 if(can1.write(msg)) {
nexpaq 0:6c56fb4bc5f0 54 printmsg("Tx message:", &msg);
nexpaq 0:6c56fb4bc5f0 55 counter++;
nexpaq 0:6c56fb4bc5f0 56 }
nexpaq 0:6c56fb4bc5f0 57 led1 = !led1;
nexpaq 0:6c56fb4bc5f0 58 }
nexpaq 0:6c56fb4bc5f0 59
nexpaq 0:6c56fb4bc5f0 60 int main() {
nexpaq 0:6c56fb4bc5f0 61 printf("main()\n");
nexpaq 0:6c56fb4bc5f0 62 ticker.attach(&send, 1);
nexpaq 0:6c56fb4bc5f0 63 CANMessage msg;
nexpaq 0:6c56fb4bc5f0 64 while(1) {
nexpaq 0:6c56fb4bc5f0 65 #if (!defined (TARGET_LPC1549) && !defined(TARGET_B96B_F446VE) && \
nexpaq 0:6c56fb4bc5f0 66 !defined(TARGET_NUCLEO_F091RC) && !defined(TARGET_NUCLEO_F072RB) && \
nexpaq 0:6c56fb4bc5f0 67 !defined(TARGET_NUCLEO_F042K6) && !defined(TARGET_NUCLEO_F334R8) && \
nexpaq 0:6c56fb4bc5f0 68 !defined(TARGET_NUCLEO_F303RE) && !defined(TARGET_NUCLEO_F303K8) && \
nexpaq 0:6c56fb4bc5f0 69 !defined(TARGET_NUCLEO_F302R8) && !defined(TARGET_NUCLEO_F103RB) && \
nexpaq 0:6c56fb4bc5f0 70 !defined(TARGET_DISCO_L476VG) && !defined(TARGET_NUCLEO_L476RG) && \
nexpaq 0:6c56fb4bc5f0 71 !defined(TARGET_NUCLEO_L432KC))
nexpaq 0:6c56fb4bc5f0 72 printf("loop()\n");
nexpaq 0:6c56fb4bc5f0 73 if(can2.read(msg)) {
nexpaq 0:6c56fb4bc5f0 74 printmsg("Rx message:", &msg);
nexpaq 0:6c56fb4bc5f0 75 led2 = !led2;
nexpaq 0:6c56fb4bc5f0 76 }
nexpaq 0:6c56fb4bc5f0 77 #endif
nexpaq 0:6c56fb4bc5f0 78 wait(0.2);
nexpaq 0:6c56fb4bc5f0 79 }
nexpaq 0:6c56fb4bc5f0 80 }