Team DIANA
/
can_multithreadingX
main.cpp@0:0da0fd430e20, 2018-12-06 (annotated)
- Committer:
- gidiana
- Date:
- Thu Dec 06 14:43:47 2018 +0000
- Revision:
- 0:0da0fd430e20
- Child:
- 1:9ecda2b969c2
first;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gidiana | 0:0da0fd430e20 | 1 | #include "mbed.h" //5.4.7 (144) |
gidiana | 0:0da0fd430e20 | 2 | |
gidiana | 0:0da0fd430e20 | 3 | const PinName can1rxPins[] = {PA_11}; |
gidiana | 0:0da0fd430e20 | 4 | const PinName can1txPins[] = {PA_12}; |
gidiana | 0:0da0fd430e20 | 5 | const PinName can2rxPins[] = {PB_12}; |
gidiana | 0:0da0fd430e20 | 6 | const PinName can2txPins[] = {PB_13}; |
gidiana | 0:0da0fd430e20 | 7 | |
gidiana | 0:0da0fd430e20 | 8 | //CAN1 |
gidiana | 0:0da0fd430e20 | 9 | //0,0=OK 0,1=OK 0,2=OK 1,0=OK 1,1=OK 1,2=OK 2,0=OK 2,1=OK 2,2=OK |
gidiana | 0:0da0fd430e20 | 10 | //CAN2 |
gidiana | 0:0da0fd430e20 | 11 | //0,0=RX_OK 0,1=OK 1,0=RX_OK 1,1=OK |
gidiana | 0:0da0fd430e20 | 12 | |
gidiana | 0:0da0fd430e20 | 13 | CAN can1(can1rxPins[0], can1txPins[0]); |
gidiana | 0:0da0fd430e20 | 14 | CAN can(can2rxPins[0], can2txPins[0]); |
gidiana | 0:0da0fd430e20 | 15 | |
gidiana | 0:0da0fd430e20 | 16 | //UART1, Tx, Rx (Debug) |
gidiana | 0:0da0fd430e20 | 17 | DigitalOut led1(LED1); |
gidiana | 0:0da0fd430e20 | 18 | |
gidiana | 0:0da0fd430e20 | 19 | |
gidiana | 0:0da0fd430e20 | 20 | Thread sendThread(osPriorityAboveNormal, 2048); |
gidiana | 0:0da0fd430e20 | 21 | Thread canrx; |
gidiana | 0:0da0fd430e20 | 22 | CANMessage messageIn; |
gidiana | 0:0da0fd430e20 | 23 | CANMessage messageOut; |
gidiana | 0:0da0fd430e20 | 24 | |
gidiana | 0:0da0fd430e20 | 25 | void canRxIsr() |
gidiana | 0:0da0fd430e20 | 26 | { |
gidiana | 0:0da0fd430e20 | 27 | while(1) |
gidiana | 0:0da0fd430e20 | 28 | { |
gidiana | 0:0da0fd430e20 | 29 | if(can1.read(messageIn)) |
gidiana | 0:0da0fd430e20 | 30 | { |
gidiana | 0:0da0fd430e20 | 31 | led1 = !led1; |
gidiana | 0:0da0fd430e20 | 32 | printf("received\n\r"); |
gidiana | 0:0da0fd430e20 | 33 | } |
gidiana | 0:0da0fd430e20 | 34 | } |
gidiana | 0:0da0fd430e20 | 35 | } |
gidiana | 0:0da0fd430e20 | 36 | void sendMessage() |
gidiana | 0:0da0fd430e20 | 37 | { |
gidiana | 0:0da0fd430e20 | 38 | int status = can.write(messageOut); |
gidiana | 0:0da0fd430e20 | 39 | printf("Send status: %d\r\n", status); |
gidiana | 0:0da0fd430e20 | 40 | } |
gidiana | 0:0da0fd430e20 | 41 | |
gidiana | 0:0da0fd430e20 | 42 | void sendMessageLoop() |
gidiana | 0:0da0fd430e20 | 43 | { |
gidiana | 0:0da0fd430e20 | 44 | while (true) |
gidiana | 0:0da0fd430e20 | 45 | { |
gidiana | 0:0da0fd430e20 | 46 | sendMessage(); |
gidiana | 0:0da0fd430e20 | 47 | osDelay(1000); |
gidiana | 0:0da0fd430e20 | 48 | } |
gidiana | 0:0da0fd430e20 | 49 | } |
gidiana | 0:0da0fd430e20 | 50 | |
gidiana | 0:0da0fd430e20 | 51 | int main() |
gidiana | 0:0da0fd430e20 | 52 | { |
gidiana | 0:0da0fd430e20 | 53 | |
gidiana | 0:0da0fd430e20 | 54 | printf("CAN receive / transmit test.\r\n"); |
gidiana | 0:0da0fd430e20 | 55 | //can.frequency(125000); |
gidiana | 0:0da0fd430e20 | 56 | |
gidiana | 0:0da0fd430e20 | 57 | messageOut.id = 1337; |
gidiana | 0:0da0fd430e20 | 58 | //messageOut.format = CANExtended; |
gidiana | 0:0da0fd430e20 | 59 | //messageOut.len = 0; |
gidiana | 0:0da0fd430e20 | 60 | |
gidiana | 0:0da0fd430e20 | 61 | canrx.start(canRxIsr); |
gidiana | 0:0da0fd430e20 | 62 | printf("CAN receive / .\r\n"); |
gidiana | 0:0da0fd430e20 | 63 | sendThread.start(&sendMessageLoop); |
gidiana | 0:0da0fd430e20 | 64 | printf("CAN \r\n"); |
gidiana | 0:0da0fd430e20 | 65 | |
gidiana | 0:0da0fd430e20 | 66 | while (true) |
gidiana | 0:0da0fd430e20 | 67 | { |
gidiana | 0:0da0fd430e20 | 68 | |
gidiana | 0:0da0fd430e20 | 69 | led1 = 0; |
gidiana | 0:0da0fd430e20 | 70 | osDelay(1000); |
gidiana | 0:0da0fd430e20 | 71 | } |
gidiana | 0:0da0fd430e20 | 72 | } |