{"id":20912092,"url":"https://github.com/adamczykpiotr/stm32duino_can_library","last_synced_at":"2025-10-05T00:09:37.848Z","repository":{"id":142972199,"uuid":"374733160","full_name":"adamczykpiotr/STM32duino_CAN_Library","owner":"adamczykpiotr","description":"CanBus library for STM32F103 running on STM32duino","archived":false,"fork":false,"pushed_at":"2021-06-07T19:28:08.000Z","size":5,"stargazers_count":9,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-08T21:36:06.702Z","etag":null,"topics":["bluepill","bluepill-board","can","can-bus","canbus","gmlan","stm32","stm32duino","stm32f103","stm32f103c8t6","swcan"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adamczykpiotr.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-06-07T16:31:52.000Z","updated_at":"2024-12-12T04:23:28.000Z","dependencies_parsed_at":"2023-04-03T13:19:33.276Z","dependency_job_id":null,"html_url":"https://github.com/adamczykpiotr/STM32duino_CAN_Library","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adamczykpiotr/STM32duino_CAN_Library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamczykpiotr%2FSTM32duino_CAN_Library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamczykpiotr%2FSTM32duino_CAN_Library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamczykpiotr%2FSTM32duino_CAN_Library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamczykpiotr%2FSTM32duino_CAN_Library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamczykpiotr","download_url":"https://codeload.github.com/adamczykpiotr/STM32duino_CAN_Library/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamczykpiotr%2FSTM32duino_CAN_Library/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278391266,"owners_count":25978959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluepill","bluepill-board","can","can-bus","canbus","gmlan","stm32","stm32duino","stm32f103","stm32f103c8t6","swcan"],"created_at":"2024-11-18T14:25:16.512Z","updated_at":"2025-10-05T00:09:37.825Z","avatar_url":"https://github.com/adamczykpiotr.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# STM32duino_CAN_Library\nCanBus library for STM32F103 running on STM32duino, tested on F103C8T6 variant.\nKey advantages:\n* Object-oriented programming style\n* Support for inline Can::Frame initialization\n* Support for 33.3KBPS CAN (GMLAN/SWCAN)\n\nInner workings based on [nopnop2002](https://github.com/nopnop2002/Arduino-STM32-CAN/tree/master/stm32f103)'s sketch.\n\n## Supported board / Can-Bus parameters:\n\nSTM32F103 pinouts:\n```cpp\nenum Can::Pinout {\n  RX_PA11_TX_PA12,  // 36/48/64/100/144 pin packages\n  RX_PB8_TX_PB9,    // 48/64/100/144 pin packages\n  RX_PD0_TX_PD1,    // 100/144 pin packages\n};\n```\n\nBitrates:\n\n```cpp\nenum Can::Bitrate {\n  CAN_33K3BPS,\n  CAN_50KBPS,\n  CAN_100KBPS,\n  CAN_125KBPS,\n  CAN_250KBPS,\n  CAN_500KBPS,\n  CAN_1000KBPS,\n};\n```\n\n## Can-Bus frame:\n\n```cpp\nclass Can::Frame {\npublic:\n  uint32_t id;\n  uint8_t length;\n  uint8_t data[8];\n  FrameFormat format;\n  FrameType type;\n}\n```\nTypes and formats:\n\n```cpp\nenum Can::FrameFormat {\n  Standard,\n  Extended, \n};\n\nenum Can::FrameType {\n  Data,\n  Remote,\n};\n```\n\n## Example usage:\n\n```cpp\n#include \"CanBus.hpp\"\nusing namespace Can;\nCanBus can0;\n\nvoid setup() {\n  Serial.begin(9600);\n\n  bool ret = can0.begin(Bitrate::CAN_33K3BPS, Pinout::RX_PB8_TX_PB9);\n  Serial.println(ret ? \"BOOT OK\" : \"BOOT FAILURE\");\n  if (!ret) while(true);\n}\n\nFrame rx;\nFrame tx = { 0x7FF, 3, {0x01, 0x02, 0x03} };\n\nvoid loop() {\n\n  if(can0.checkReceive()) {\n    can0.receive(\u0026rx);\n    rx.print();\n  }\n\n  tx = { 0x17FF, 3, {0x01, 0x02, 0x03}, FrameFormat::Extended, FrameType::Data };\n  can0.send(\u0026tx);\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamczykpiotr%2Fstm32duino_can_library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamczykpiotr%2Fstm32duino_can_library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamczykpiotr%2Fstm32duino_can_library/lists"}