Team DIANA
/
can_multithreadingX
Diff: main.cpp
- Revision:
- 0:0da0fd430e20
- Child:
- 1:9ecda2b969c2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 06 14:43:47 2018 +0000 @@ -0,0 +1,72 @@ + #include "mbed.h" //5.4.7 (144) + +const PinName can1rxPins[] = {PA_11}; +const PinName can1txPins[] = {PA_12}; +const PinName can2rxPins[] = {PB_12}; +const PinName can2txPins[] = {PB_13}; + +//CAN1 +//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 +//CAN2 +//0,0=RX_OK 0,1=OK 1,0=RX_OK 1,1=OK + +CAN can1(can1rxPins[0], can1txPins[0]); +CAN can(can2rxPins[0], can2txPins[0]); + + //UART1, Tx, Rx (Debug) +DigitalOut led1(LED1); + + +Thread sendThread(osPriorityAboveNormal, 2048); +Thread canrx; +CANMessage messageIn; +CANMessage messageOut; + +void canRxIsr() +{ + while(1) + { + if(can1.read(messageIn)) + { + led1 = !led1; + printf("received\n\r"); + } + } + } +void sendMessage() +{ + int status = can.write(messageOut); + printf("Send status: %d\r\n", status); +} + +void sendMessageLoop() +{ + while (true) + { + sendMessage(); + osDelay(1000); + } +} + +int main() +{ + + printf("CAN receive / transmit test.\r\n"); + //can.frequency(125000); + + messageOut.id = 1337; + //messageOut.format = CANExtended; + //messageOut.len = 0; + + canrx.start(canRxIsr); + printf("CAN receive / .\r\n"); + sendThread.start(&sendMessageLoop); + printf("CAN \r\n"); + + while (true) + { + + led1 = 0; + osDelay(1000); + } +} \ No newline at end of file