
STM32F303K8T6でCANに流れてくるデータを受信してFloatに変換する
Dependencies: mbed
Revision 0:18f4b01f6caf, committed 2020-07-30
- Comitter:
- sashida_h
- Date:
- Thu Jul 30 10:37:02 2020 +0000
- Commit message:
- initial commit
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jul 30 10:37:02 2020 +0000 @@ -0,0 +1,60 @@ +/* +CAN通信slave側 +2種類のIDから受信する. +rd - RXD +td - TXD +MCP2551まわりは以下参照(終端Rは410ohmを使った,そこにあったので) +https://raw.githubusercontent.com/rummanwaqar/teensy_can/master/schematic.png +*/ +#include "mbed.h" + +Serial pc(PA_2, PA_3, 115200); //pin19,20 TX,RX +CAN can(PA_11, PA_12, 100000); //pin21,22 rd,td +DigitalOut myled(PB_1); //pin15 + + + +CANMessage msg; + +union Float2Byte{ + float _float; + char _byte[4]; +}; +typedef union Float2Byte Float2Byte; + +void receive(){ + Float2Byte getFloat; + + if(can.read(msg)){ + /*ID: 0x01*/ + if(msg.id == 0x01){ + //pc.printf("ID: 0x01\n\r"); + for(int i=0;i<4;++i){ + getFloat._byte[i] = msg.data[i]; + //pc.printf("get_char: %d\n\r", getFloat._byte[i]); + } + pc.printf("%.2f\r\n", getFloat._float); + myled = !myled; + } + /*ID: 0x02*/ + if(msg.id == 0x02){ + //pc.printf("ID: 0x02\n\r"); + for(int i=0;i<4;++i){ + getFloat._byte[i] = msg.data[i]; + //pc.printf("get_char: %d\n\r", getFloat._byte[i]); + } + pc.printf("avarage: %.0f\n\r", getFloat._float); + myled = !myled; + } + } + +} + +int main(){ + pc.printf("Slave_Start.\n\r"); + can.attach(receive, CAN::RxIrq); + while(1){ + pc.printf("Slave loop()\n\r"); + wait(0.2); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Jul 30 10:37:02 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file