Windows рдХреЗ рдЕрдВрддрд░реНрдЧрдд STM32CubeIDE рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ

рдкрд░рд┐рдЪрдп


рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рд╕реЗ рдЖрдк рдкрд╣рд▓реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдЬрдЯрд┐рд▓ рдбрдЧрд┐рдВрдЧ рдкрд░ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдореНрдмреЗрдбреЗрдб рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреЛрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЖрдВрддреНрд░ рдореЗрдВ рдХрд╣реАрдВ рдЧрд╣рд░рд╛ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдХреЛрдб рдХреЛ рд▓рдХреНрд╖реНрдп рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реЗ рднрд╛рд░реА рд░реВрдк рд╕реЗ рдмрд╛рдВрдзрд╛ рдЧрдпрд╛ рд╣реИ ред


рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдРрд╕реЗ рдЯреБрдХрдбрд╝реЗ рд╣реИрдВ рдЬреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд▓рд╛рдн рджреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рд╡рд┐рднрд┐рдиреНрди рдЧрдгрдирд╛ рдпрд╛ рдПрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдПрдореНрдмреЗрдбреЗрдб рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ:


  1. рд╕реАрдзреЗ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ рдпреБрджреНрдз рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рддрдХ рднреМрддрд┐рдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рдЪрдХреНрд░ рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛ред
  2. рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рддрдм рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдиреБрдХрд╕рд╛рди рд▓реЛрд╣реЗ (рдФрд░ рдЖрд╕рдкрд╛рд╕ рдХреА рджреБрдирд┐рдпрд╛) рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рд╕реАрдорд┐рдд рд╕рдЯреАрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдХрдард┐рдирд╛рдИ рднреА рд╣реИред
  3. рд╣реЛрд╕реНрдЯ рдорд╢реАрди (рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ) рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкрд░реАрдХреНрд╖рдг рд╕реНрдЯрдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рдЬрд▓реНрджреА рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЖрдкрдХреЛ рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реИ, рдЬреЛ рд╕реНрд╡рдпрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕реЗрдВрд╕рд░ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛, рдЗрди рдорд╛рдкреЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдЧреА рдФрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдпрд╣ рдкреНрд░рдХрд╛рд╢рди рдЧреНрд░рд╣рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ STM32CubeIDE рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ STM32 рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рднрд╛рд╖рд╛ C рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдпрдВ C ++ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рд╕рд┐рдЧрд╡рд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ рдЯреЗрд╕реНрдЯ рдЪрд▓реЗрдВрдЧреЗред рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ, Google рдЯреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд▓рдЧ-рдЗрди рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЙрдиреНрд╣реЗрдВ STM1 рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдЧреНрд░рд╣рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреНрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЕрдЪреНрдЫреЗ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рдЯ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдХреНрдпреВрдмреАрдб рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░реЗрдЧреА, рд╕рд┐рдЧрд╡рд┐рди рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ред


рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА


  1. Cygwin 3.0.7 x86 (рдЪреВрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг 32-рдмрд┐рдЯ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рд╣рдо 64-рдмрд┐рдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рднреА 32-рдмрд┐рдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ)
  2. STM32CubeIDE рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП 1.0.2ред
  3. Google рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ 1.8.1

Cygwin рдФрд░ STM32CubeIDE рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


Cygwin


Cygwin, x86 рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рдЪреБрдиреЗрдВ: gcc-core, g ++, binutils, automake, autoconf, cmake, libtool, gdb, makeред рдЖрдк рд╕рдВрдХреБрд▓ рдХреЗ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рднреА рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


рдкрде: ...; C: \ <path_to_Cygwin> \ Cygwin \ bin; C: \ <path_to_Cygwin> \ Cygwin \ lib
classpath: C: \ <path_to_Cygwin> \ Cygwin \ lib


STM32CubeIDE


рдкрд░реНрдпрд╛рд╡рд░рдг рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рд╕рд╛рдЗрдЧреНрд╡рд┐рди рдХреЗ рдмрд╛рдж рдХреНрдпреВрдмрд┐рдб рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпреВрдм рдореМрдЬреВрджрд╛ рд╕рд╛рдЗрдЧрд╡рд┐рди рдЯреВрд▓рдЪрд┐рди рдХреЛ рдЙрдард╛рдПрдЧрд╛ред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, x86 Cygwin рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рд╣рдореЗрдВ рдЯреВрд▓рдЪрд┐рди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╣рдо рдЗрд╕реЗ рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ "рджрд╛рддрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред


рдлрд╝рд╛рдЗрд▓> рдирдпрд╛> C / C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪреБрдиреЗрдВред C ++ рдкреНрд░рдмрдВрдзрд┐рдд рдмрд┐рд▓реНрдб рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рд╣рдо Cygwin GCC рдЯреВрд▓рдХрд┐рди рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ:



рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХреМрди рд╕реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдмрд╕ рдбрд┐рдмрдЧ рд╣реА рдХрд╛рдлреА рд╣реИред
рдЕрдм рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ> рдмрд┐рд▓реНрдб рдСрд▓ рдХреЛ рдЪреБрдирдХрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣ рднреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд░рди> рдбрд┐рдмрдЧ рдЕрд╕> рд▓реЛрдХрд▓ рд╕реА / рд╕реА ++ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдХрд░ рд╕рд┐рдЧрд╡рд┐рди рдХреЗ рддрд╣рдд рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдХреЛ рдХреНрдпреВрдмрд╛рдЗрдб рдХреЗ рдЕрдВрджрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред


рд╕реНрд░реЛрдд рдХреЛрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд▓рд╛рдЗрдиреЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрде рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рдВрдбреЛ> рд╡рд░реАрдпрддрд╛рдПрдБ рд╡рд┐рдВрдбреЛ рдореЗрдВ, C / C ++> рдбреАрдмрдЧ рдЯреИрдм рдореЗрдВ, рд╕реНрд░реЛрдд рд▓реБрдХрдЕрдк рдкрде рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдЬреЛрдбрд╝реЗрдВ: рдЬреЛрдбрд╝реЗрдВ> рдкрде рдорд╛рдирдЪрд┐рддреНрд░рдгред рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирдП рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреА рддрд░рд╣ рдХреБрдЫ рдирд╛рдо рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореМрдЬреВрдж рдбрд┐рд╕реНрдХ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:


  • \ cygdrive \ c - C: \
  • \ cygdrive \ g - G: \



рдПрдХ рд╕реБрдВрджрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ C ++ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд╕реАрдзреЗ STM32CubeIDE рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдореЗрдиреВ рд╣реЗрд▓реНрдк> рдиреНрдпреВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдлрд┐рд░ рдПрдХреНрд▓рд┐рдкреНрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЪреБрдиреЗрдВ рдФрд░ C / C ++ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд╕рдкреЛрд░реНрдЯ рдкреНрд▓рдЧрдЗрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред



Google рдЯреЗрд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдПрдБ


рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/google/googletest/tree/release-1.8.1
рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ, рд╕рд┐рдУрдЧреНрд╡рд┐рди рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ googletest-release-1.8.1 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ, рдФрд░ рдЪрд▓рд╛рдПрдВ:


cmake . make 

рд╕рдлрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рд╕реНрдерд┐рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓ ./googlemock/lib/libgtest.a рдореЗрдВ рд╣реЛрдЧреА, рдФрд░ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓реЗрдВ ./googletest/include/gtest/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдВрдЧреАред рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛)ред


STM32 рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛


STM32L476G-DISCO рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрдиред рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдмреЛрд░реНрдб рдкрд░ рджреЛ рдПрд▓рдИрдбреА рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ 00 рд╕реЗ 11. рддрдХ рдПрдХ рдмрд╛рдЗрдирд░реА рдХрд╛рдЙрдВрдЯрд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рд╣рдо рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ, .h рдФрд░ .c рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВред
рдХреНрдпреВрдм рд╡рд┐рдиреНрдпрд╛рд╕рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдкреАрдмреА 2 рдФрд░ рдкреАрдИ 8 рдкрд┐рди рдбрд┐рдЬрд┐рдЯрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдЯрд╛рдЗрдк - C ++ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ (рдореБрдЦреНрдп рдХреЛрдб рдЕрднреА рднреА рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред рд╕реА рд╕реЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдмрд╛рдж рдореЗрдВ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдЖрд░рдПрдордмреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд╛рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдФрд░ "рдХрдиреНрд╡рд░реНрдЯ рд╕реА + +" рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред


рдПрдордХреЗ рдХреЗ рддрд╣рдд рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ - рдореБрдЦреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдорд┐рд▓реЗрдВрдЧреЗ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдПрдХ рд╣реА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдмрдирд╛рдПрдВрдЧреЗ - рдПрдордХреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди (рдЖрдк рдмрд╕ рд╕реГрдЬрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХреНрдпреВрдм рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдЙрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЬреЛ рд▓реЛрд╣реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИрдВ (рдЬреЛ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ) рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЙрдирдХреЗ рдирд╛рдо рдкрд░ рдЖрд░рдПрдордмреА рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореЗрдиреВ рд╕рдВрд╕рд╛рдзрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди> рдмрд┐рд▓реНрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВред


рд╣рдорд╛рд░реЗ рдХрд╛рдЙрдВрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:


Led_counter рдХреЛрдб

(Led_counter.h):


 #ifndef LED_COUNTER_H_ #define LED_COUNTER_H_ #include <stdint.h> void Led_Counter_Init(); uint8_t Led_Counter_Get_Next(); #endif /* LED_COUNTER_H_ */ 

led_counter.cpp:


 #include "led_counter.h" static uint8_t led_cnt_state = 0; void Led_Counter_Init() { led_cnt_state = 0; } uint8_t Led_Counter_Get_Next() { if(++led_cnt_state > 3) led_cnt_state = 0; return led_cnt_state; } 

рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ (рдЧреБрдг)> C / C ++ рдЬрдирд░рд▓> рдкрд╛рдереНрд╕ рдПрдВрдб рд╕рд┐рдВрдмрд▓реНрд╕> рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдорди рдПрдВрдб рдЯреЗрд╕реНрдЯреНрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реАрдЬрд╝ рдХреЛ рд╕рд░реНрдЪ рдкрде рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдореБрдЦреНрдп рдПрд▓ рдИ рдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝реЗрдВ


рдЦреБрд╢рдмреВ рдореБрдЦреНрдп

main.c:


 тАж /* USER CODE BEGIN Includes */ #include "led_counter.h" /* USER CODE END Includes */ тАж int main(void) { тАж /* USER CODE BEGIN WHILE */ Led_Counter_Init(); uint8_t led_state = 0; while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ led_state = Led_Counter_Get_Next(); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, led_state & (1<<0)); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8, led_state & (1<<1)); HAL_Delay(500); } /* USER CODE END 3 */ тАж } 

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрд▓рдИрдбреА рдХреЛ рдЭрдкрдХреА рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред


рд▓реЗрдЦрди рдкрд░реАрдХреНрд╖рдг


рдЕрдм рд╡рд╣ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдирдпрд╛ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдПрдВ - рдЧреБрдг> C / C ++ рдмрд┐рд▓реНрдб> рд╕реЗрдЯрд┐рдВрдЧреНрд╕> рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рдХреНрдпреВрдмрд╛рдЗрдб рдЖрдкрдХреЛ рд╕рд┐рдЧреНрд╡рд┐рди рдХреЗ рддрд╣рдд рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛:



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


  • рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдЯреЗрд╕реНрдЯ / рдЗрдВрдХ, рдХреЙрдорди / рдЗрдВрдХ
  • рдкреБрд╕реНрддрдХрд╛рд▓рдп - gtest
  • рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрде - рдЯреЗрд╕реНрдЯ / рд▓реАрдм
  • рд╕реНрд░реЛрдд рд╕реНрдерд╛рди - / <prj_name> / Common рдФрд░ / <prj_name> / рдЯреЗрд╕реНрдЯ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде <prj_name> рдмрджрд▓реЗрдВ)

рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЯреЗрд╕реНрдЯ / рд▓реАрдм рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ gtest рд▓рд╛рдЗрдмреНрд░реЗрд░реА - .a рдлрд╛рдЗрд▓ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЯреЗрд╕реНрдЯ рдлрд╛рдЗрд▓ / рдЗрдВрдХ рдлреЛрд▓реНрдбрд░ рдореЗрдВ gtest рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓ рдХрд░реЗрдВред рдЯреЗрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдПрдХ рдирдИ main.cpp рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдорд╛рдирдХ рд╣реИрдВ:


main.cpp:


 /* * Unit tests main file */ #include "gtest/gtest.h" int main(int argc, char *argv[]) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЗрдЯрдЕрдк рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рд╕реВрдЪрдХ рдХрд╛ рдЖрдХрд╛рд░ рд╣рдорд╛рд░реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ 32 рдмрд┐рдЯреНрд╕ рд╣реИ (рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рднреА рдРрд╕рд╛ рд╣реА рд╣реЛ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ 32-рдмрд┐рдЯ рд╕рд╛рдЗрдЧрд╡рд┐рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ)ред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд test_platform.cpp рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:


 #include "gtest/gtest.h" TEST(PlatformTest, TestPointerSize) { //Check pointer size is 32 bit ASSERT_EQ(sizeof(void*)*8, 32U); } 

рдЕрдм, рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп C ++ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреАрдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ Google рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд╣реИрдВред


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:


рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдПрд▓рдИрдбреА рдХрд╛рдЙрдВрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВрдЧреЗред рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рдЯреЗрд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:


test_led_counter.cpp
 #include "gtest/gtest.h" extern "C" { #include "led_counter.h" } // Test fixture class LedCounterTest: public ::testing::Test { protected: void SetUp() { Led_Counter_Init(); } }; // Check initial value TEST_F(LedCounterTest, TestInitialValue) { Led_Counter_Init(); ASSERT_EQ(Led_Counter_Get_Next(), 1); } // Check how value is incremented TEST_F(LedCounterTest, TestIncrementValue) { Led_Counter_Init(); unsigned int val = Led_Counter_Get_Next(); for(int i=0;i<1;i++) { ASSERT_EQ(Led_Counter_Get_Next(), ++val); } } // Check how value return to 0 after 3 TEST_F(LedCounterTest, TestZeroCrossing) { Led_Counter_Init(); for(int i=0;i<3;i++) { Led_Counter_Get_Next(); } ASSERT_EQ(Led_Counter_Get_Next(), 0); } 

рдПрдХ рд╕реБрдВрджрд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░рди> рдбреАрдмрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдиреВ рдореЗрдВ рдПрдХ рдирдпрд╛ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реНрдерд╛рдкрд┐рдд рдкреНрд▓рдЧрдЗрди рдЖрдкрдХреЛ рдЯрд╛рдЗрдк рд╕реА / рд╕реА ++ рдпреВрдирд┐рдЯ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рдмрдирд╛рдПрдВ, рд░рди рдЯреЗрд╕реНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП "рдЯреЗрд╕реНрдЯ" рдЕрд╕реЗрдВрдмрд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдЯреИрдм рдкрд░ "рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд░реЛрдХ" рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╡рд┐рдВрдбреЛ> рд╢реЛ рд╡реНрдпреВ> рдЕрдиреНрдп> C / C ++> C / C ++ рдпреВрдирд┐рдЯ рдореЗрдВ рдЪреБрдиреЗрдВред



рд╣реЛ рдЧрдпрд╛! рдЕрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд▓рдХреНрд╖реНрдп рдПрдордХреЗ рдХреЗ рддрд╣рдд рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдм рдЖрдк рд░рди рдЯреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд╡рддрдГ x86 рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА, рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдПрдЧрд╛ред


рд╕рд╛рд╣рд┐рддреНрдп


  1. рдЬреЗред рдЧреНрд░реЗрдирд┐рдВрдЧред рдПрдВрдмреЗрдбреЗрдб рд╕реА рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ-рдкреНрд░реЗрд░рд┐рдд рд╡рд┐рдХрд╛рд╕ - рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЯреАрдбреАрдбреА рдкрджреНрдзрддрд┐ рдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдореМрд▓рд┐рдХ рдХрд╛рдоред
  2. https://uncannier.com/unit-testing-of-embedded-firmware-part-1-software-confucius/ - рдЯреЗрдХреНрд╕рд╛рд╕ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреНрд╕ рдХреЛрдб рдХрдВрдкреЛрдЬрд░ рд╕реНрдЯреВрдбрд┐рдпреЛ, рдХреИрдкреНрдкреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдпреВрдирд┐рдЯ-рдкрд░реАрдХреНрд╖рдг x86 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛрдб
  3. http://blog.atollic.com/why-running-your-embedded-arm-cortex-code-on-a-host-pc-is-a-good-thing - рдХреНрдпреЛрдВ рдпрд╣ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдкрд░ рдПрдХ рд▓реЗрдЦ рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП

Source: https://habr.com/ru/post/hi469367/


All Articles