Skip to content
Open
Show file tree
Hide file tree
Changes from 62 commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
bd10771
🔧 Update CMakeLists to cpp
Eduardo-Barreto Oct 21, 2023
0050396
⬆️ Update cube
Eduardo-Barreto Oct 21, 2023
f93583d
✨ Migrate mcu utility to cpp
Eduardo-Barreto Oct 21, 2023
aa33fbb
📝 Update README
Eduardo-Barreto Oct 21, 2023
b0b8248
📝 Update file header
Eduardo-Barreto Oct 21, 2023
281e42c
✨ Update tests to CPP
Eduardo-Barreto Oct 21, 2023
2b08065
✨ Readd C support
Eduardo-Barreto Oct 22, 2023
693fe59
🔧 Set uncrustify as default formatter
Eduardo-Barreto Oct 22, 2023
345a274
🎨 Function definitions inside namespace
Eduardo-Barreto Oct 22, 2023
545a38e
🎨 Format with uncrustify
Eduardo-Barreto Oct 22, 2023
fd43d6c
📝 Fix guard macros name
Eduardo-Barreto Oct 30, 2023
6689168
📝 Fix guard macros name comment
Eduardo-Barreto Oct 30, 2023
42f102d
🩹 Rename C_Things to PROJECT_Things
Eduardo-Barreto Oct 30, 2023
c6497cd
🔥 Remove mcu led toggle
Eduardo-Barreto Feb 23, 2024
b84c4e1
Merge branch 'migrate/cpp' into the-great-refactor
Eduardo-Barreto Mar 15, 2025
28c3444
🔧 Change Cube toolchain to CMake
Eduardo-Barreto Mar 16, 2025
7b63f56
🔧 Change uncrustify to clang
Eduardo-Barreto Mar 16, 2025
127c0e5
✨ Add linter
Eduardo-Barreto Mar 16, 2025
e969f47
♻️ Refactor structure to new cmake
Eduardo-Barreto Mar 16, 2025
e82cafa
🔇 Remove debug logs
Eduardo-Barreto Mar 16, 2025
95d5d61
✨ Add test_all target
Eduardo-Barreto Mar 16, 2025
7c7f99f
🚨 Fix linter warnings
Eduardo-Barreto Mar 16, 2025
34d1f55
♻️ Update targets
Eduardo-Barreto Mar 16, 2025
ffd8dca
⬆️ Update extensions recommendations
Eduardo-Barreto Mar 16, 2025
523b026
🚧 Add doxyfile
Eduardo-Barreto Mar 16, 2025
800bc6d
✨ Add gpio and test
Eduardo-Barreto Mar 17, 2025
23fbab4
♻️ Change uc to bluepill
Eduardo-Barreto Mar 17, 2025
af15935
✨🚧 Start to add docker
Eduardo-Barreto Mar 17, 2025
99fd511
👷 Add CI
Eduardo-Barreto Mar 17, 2025
a6838dc
🚨 Initialize config members
Eduardo-Barreto Mar 17, 2025
156c5e4
🚨🩹 Fix linter warnings with linter
Eduardo-Barreto Mar 17, 2025
f1bc47d
📝 Update helpme
Eduardo-Barreto Mar 17, 2025
c4c2131
🐛 Update launch.json template
Eduardo-Barreto Mar 17, 2025
260d470
📝 Update README
Eduardo-Barreto Mar 17, 2025
a224f94
♻️ Update vscode settings
Eduardo-Barreto Mar 17, 2025
438b87b
➖ Remove stm32-cmake submodule
Eduardo-Barreto Mar 17, 2025
0102bdb
🔧 Set cube code as system
Eduardo-Barreto Mar 17, 2025
342a1c3
🐛🔧 Remove system from cube sources
Eduardo-Barreto Mar 17, 2025
221672a
♻️ Use pin and ports from cube
Eduardo-Barreto Mar 17, 2025
2345177
🚨💩 Ignore lint error
Eduardo-Barreto Mar 17, 2025
7732f61
🚨 Reorder includes
Eduardo-Barreto Mar 17, 2025
686d0ea
🔧 Cube dont generate main()
Eduardo-Barreto Mar 17, 2025
0b72d38
🔧🐛 Fix cube includes as system
Eduardo-Barreto Mar 17, 2025
faf2e7b
🎨 Make format
Eduardo-Barreto Mar 17, 2025
41fc369
✨ Add blink
Eduardo-Barreto Mar 17, 2025
6fe6569
🔧🐛 Link stm32cubemx
Eduardo-Barreto Mar 17, 2025
4b681be
♻️🐛 Fix project sources
Eduardo-Barreto Mar 17, 2025
7d2c7a8
♻️ Use led toggle
Eduardo-Barreto Mar 17, 2025
1cc2e06
♻️🔧 Refactor to use project files as a library
Eduardo-Barreto Mar 17, 2025
eb07819
📝 omg micras mentioned
Eduardo-Barreto Mar 17, 2025
4daf74f
🩹 Remove thunder_ on sources and headers
Eduardo-Barreto Mar 17, 2025
13e17b6
🔧 Remove lib from format headers and sources
Eduardo-Barreto Mar 17, 2025
7c1924b
🐛 Add whole archive flag to project lib
Eduardo-Barreto Mar 17, 2025
fbde763
📝♻️ Fix README
Eduardo-Barreto Mar 17, 2025
168ef8f
🔥 Remove english section
Eduardo-Barreto Mar 17, 2025
81c2918
:bug: Fix STM32 PROGRAMMER
jairchtq Mar 17, 2025
7794ef6
🎨 Remove tab on else statement
Eduardo-Barreto Mar 17, 2025
8db7e91
📝 Add acknowledgments section
Eduardo-Barreto Mar 19, 2025
7a53420
🔥 Remove preload
Eduardo-Barreto Mar 19, 2025
a5ed64d
🚚 Move docker to .docker
Eduardo-Barreto Mar 19, 2025
0a86681
💚 Fix docker path on workflows
Eduardo-Barreto Mar 19, 2025
3708c99
💚 Fix erroneous .docker on image names
Eduardo-Barreto Mar 19, 2025
2d38cb0
📝 Change make help to helpme
Eduardo-Barreto Mar 27, 2025
6915d17
🩹 Remove redundant cmake build type
Eduardo-Barreto Mar 27, 2025
5917056
🎨 Remove semicolon from namespace ending
Eduardo-Barreto Mar 27, 2025
4aa7bee
📝 Change test led to test gpio
Eduardo-Barreto Mar 27, 2025
ad95f09
📝 Update doxystrings on files
Eduardo-Barreto Mar 27, 2025
2e656c6
🔧 Remove date field from doxygen tempalte
Eduardo-Barreto Mar 27, 2025
4c64dd2
🐛 Remove test includes
Eduardo-Barreto Mar 27, 2025
3a06571
🚚 Rename docker compose to compose
Eduardo-Barreto Mar 27, 2025
7555c90
🎨 Move project configuration up
Eduardo-Barreto Mar 27, 2025
8b7d584
📝 Move ignored folders
Eduardo-Barreto Mar 27, 2025
b0892a6
⬆️ Set cpp version to 26
Eduardo-Barreto Mar 27, 2025
8f2c9ec
🔧 Update build tools
Eduardo-Barreto Mar 29, 2025
23c5e43
💚 Fix cube cmd on dockerfile
Eduardo-Barreto Mar 29, 2025
20c9261
🔨 Add devcontainer
Eduardo-Barreto Mar 29, 2025
6e581fd
📝 Add cubemx warning and docker installation
Eduardo-Barreto Mar 29, 2025
27404d1
📝 Update README
Eduardo-Barreto Mar 29, 2025
d87cf74
📝 Update warning
Eduardo-Barreto Mar 29, 2025
852f770
📝 Update windows path instructions
Eduardo-Barreto Mar 29, 2025
2d6137d
🔇 Make docs in batch mode
Eduardo-Barreto Mar 29, 2025
1394dfe
🐛 Fix CUBE_SOURCE_DIR assignment for WSL and Linux environments
Eduardo-Barreto Mar 29, 2025
4ca3db8
🔥 Remove editorconfig
Eduardo-Barreto Mar 29, 2025
4204ab0
🎨 Fix include orders
Eduardo-Barreto Mar 29, 2025
a6d880a
🎨 Fix line breaking
Eduardo-Barreto Mar 29, 2025
ebde7d4
🔧 Optimize clang-format rules
Eduardo-Barreto Mar 29, 2025
20f7740
🙈 Ignore docs folder
Eduardo-Barreto Mar 29, 2025
398e932
🔧 Optimize doxyfile
Eduardo-Barreto Mar 29, 2025
625323f
✏️ Fix typo
Eduardo-Barreto Mar 29, 2025
07ab85b
📝 Add english README
Eduardo-Barreto Mar 29, 2025
3510d44
📄 Update LICENSE
Eduardo-Barreto Mar 29, 2025
30676f7
♻️ Change githook to clang-format
Eduardo-Barreto Mar 31, 2025
36abad5
🔥 Remove gitmodules file
Eduardo-Barreto Mar 31, 2025
dd4ba09
🩹 Use standard token reference
Eduardo-Barreto Apr 3, 2025
98ecbc9
💚 Add ready for review trigger on pull request ci
Eduardo-Barreto Apr 12, 2025
0120c51
🔧🐛 Support for basic and advanced code generation
Eduardo-Barreto Apr 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 186 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
---
Language: Cpp
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: BlockIndent
AlignArrayOfStructures: None
AlignConsecutiveMacros: None
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: Consecutive
AlignConsecutiveDeclarations: Consecutive
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortEnumsOnASingleLine: false
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
AttributeMacros:
- __capability
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: true
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakInheritanceList: AfterColon
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: AfterColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Always
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: NextLine
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^<.*>'
Priority: 1
SortPriority: 1
CaseSensitive: false
- Regex: '^".*"'
Priority: 2
SortPriority: 2
CaseSensitive: false
IncludeIsMainRegex: '$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: true
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: BeforeHash
IndentExternBlock: NoIndent
IndentRequires: false
IndentWidth: 4
IndentWrappedFunctionNames: true
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PenaltyIndentedWhitespace: 0
PointerAlignment: Left
PPIndentWidth: -1
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: false
SeparateDefinitionBlocks: Always
ShortNamespaceLines: 0
SortIncludes: Never
SortJavaStaticImport: Before
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: c++20
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
...
60 changes: 60 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
Checks:
-*,
bugprone-*,
-bugprone-easily-swappable-parameters,
-bugprone-narrowing-conversions,
-bugprone-dynamic-static-initializers,
clang-*,
-clang-diagnostic-unused-command-line-argument,
cppcoreguidelines-*,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-cppcoreguidelines-avoid-do-while,
-cppcoreguidelines-pro-type-union-access,
google-*,
llvm-*,
-llvm-header-guard,
misc-*,
-misc-include-cleaner,
-misc-const-correctness,
-misc-use-anonymous-namespace,
modernize-*,
-modernize-use-nodiscard,
-modernize-use-trailing-return-type,
performance-*,
readability-*,
-readability-duplicate-include,
-readability-magic-numbers,
WarningsAsErrors: '*'
HeaderFileExtensions:
- ''
- h
- hh
- hpp
- hxx
ImplementationFileExtensions:
- c
- cc
- cpp
- cxx
HeaderFilterRegex: '(include|config)/.*.hpp'
FormatStyle: none
CheckOptions:
readability-magic-numbers.IgnorePowersOf2IntegerValues: true
readability-magic-numbers.IgnoreBitFieldsWidths: true
readability-magic-numbers.IgnoreUserDefinedLiterals: true
readability-identifier-length.MinimumVariableNameLength: 2
readability-identifier-length.IgnoredVariableNames: ^[nxyz]$
readability-identifier-length.MinimumParameterNameLength: 2
readability-identifier-length.IgnoredParameterNames: ^[nxyz]$
misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic: true
cppcoreguidelines-narrowing-conversions.WarnOnIntegerToFloatingPointNarrowingConversion: false
readability-function-cognitive-complexity.Threshold: 30
SystemHeaders: false
ExtraArgsBefore:
- '--target=arm-none-eabi'
- '--sysroot=/usr/lib/arm-none-eabi/'
- '-I/usr/lib/arm-none-eabi/include/c++/13.2.1/'
- '-I/usr/lib/arm-none-eabi/include/c++/13.2.1/arm-none-eabi/'
...
18 changes: 18 additions & 0 deletions .docker/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.git/
.github/
.vscode/
.cache/
.idea/
build/
cube/
!**.ioc

.devcontainer
.gitignore
.gitmodules
Doxyfile
LICENSE

*.yaml
*.md
*.iml
37 changes: 37 additions & 0 deletions .docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
##################################
# Base image for STM32 Template #
##################################
FROM thunderatz/stm32cubemx:6.13.0-f1 AS base

RUN apt-get update -y > /dev/null && \
apt-get upgrade -y > /dev/null && \
apt-get install -y \
gcc-arm-none-eabi \
make \
cmake \
clang-tidy \
clang-format > /dev/null\
&& apt-get clean > /dev/null

WORKDIR /project
COPY ./cube/*.ioc /project/cube/

ENV DISPLAY=:10
ARG PROJECT_NAME=stm32_project_template

RUN Xvfb :10 -ac & \
echo "config load /project/cube/${PROJECT_NAME}.ioc\nproject generate\nexit\n" > .cube && \
$CUBE_PATH/STM32CubeMX -q /project/.cube && \
rm .cube && \
pkill -f Xvfb

RUN rm /tmp/.X10-lock

RUN echo "trap 'chown -R ubuntu /project' EXIT" >> "/root/.bashrc"

###################################
# Build image for STM32 Template #
###################################
FROM base AS build

COPY . /project
30 changes: 30 additions & 0 deletions .docker/scripts/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash

BUILD_ARG=$1

rm -rf /project/build || exit 1
mkdir -p /project/build || exit 1
cd /project/build || exit 1
cmake .. -DBUILD_TYPE=Release $BUILD_ARG || exit 1

echo "Compiling main..." | sed 's/.*/\x1b[34m&\x1b[0m/'

make -j

if [ $? -eq 0 ]; then
echo "Compilation successful." | sed 's/.*/\x1b[32m&\x1b[0m/'
else
echo "Compilation failed." | sed 's/.*/\x1b[31m&\x1b[0m/'
exit 1
fi

echo "Compiling tests..." | sed 's/.*/\x1b[34m&\x1b[0m/'

make test_all -j

if [ $? -eq 0 ]; then
echo "Tests compiled successfully." | sed 's/.*/\x1b[32m&\x1b[0m/'
else
echo "Tests compilation failed." | sed 's/.*/\x1b[31m&\x1b[0m/'
exit 1
fi
14 changes: 14 additions & 0 deletions .docker/scripts/check_format.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash

FILES=$(find . \( -name "*.c" -o -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) \
-not \( -path "*/cube/*" -o -path "*/build/*" -o -path "*/libs/*" \))

for FILE in $FILES; do
clang-format -style=file -output-replacements-xml $FILE | grep "<replacement " >/dev/null
if [ $? -eq 0 ]; then
echo "Code not properly formatted (File: $FILE). Please run make format." | sed 's/.*/\x1b[31m&\x1b[0m/'
exit 1
fi
done

echo "Code properly formatted." | sed 's/.*/\x1b[32m&\x1b[0m/'
Loading