{"id":46231659,"url":"https://github.com/sufst/vcu","last_synced_at":"2026-03-03T18:01:50.460Z","repository":{"id":38037155,"uuid":"421175960","full_name":"sufst/vcu","owner":"sufst","description":"Embedded software for the VCU","archived":false,"fork":false,"pushed_at":"2025-11-20T20:36:34.000Z","size":9698,"stargazers_count":23,"open_issues_count":17,"forks_count":7,"subscribers_count":3,"default_branch":"comp-25","last_synced_at":"2025-11-20T22:20:54.093Z","etag":null,"topics":["embedded","rtos","stm32","threadx","vcu"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sufst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING_EXTRA.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-10-25T20:31:56.000Z","updated_at":"2025-11-20T20:09:06.000Z","dependencies_parsed_at":"2023-12-05T19:26:10.984Z","dependency_job_id":"3c7ded48-b206-46a5-99fb-ac59e1ff4765","html_url":"https://github.com/sufst/vcu","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/sufst/vcu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fvcu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fvcu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fvcu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fvcu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sufst","download_url":"https://codeload.github.com/sufst/vcu/tar.gz/refs/heads/comp-25","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufst%2Fvcu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30053990,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T17:46:22.538Z","status":"ssl_error","status_checked_at":"2026-03-03T17:46:22.036Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["embedded","rtos","stm32","threadx","vcu"],"created_at":"2026-03-03T18:01:49.761Z","updated_at":"2026-03-03T18:01:50.455Z","avatar_url":"https://github.com/sufst.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e VCU - Vehicle Control Unit \u003c/h2\u003e\n\n# Table of Contents\n\n- [About](#about)\n- [Development Environment](#development-environment)\n- [Contributing](#contributing)\n- [Useful Resources](#useful-resources)\n- [Related Projects](#related-projects)\n\n# About\n\nThe VCU is responsible for controlling the tractive system based on driver\ninput. The microcontroller used in this project is the STM32 F746ZG.\n\nMore detailed information about this project is available to members on the\nSUFST Docs Site.\n\n# Setup / Development Environment\n\n## Submodules\n\nThis project depends on middlewares in the `src/Middlewares/` folder, some of\nwhich are Git submodules. When first cloning this repo, run the following\ncommands:\n\n```sh\ngit submodule init\ngit submodule update\n```\n\nFor more information on submodules, see the [Git submodules documentation](https://git-scm.com/book/en/v2/Git-Tools-Submodules).\n\n## Building and Flashing\n\nTo build this project and flash code to the microcontroller, you will need the\nfollowing on your path:\n\n- [Make](https://www.gnu.org/software/make/)\n- [ARM GNU Embedded Toolchain](https://developer.arm.com/downloads/-/gnu-rm)\n- [STLink Open Source Toolset](https://github.com/stlink-org/stlink)\n- `mkdir`, `rm`, `tput` and `echo`\n\nBuild with:\n\n```sh\nmake -j -s\n```\n\nFlash with:\n\n```sh\nmake flash\n```\n\nFor detailed toolchain setup instructions, see the SUFST Docs Site.\n\n\u003e Note: Windows users should run these commands from Git Bash.\n\n## VS Code\n\nThis project is set up to be edited and debugged in [VS Code](https://code.visualstudio.com).\nThe `.vscode`folder includes tasks and launch configurations. To improve\nIntellisense, it is recommended to use [`ccdgen`](https://github.com/t-bre/ccdgen).\n\nMake sure it is installed with the following command, which may differ depending on your\nenvironment:\n\n```sh\npython3 -m pip install ccdgen\n```\n\nThen, you can generate the compile commands database using the relevant `Makefile` target:\n\n```sh\nmake -s ccd\n```\n\nSince the toolchain is set up to be fully command line based, it is also\npossible to use other code editors.\n\n\u003e Note: Windows users should set Git Bash as the shell in VS Code.\n\n## STM32CubeMX\n\n[STM32CubeMX](https://www.st.com/en/development-tools/stm32cubemx.html) is used\nto generate boilerplate initialisation code for the microcontroller. These\nconfigurations are stored in `src/VCU.ioc` which should not be edited manually.\nTo minimise the chance of merge conflicts, changes to the `.ioc` should be made\nas infrequently as possible as the `.ioc` format is not well suited to version\ncontrol.\n\n\u003e Note: CubeMX generates a Makefile in the `src` folder. This should _not_ be\n\u003e used, there is a custom Makefile in the project root. If CubeMX adds something\n\u003e to the Makefile it generates which is not in the custom Makefile, it should be\n\u003e copied over. This should only happen infrequently when adding a new peripheral\n\u003e or CubeMX managed middlewares.\n\n# Contributing\n\nBefore contributing to this project, make sure to familiarise yourself with the\n[project-specific contributing guidelines](.github/CONTRIBUTING_EXTRA.md).\n\n# Useful Resources\n\nMicrocontroller:\n\n- [STM32F746ZG MCU Datasheet](https://www.st.com/resource/en/datasheet/stm32f746zg.pdf)\n- [STM32F7xx HAL Manual](https://www.st.com/resource/en/user_manual/dm00189702-description-of-stm32f7-hal-and-lowlayer-drivers-stmicroelectronics.pdf)\n\nThreadX RTOS:\n\n- [ThreadX Overview](https://docs.microsoft.com/en-us/azure/rtos/threadx/overview-threadx)\n- [ThreadX API](https://docs.microsoft.com/en-us/azure/rtos/threadx/chapter4)\n\nCAN / inverter:\n\n- [PM100 Datasheet](https://www.cascadiamotion.com/images/catalog/DataSheets/PM100.pdf)\n- [Cascadia Motion CAN Protocol](https://app.box.com/s/vf9259qlaadhzxqiqrt5cco8xpsn84hk/file/27334613044)\n\n# Related Projects\n\n- [VCU GUI](https://github.com/sufst/vcu-gui)\n- [VCU PCB](https://github.com/sufst/pcb)\n- [RTCAN](https://github.com/sufst/rtcan)\n- [CAN Bus Definitions](https://github.com/sufst/can-defs)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsufst%2Fvcu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsufst%2Fvcu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsufst%2Fvcu/lists"}