рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░? рдЯреАрдбреАрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ рдпрд╛ рдХреЗрд╡рд▓ рдмрдЧ рдХреА рддрд▓рд╛рд╢ рдФрд░ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдердХ рдЧрдП?
рдорд┐рддреНрд░, рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдпрд╣ рд▓реЗрдЦ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ Ceedling рдХреЛ рдЧреНрд░рд╣рдг / SW4STM32 рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдХреЛрдб рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░реЗред
рдХреНрдпрд╛ рдореБрдЭреЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛?рдореБрдЭреЗ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓реЗ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдирдХреЗ рд╕рддрд╣реА рдпрд╛ рдкреБрд░рд╛рдиреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдХрд╛рд░рдг рдорд┐рд▓реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реЗрдХрд┐рдВрдЧ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЧреНрд░рд╣рдг рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ
рдирд┐рд░реНрджреЗрд╢ рдмрд╣реБрдд рдХрдо рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдирд┐рд░реНрджреЗрд╢ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдпрд╣ рдЕрдВрддрд┐рдо рдкреБрдЖрд▓ рдерд╛):

рд╕реНрдерд╛рдкрдирд╛
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, OS Windows, CubeMX рдФрд░ SW4STM32ред
рдЪреЙрдХрд▓реЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВPowerShell.exe рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

MinGW рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВPowerShell.exe рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
choco install mingw
рдорд╛рдгрд┐рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВPowerShell.exe рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
choco install ruby
рдордгрд┐ рдЧреБрдард▓реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВPowerShell рдХреЛ
рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ !
PowerShell.exe рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
gem install ceedling
рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдЬрд╛рдБрдЪPowerShell.exe рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
cd /
ceedling new test_ceedling
cd test_ceedling
ceedling test:all

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг
CubeMX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВрдЯреВрд▓рдХрд┐рди / ide
SW4STM32 рдХреЗ рддрд╣рдд
CubeMX рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ редC: / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреА рдУрд░ рд╕реЗ CubeMX рдЪрд▓рд╛рдПрдВ
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрд░рдЪрдирд╛ -> рдЙрдиреНрдирдд (рдЕрдиреНрдпрдерд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рддреБрд░рдВрдд рдЗрдХрдЯреНрдард╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ)ред

рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ ceedling рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ:
cd /
ceedling new test_ceedling
рдЖрдЗрдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдФрд░ c./h рдмрдирд╛рдПрдБред рдлрд╝рд╛рдЗрд▓реЗрдВ, project.yml рдореЗрдВ рдкрде рдЬреЛрдбрд╝реЗрдВ:

рд╕реНрд░реЛрдд рд╕реНрдерд╛рди рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдПрдХ рдирдпрд╛ рдмрд┐рд▓реНрдбрд░ рдмрдирд╛рдПрдБ:

рддрд░реНрдХ -> рдкрд░реАрдХреНрд╖рдг: рд╕рднреА

рд▓рд╛рдВрдЪ
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдПрдВ:

Ceedling рдмрд┐рд▓реНрдбрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ:

Ctrl + B рджрдмрд╛рдПрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:

рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ
рдЕрдХреНрд╕рд░, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрд╛рд╣рд░реА рдШрдЯрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдкреАрдврд╝реА рдХреЗ рдЙрдкрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХрддрд╛, рд╕реАрдбрд▓рд┐рдВрдЧ рд╕реАрдореЙрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдирдХрд▓реА рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╕реНрдЯрдмреНрд╕ рдХрд╛ рдПрдХ рдЬрдирд░реЗрдЯрд░ред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп рд╣рдорд╛рд░рд╛ рдХреИрд▓рдХреБрд▓реЗрдЯрд░,
a - b
рдпрджрд┐ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
b - a
рддрдм рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдмрдЯрди рдХреНрд▓рд┐рдХ рд╕рддреНрдпрд╛рдкрди рд╕рдорд╛рд░реЛрд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд╛рдЧреВ рдирд╣реАрдВ (рд▓рд┐рдЦрд┐рдд рдирд╣реАрдВ)ред
Ctrl + B рджрдмрд╛рдПрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдмрдЯрди рдХреА рдирдХрд▓ рдмрдирд╛рдИ, рдЬрд┐рд╕рдХреЗ рд╕реНрдерд╛рди рдкрд░ UART, SPI, I2C, рдЖрджрд┐ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдм, рдХреЛрдиреЗ рдореЗрдВ рджрд╛рдИрдВ рдУрд░ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд╕рд╛рде, рдЖрдк рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
