рд▓рд╛рдЗрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЛрдмреЛрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ, рдпрд╛ STM32 рдХреЗ рд╕рд╛рде рд╕рднреА рд░реЗрдХ рдХреЛ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдП

рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░!

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

рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рд░реЛрдмреЛрдЯреЛрдВ рдХреА рджреМрдбрд╝ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╢реБрд░реБрдЖрддреА рд░реЛрдмреЛрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдкрд░реАрдХреНрд╖рд╛ рд╣реИред рд▓рдЧрднрдЧ рд╕рднреА рдХреНрд╖реЗрддреНрд░реАрдп рдФрд░ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ рдпрд╣ рджрд┐рд╢рд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд░реЛрдмреЛрдЯ рдмрдирд╛рдХрд░ рдЖрдк рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рднрд╛рдЧ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рдкрд╣рд▓реЗ рд╡рд░реНрд╖ рдореЗрдВ, рдПрд▓рдИрдбреА рдХреЗ рдкрд╣рд▓реЗ рдкрд▓рдХ рдЭрдкрдХрдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдЕрдЧрд▓рд╛ рдХрд╛рд░реНрдп рдерд╛ред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рд░реВрдкрдг


рдХреЛрдИ рднреА рд╡рд┐рдХрд╛рд╕ рддрдХрдиреАрдХреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░реЛрдмреЛрдлрд┐рдирд┐рд╕реНрдЯ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдирд┐рдпрдореЛрдВ рдХреЛ рдЯреАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рд╣рдо рдЖрдпрд╛рдореЛрдВ (25x25x25 рд╕реЗрдореА рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ) рдФрд░ рд░реЛрдмреЛрдЯ рдХреЗ рд╡рдЬрди (1 рдХрд┐рд▓реЛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЯреНрд░реИрдХ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЗрд╕рдХреА рдЪреМрдбрд╝рд╛рдИ 1.5 рд╕реЗрдореА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЯреНрд░реИрдХ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдереНрд░реЗрд╢реЛрд▓реНрдб рдиреНрдпреВрдирддрдо рд╕рдордп рдЧреБрдЬрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ (60 рд╕реЗрдХрдВрдб)ред )

рдХрд╛рд░реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╣рдореЗрдВ рдПрдХ рд░реЛрдмреЛрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдиреНрдпреВрдирддрдо рд╕рдордп рдореЗрдВ рд╢реБрд░реВ рд╕реЗ рдЕрдВрдд рддрдХ рдЗрд╕рдХреЗ рд╕рд╛рде рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдВрдХрд▓реНрдкрдирд╛ рд░рдЪрдирд╛


рд░реЛрдмреЛрдЯ рдХрд╛ рдореВрд▓ STM32F103C8T6 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╣реИ, рдпрд╣ QRE1113 рдСрдкреНрдЯрд┐рдХрд▓ рд╕реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░реИрдХ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ A3906 рдЪрд╛рд▓рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЬрдиреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╕реЗрдВрд╕рд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрд▓рдИрдбреА рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╣реА рд╕реЗрдВрд╕рд░ рдмреНрд▓реИрдХ рд▓рд╛рдЗрди рдХреЛ "рджреЗрдЦрддрд╛ рд╣реИ", рдПрд▓рдИрдбреА рд▓рд╛рдЗрдЯ рдЕрдк рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╢рдХреНрддрд┐ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, 3.7 рд╡реА рдХреЗ рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реА-рдкреЛ рдкреНрд░рдХрд╛рд░ 18650 рдмреИрдЯрд░реА рдФрд░ рдПрдХ рдЪрд╛рд░реНрдЬ рдЪрд┐рдк LTC4054ES5 рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдореЛрдЯрд░реНрд╕ рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдХрдо рд╕реЗ рдХрдо 6 рд╡реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рддрд░реНрдХ рднрд╛рдЧ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LM2577 рдбреАрд╕реА-рдбреАрд╕реА рдЪрд░рдг-рдЕрдк рд╡реЛрд▓реНрдЯреЗрдЬ рдХрдирд╡рд░реНрдЯрд░ рдФрд░ LM1117 рд░реИрдЦрд┐рдХ 3.3 V рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред

рдЫрд╡рд┐

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

рдПрдХ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╕реНрд╡рдпрдВ рд╕реЗрдВрд╕рд░ рдореЗрдВ рдереА, 10 рд╕реЗрдВрд╕рд░ 4 рдореЗрдВ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЗрдВ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреА - рддреАрди рд╕реВрдЪрдХ рдПрд▓рдИрдмреА рдкреАрдмреА 3, рдкреАрдмреА 4 рдФрд░ рдкреАрдП 15 рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдПред рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЧреИрд░-рдХрд╛рдордХрд╛рдЬреА рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреА рд╢реБрд░реВрдЖрдд рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╣рд░ рдЬрдЧрд╣ рдкреБрд╢ рдкреБрд▓, 10 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдФрд░ рдШрдбрд╝реА рд╕рдХреНрд╖рдо рдереАред рдЖрд╕реНрдЯрд╕реАрд▓реЛрдЧреНрд░рд╛рдо рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдПрдХ рдкрд┐рди рдХреЛ рдкреНрд▓рд╕ рдореЗрдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рднреА рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рд╣реБрдЖ, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЬрд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдбреЗрдЯрд╛рд╢реАрдЯ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдПрдХ рдЕрдЬреАрдм рд╕рдВрдпреЛрдЧ рд╕реЗ, рдЗрди рдкрд┐рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ JTAG рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ SWD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдмрджрддрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдореИрдВрдиреЗ JTAG рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдорд┐рд▓реА (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред

рдорд┐рдиреА рдирд┐рд╖реНрдХрд░реНрд╖, рд╕рднреА рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕рд╣реА рдкреЛрд╖рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдмрд╛рдж рдореЗрдВ рдЬрд▓рд╛ рд╣реБрдЖ рдХреБрдЫ рди рд╕рдордЭреЗрдВ рдпрд╛ рдпрд╣ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд╛рдо рди рдХрд░реЗред

рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреНрдпрд╛ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ


рдореИрдВрдиреЗ рдЪрд╛рд░реНрдЬ рдЪрд┐рдк рд▓рдЧрд╛рдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рд░реНрд╡рд╣рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдкреНрд▓рд╕ 2020 рдореЗрдВ рдореИрдВрдиреЗ рдЯрд╛рдЗрдк рд╕реА рдХреЗ рдмрдЬрд╛рдп рдорд┐рдиреА рдпреВрдПрд╕рдмреА рд▓рдЧрд╛рдпрд╛ред рдореИрдВ рдмреИрдЯрд░реА рдЪрд╛рд░реНрдЬ рдкрд░ рдирдЬрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреЛрдИ рдПрдбреАрд╕реА рдкрд┐рди рдирд╣реАрдВ рдмрдЪрд╛ рдерд╛ред рдбреНрд░рд╛рдЗрд╡рд░ рдЪреБрдирддреЗ рд╕рдордп, рдореИрдВрдиреЗ 6 V рдФрд░ 700 mA рдЗрдВрдЬрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрдзрд┐рдХрддрдо рд╡реЛрд▓реНрдЯреЗрдЬ 9 V рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ 12 V рдХреЛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред

рдкреАрд╕реАрдмреА рдбрд┐рдЬрд╛рдЗрди


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

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

рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдмрдЬрд╛рдп рдмреЛрд░реНрдб рдХреЗ рдЦрд╛рд▓реА рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдХрд╛рдЯрдХрд░, рд░реЛрдмреЛрдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рднреНрдп рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред

рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рддрддреНрд╡реЛрдВ рдХреЗ рдХрд╛рд░рдг рдмреЛрд░реНрдб рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ред рдХреБрд▓ 2 рдкрд░рддреЗрдВ рдиреНрдпреВрдирддрдо рдЯреНрд░реИрдХ рдореЛрдЯрд╛рдИ 0.25 рдорд┐рдореАред рдЧреЗрд░рдмрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдорджрд░рдмреЛрд░реНрдб рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдореБрдЦреМрдЯрд╛ рдХреЗ рд╕рдлреЗрдж рд░рдВрдЧ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдЗрд╕реЗ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛, рдлрд┐рд░ рдореБрдЭреЗ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реБрдИред

рдЫрд╡рд┐

рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдмреЛрд░реНрдб рдХрд╛ рдПрдХ 3 рдбреА рджреГрд╢реНрдпред рд▓рд╛рдЗрд╡ рдлреЛрдЯреЛ рдЕрдВрдд рдореЗрдВ рд╣реЛрдЧрд╛ред

рдЫрд╡рд┐

рдмреЛрд░реНрдб рдореЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ


рдореИрдВрдиреЗ рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреЛ рдмреИрдЯрд░реА рдХреЗ рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдорд╛рдорд▓реЗ рдХреЗ рдХрд░реАрдм рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдорд┐рд▓рд╛рдк рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛, рдФрд░ рдорд┐рд▓рд╛рдк рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдореБрд╢реНрдХрд┐рд▓ред рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрдиреЗрдХреНрдЯрд░ SWD, UART рдФрд░ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рдкрд┐рдирдЖрдЙрдЯ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛, рдирддреАрдЬрддрди, рдореБрдЭреЗ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдШрдЯрдХреЛрдВ рдХреА рдЦрд░реАрдж


рд╣рд░ рдЪреАрдЬ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рди рдХреА рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рдЙрдЪреНрдЪрддрдо рд╕рд╛рдкреЗрдХреНрд╖ рд▓рд╛рдЧрддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЖрдк рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЙрдЪрд┐рдд рд╕реАрдорд╛ рдХреЗ рднреАрддрд░, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рд╕реНрдЯреЛрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 4.5 рдЧреБрдирд╛ рд╕рд╕реНрддрд╛ Aliexpress рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рд╕реЗрдВрд╕рд░ рдХрд╛ рдСрд░реНрдбрд░ рдХрд░рдирд╛, рдореИрдВрдиреЗ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ 40% рдмрджрд▓ рдЧрдПред рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рджреВрд╕рд░реА рдУрд░, рдореИрдВ 460 рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП LM2577 рдЪрд┐рдк рдЦрд░реАрджрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрдмрдХрд┐ рд╕рднреА рд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреА рд▓рд╛рдЧрдд 100 рд░реВрдмрд▓ рд╣реИред рдореИрдВрдиреЗ рдЕрд▓реА рдХреЛ рднрд╛рдЧреЛрдВ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛, рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреЛрд░ рдореЗрдВ рдПрдХ рдФрд░ рд╣рд┐рд╕реНрд╕рд╛ рджреЗрдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ред

рдпрд╣рд╛рдБ рдореЗрд░реЗ рдЕрдиреБрдорд╛рдирд┐рдд рдШрдЯрдХ рд▓рд╛рдЧрдд рд╣реИрдВ:

  1. рдЗрдВрдЬрди рдФрд░ рдкрд╣рд┐рдпреЗ - 800 рд░реВрдмрд▓;
  2. рдмреИрдЯрд░реА рдФрд░ рдорд╛рдорд▓рд╛ - 400 рд░реВрдмрд▓;
  3. рдЪрд╛рд░реНрдЬрд░ - 300 рд░реВрдмрд▓;
  4. рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ - 200 рд░реВрдмрд▓;
  5. рд╕реНрдЯреЗрдмрд▓рд╛рдЗрдЬрд░реНрд╕ - 400 рд░реВрдмрд▓;
  6. рдбрд┐рд▓реАрд╡рд░реА 2400/10 = 240 рд░реВрдмрд▓ рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рдХреЗ рд╕рд╛рде рдлреАрд╕ 10 рдпреВрдирд┐рдЯ;
  7. рдмрд╛рдХреА рд╣рд╛рд░реНрдиреЗрд╕ - 150 рд░реВрдмрд▓ред

рдХреБрд▓: 4650 рд░реВрдмрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд▓рд╛рдЧрдд, рдпрд╛ 2490 рдпрджрд┐ рдЖрдк рд╢реЗрд╖ рдиреМ рдЕрдкреНрд░рдпреБрдХреНрдд рдмреЛрд░реНрдбреЛрдВ рдХреА рдХреАрдордд рдШрдЯрд╛рддреЗ рд╣реИрдВред

UPD: рдореИрдВрдиреЗ рдмреЛрд░реНрдб рдФрд░ рдШрдЯрдХ рд╕реНрдерд╛рдкрдирд╛ рдХреА рд▓рд╛рдЧрдд рдФрд░ 10 рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рдмреИрдЪ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдХреАрдордд рдмрдврд╝рдХрд░ 16,000 рд░реВрдмрд▓ рд╣реЛ рдЧрдИред рдРрд╕реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рд╕рдордп рд╣реИред

рдХрд▓рди рд╡рд┐рдзрд┐


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

рдЫрд╡рд┐

рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо
рдЫрд╡рд┐

рдЫрд╡рд┐

рдЫрд╡рд┐

рдЫрд╡рд┐

рдЫрд╡рд┐

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

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ


рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдЖрдкрдХреЛ рдПрдХ рдЯреИрдореНрдмреЛрд░рд┐рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╣рд░рд╛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдЯреЙрд▓рд┐рдХ рдЯреНрд░реВ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХреЗрд╡рд▓ CMSIS рдФрд░ FreeRTOS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред FreeRTOS рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рд╕рдордп, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рд╛, рддрдп 1, 63 рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдпрд╛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдХ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореЗрд░реЗ рд╣рд╛рде рдХрд╛ рд╕реНрддрд░ ... рдЕрднреВрддрдкреВрд░реНрд╡ рдКрдВрдЪрд╛рдЗрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рдФрд░ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХрд╛ рд╕рдордп рдерд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЦреБрджрд╛рдИ рд╢реБрд░реВ рдХрд░ рджреА рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдореБрдЭреЗ рдХрдИ рдорджрдж рдорд┐рд▓реАрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореЗрд░реА рдорджрдж рдХреА (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред рдирддреАрдЬрддрди, рдореИрдВ рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдХреЛ рд╣рд░рд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдФрд░ рдЕрдм рддрдХ рдореИрдВрдиреЗ рдЗрд╕реЗ 0% рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдХрд╛рдо рдореЗрдВ рд╕рдм рдХреБрдЫ рднрд░ рджрд┐рдпрд╛ред

рдпрд╣рд╛рдБ рд╡реАрдбрд┐рдпреЛ рдФрд░ рд▓реЗрдЦ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдорджрдж рдХреА ред

рд╕рдордп рдкреНрд░рдгрд╛рд▓реА, рдпрд╣рд╛рдВ рдореБрдЭреЗ рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреАрдПрд▓рдПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 48 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдЖрд╡реГрддреНрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ 24 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ (/ 2) рдХреЛ рдПрдорд╕реАрдУ рдХреЗ рдкреИрд░ рдкрд░ рджреЗрдЦрд╛, рдирд╣реАрдВ, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ 22-25 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХрд╛ рд╕рдВрдХреЗрдд рджреВрд░ рд╕реЗ рд╕рд╛рдЗрди рдЬреИрд╕рд╛ рджрд┐рдЦ рд░рд╣рд╛ рдерд╛ред рдЙрд╕реА рд╕рдордп, рдореИрдВрдиреЗ FreeRTOS рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ 48 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рджреЗрд░реА рд╕реЗ 500 рдПрдордПрд╕ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдпрд╛, рджреЗрдЦрд╛ рдХрд┐ рдореЗрд░рд╛ 500 рдПрдордПрд╕ 300 рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛, рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдХреНрд╖реНрдп 500 рдПрдордПрд╕ рд╣реА рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрдм рдЖрдВрддрд░рд┐рдХ рдЬрдирд░реЗрдЯрд░ рд╕реЗ 8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ, рдФрд░ рдЖрд╡реГрддреНрддрд┐ рдореВрд▓реНрдп рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред FreeRTOS рдХреЙрдиреНрдлрд┐рдЧрд░ рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрд╕рд░ рдирд╣реАрдВ рдкрдбрд╝рд╛, 1 Hz рдФрд░ 48 GHz рджреЛрдиреЛрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдореИрдВрдиреЗ 48 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдФрд░ 300 рдПрдордПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рдЯреНрд░реВ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рдлрд╝рд╛рдЗрд▓ рдкрдереЛрдВ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ред

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд JTAG рдФрд░ рдПрд▓ рдИ рдбреА рдХреА рд╕рдорд╕реНрдпрд╛, рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкрд┐рди рдкреАрдмреА 3, рдкреАрдмреА 4 рдФрд░ рдкреАрдП 15 рддрдХ рдкрд╣реБрдВрдЪ рдореБрдХреНрдд рд╣реЛ рдЬрд╛рдПрдЧреАред

AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рд▓рдЧрднрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдвреЗрд░ рд╕рд╛рд░рд╛ рдХреЛрдб
1. ;

void RCC_Init(void) {						// Quartz 16 MHz

	RCC->CFGR |= RCC_CFGR_PLLXTPRE;	// PLLXTPRE set divider (/2) = 8 MHz

	RCC->CR |= RCC_CR_HSEON;			// On HSE
	while (!(RCC->CR & RCC_CR_HSERDY)) {
	};

	RCC->CFGR |= (RCC_CFGR_PLLMULL6);     // Setup PLLMULL set multiplier (x6) = 48 MHz

	RCC->CFGR |= RCC_CFGR_PLLSRC;		// PLLSRC set HSE

	RCC->CR |= RCC_CR_PLLON;			// ON PLL
	while (!(RCC->CR & RCC_CR_PLLRDY)) {
	};

	FLASH->ACR &= ~FLASH_ACR_LATENCY;	// Setup FLASH
	FLASH->ACR |= FLASH_ACR_LATENCY_1;

	RCC->CFGR |= RCC_CFGR_HPRE_DIV1; 	// Set not divider (AHB) = 48 MHz
	RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; 	// Set divider (/2) (APB1) = 24 MHz
	RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; 	// Set not divider (APB2) = 48 MHz

	RCC->CFGR &= ~RCC_CFGR_SW; 		// Setup SW, select PLL
	RCC->CFGR |= RCC_CFGR_SW_PLL;

//	RCC->CFGR |= RCC_CFGR_MCO_SYSCLK;

}

2. , , , Push Pull;


void GPIO_Init(void) {

	RCC->APB2ENR |=	(RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN); // Enable clock portA, portB and Alternative function

	AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;	// Disable JTAG for pins B3,B4 and A15

	//---------------LED: (B3 to B9; A11, A12, A15); Output mode: Push Pull, max 10 MHz---------------//

	GPIOB->CRL &= ~(GPIO_CRL_CNF3 | GPIO_CRL_MODE3);	// Setup B3 pins PP, 10MHz
	GPIOB->CRL |= GPIO_CRL_MODE3_0;

	GPIOB->CRL &= ~(GPIO_CRL_CNF4 | GPIO_CRL_MODE4);	// Setup B3 pins PP, 10MHz
	GPIOB->CRL |= GPIO_CRL_MODE4_0;

	GPIOB->CRL &= ~(GPIO_CRL_CNF5 | GPIO_CRL_MODE5);	// Setup B4 pins PP, 10MHz
	GPIOB->CRL |= GPIO_CRL_MODE5_0;

	GPIOB->CRL &= ~(GPIO_CRL_CNF6 | GPIO_CRL_MODE6);	// Setup B5 pins PP, 10MHz
	GPIOB->CRL |= GPIO_CRL_MODE6_0;

	GPIOB->CRL &= ~(GPIO_CRL_CNF7 | GPIO_CRL_MODE7);	// Setup B6 pins PP, 10MHz
	GPIOB->CRL |= GPIO_CRL_MODE7_0;

	GPIOB->CRH &= ~(GPIO_CRH_CNF8 | GPIO_CRH_MODE8);	// Setup B7 pins PP, 10MHz
	GPIOB->CRH |= GPIO_CRH_MODE8_0;

	GPIOB->CRH &= ~(GPIO_CRH_CNF9 | GPIO_CRH_MODE9);	// Setup B8 pins PP, 10MHz
	GPIOB->CRH |= GPIO_CRH_MODE9_0;

	GPIOA->CRH &= ~(GPIO_CRH_CNF11 | GPIO_CRH_MODE11);	// Setup A11 pins PP, 10MHz
	GPIOA->CRH |= GPIO_CRH_MODE11_0;

	GPIOA->CRH &= ~(GPIO_CRH_CNF12 | GPIO_CRH_MODE12);	// Setup A12 pins PP, 10MHz
	GPIOA->CRH |= GPIO_CRH_MODE12_0;

	GPIOA->CRH &= ~(GPIO_CRH_CNF15 | GPIO_CRH_MODE15);	// Setup A15 pins PP, 10MHz
	GPIOA->CRH |= GPIO_CRH_MODE15_0;

	//--Motors: (A8 to A10; B12 to B15); Output and input (B12, B13) mode: Alternative function, PWM - Push Pull, max 10 MHz--//

	GPIOB->CRH &= ~(GPIO_CRH_CNF12 | GPIO_CRH_MODE12);		// Setup B12 pins analog input

	GPIOB->CRH &= ~(GPIO_CRH_CNF13 | GPIO_CRH_MODE13);		// Setup B13 pins analog input

	GPIOB->CRH &= ~(GPIO_CRH_CNF14   | GPIO_CRH_MODE14);	// Setup B14 pins PP, 10MHz
	GPIOB->CRH |=  GPIO_CRH_MODE14_0;

	GPIOB->CRH &= ~(GPIO_CRH_CNF15   | GPIO_CRH_MODE15);	// Setup B15 pins PP, AF, 10MHz
	GPIOB->CRH |=  (GPIO_CRH_CNF15_1 | GPIO_CRH_MODE15_0);

	GPIOA->CRH &= ~(GPIO_CRH_CNF8 | GPIO_CRH_MODE8);		// Setup A10 pins PP, 10MHz
	GPIOA->CRH |= GPIO_CRH_MODE8_0;

	GPIOA->CRH &= ~(GPIO_CRH_CNF9    | GPIO_CRH_MODE9);		// Setup A9 pins PP, AF, 10MHz
	GPIOA->CRH |=  (GPIO_CRH_CNF9_1  | GPIO_CRH_MODE9_0);

	GPIOA->CRH &= ~(GPIO_CRH_CNF10 | GPIO_CRH_MODE10);		// Setup A10 pins PP, 10MHz
	GPIOA->CRH |= GPIO_CRH_MODE10_0;

	//--UART3: (B10 - TX; B11 - RX); Output mode: Alternative function, UART - Push Pull, max 10 MHz--//

	GPIOB->CRH &= ~(GPIO_CRH_CNF10   | GPIO_CRH_MODE10);	// Setup B10 pins PP, AF, 10MHz
	GPIOB->CRH |=  (GPIO_CRH_CNF10_1 | GPIO_CRH_MODE10_0);

	GPIOB->CRH &= ~(GPIO_CRH_CNF11   | GPIO_CRH_MODE11);	// Setup B11 pins PP, AF, 10MHz
	GPIOB->CRH |=  (GPIO_CRH_CNF11_1 | GPIO_CRH_MODE11_0);

	//--Optical sensors: (B0, B1, A0 - A7); Input mode: Analog--//

	GPIOB->CRL &= ~(GPIO_CRL_CNF0 | GPIO_CRL_MODE0);	// Setup B0 pins analog input
	GPIOB->CRL &= ~(GPIO_CRL_CNF1 | GPIO_CRL_MODE1);	// Setup B1 pins analog input
	GPIOA->CRL &= ~(GPIO_CRL_CNF0 | GPIO_CRL_MODE0);	// Setup A0 pins analog input
	GPIOA->CRL &= ~(GPIO_CRL_CNF1 | GPIO_CRL_MODE1);	// Setup A1 pins analog input
	GPIOA->CRL &= ~(GPIO_CRL_CNF2 | GPIO_CRL_MODE2);	// Setup A2 pins analog input
	GPIOA->CRL &= ~(GPIO_CRL_CNF3 | GPIO_CRL_MODE3);	// Setup A3 pins analog input
	GPIOA->CRL &= ~(GPIO_CRL_CNF4 | GPIO_CRL_MODE4);	// Setup A4 pins analog input
	GPIOA->CRL &= ~(GPIO_CRL_CNF5 | GPIO_CRL_MODE5);	// Setup A5 pins analog input
	GPIOA->CRL &= ~(GPIO_CRL_CNF6 | GPIO_CRL_MODE6);	// Setup A6 pins analog input
	GPIOA->CRL &= ~(GPIO_CRL_CNF7 | GPIO_CRL_MODE7);	// Setup A7 pins analog input

}

3. DMA, ;


extern uint16_t adc_buf[10];

void ADC_Init(void) {

	 RCC->AHBENR |= RCC_AHBENR_DMA1EN;
	 DMA1_Channel1->CPAR = (uint32_t) &ADC1->DR;		//   
	 DMA1_Channel1->CMAR = (unsigned int) adc_buf;   	//    

	 DMA1_Channel1->CNDTR = 10;			  				//    
	 DMA1_Channel1->CCR &= ~DMA_CCR_EN;			   		//   
	 DMA1_Channel1->CCR |= DMA_CCR_MSIZE_0;		  		//   16 bit
	 DMA1_Channel1->CCR |= DMA_CCR_PSIZE_0;		 		//   16 bit
	 DMA1_Channel1->CCR |= DMA_CCR_MINC;			  	// memory increment mode
	 DMA1_Channel1->CCR |= DMA_CCR_CIRC;
	 DMA1_Channel1->CCR |= DMA_CCR_TCIE;				//    
	 DMA1_Channel1->CCR |= DMA_CCR_EN;				  	//  
	 NVIC_SetPriority(DMA1_Channel1_IRQn, 10);
	 NVIC_EnableIRQ(DMA1_Channel1_IRQn);

	 RCC->CFGR &= ~RCC_CFGR_ADCPRE;
	 RCC->CFGR |= RCC_CFGR_ADCPRE_DIV8;
	 RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;

	 ADC1->SQR3 = 0;			// 1
	 ADC1->SQR3 |= 1 << 5;		// 2     
	 ADC1->SQR3 |= 2 << 10;		// 3
	 ADC1->SQR3 |= 3 << 15;		// 4
	 ADC1->SQR3 |= 4 << 20;		// 5
	 ADC1->SQR3 |= 5 << 25;		// 6
	 ADC1->SQR2 = 6;			// 7
	 ADC1->SQR2 |= 7 << 5;		// 8
	 ADC1->SQR2 |= 8 << 10;		// 9
	 ADC1->SQR2 |= 9 << 15;		// 10

	 ADC1->CR2 = ADC_CR2_EXTSEL_0 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_2
	 | ADC_CR2_EXTTRIG;
	 ADC1->SMPR1 = 0;					 		//   
	 ADC1->SMPR2 = 0;					 		//
	 ADC1->SMPR2 |= (uint32_t) (6 << (0 * 3)); 	// 0,   6 
	 ADC1->SMPR2 |= (uint32_t) (6 << (1 * 3)); 	// 1,   6 
	 ADC1->SMPR2 |= (uint32_t) (6 << (2 * 3)); 	// 2,   6 
	 ADC1->SMPR2 |= (uint32_t) (6 << (3 * 3)); 	// 3,   6 
	 ADC1->SMPR2 |= (uint32_t) (6 << (4 * 3)); 	// 4,   6 
	 ADC1->SMPR2 |= (uint32_t) (6 << (5 * 3)); 	// 5,   6 
	 ADC1->SMPR2 |= (uint32_t) (6 << (6 * 3)); 	// 6,   6 
	 ADC1->SMPR2 |= (uint32_t) (6 << (7 * 3)); 	// 7,   6 
	 ADC1->SMPR2 |= (uint32_t) (6 << (8 * 3)); 	// 8,   6 
	 ADC1->SMPR2 |= (uint32_t) (6 << (9 * 3)); 	// 9,   6 
	 ADC1->SMPR1 |= (uint32_t) (6 << (0 * 3)); 	// 10,   6 

	 ADC1->CR2 |= ADC_CR2_ADON;

	 ADC1->CR2 |= ADC_CR2_RSTCAL;
	 while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_RSTCAL) {
	 }

	 ADC1->CR2 |= ADC_CR2_CAL;

	 while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_CAL) {
	 }

	 ADC1->SQR1 |= 9 << 20;						//  
	 ADC1->CR1 |= ADC_CR1_SCAN;					//  
	 ADC1->CR2 |= ADC_CR2_DMA;				  	// DMA on
	 // ADC1->CR2 |= ADC_CR2_CONT;

	 //  ADC1->CR2 |= ADC_CR2_SWSTART;
	 ADC1->CR2 |= ADC_CR2_ADON;

}

4. , ;

void TIM1_Init(void) {

	/*************** Enable TIM1 (CH1) ***************/
	RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;
	TIM1->CCER = 0;										//  CCER ( )
	TIM1->ARR = 1000; 									//  ,     
	TIM1->PSC = 48 - 1;                					// 
	TIM1->BDTR |= TIM_BDTR_MOE;     					//     

	TIM1->CCR2 = 0; 									//       (  0  TIM1->ARR)
	TIM1->CCMR1 |= TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2; //     
	TIM1->CCER |= (TIM_CCER_CC2P |TIM_CCER_CC2E); 		//        
														//   -   3
	TIM1->CCR3 = 0; 									//       (  0  TIM1->ARR)
	TIM1->CCMR2 |= TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2; //     
	TIM1->CCER |= TIM_CCER_CC3NE; 						//        
	TIM1->CCER &= ~TIM_CCER_CC3NP;

	TIM1->CR1 |= TIM_CR1_CEN;
}

5. UART , ;

void UART3_Init(void) {

	RCC->APB1ENR |= RCC_APB1ENR_USART3EN;

	USART3->BRR = 0xD0;						// Speed = 115200; (24 000 000 + (115200 / 2)) / 115200 = 208 -> 0xD0

	USART3->CR1 |= USART_CR1_TE | USART_CR1_RE | USART_CR1_UE;

//	USART3->CR1 |= USART_CR1_RXNEIE;
//	NVIC_EnableIRQ(USART3_IRQn);
}

void UART3_Send(char chr) {
	while (!(USART3->SR & USART_SR_TC))
		;
	USART3->DR = chr;
}

void UART3_Send_String(char* str) {
	uint8_t i = 0;

	while (str[i])
		UART3_Send(str[i++]);
}

void UART3_Send_Number_Float(float data){

	char str[100];

	char *tmpSign = (data < 0) ? "-" : "";
	float tmpVal = (data < 0) ? -data : data;

	int tmpInt1 = tmpVal;                  // Get the integer (678).
	float tmpFrac = tmpVal - tmpInt1;      // Get fraction (0.0123).
	int tmpInt2 = trunc(tmpFrac * 10);  // Turn into integer (123).	int tmpInt2 = trunc(tmpFrac * 10000)

	// Print as parts, note that you need 0-padding for fractional bit.

	sprintf (str, "%s%d.%01d", tmpSign, tmpInt1, tmpInt2);

	UART3_Send_String(str);
}

6. FreeRtos config

/*
 * FreeRTOS Kernel V10.3.1
 * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in
 * the Software without restriction, including without limitation the rights to
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 * the Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * http://www.FreeRTOS.org
 * http://aws.amazon.com/freertos
 *
 * 1 tab == 4 spaces!
 */

#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H

/* Library includes. */
//#include "stm32f10x_lib.h"
/*-----------------------------------------------------------
 * Application specific definitions.
 *
 * These definitions should be adjusted for your particular hardware and
 * application requirements.
 *
 * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
 * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. 
 *
 * See http://www.freertos.org/a00110.html
 *----------------------------------------------------------*/

#define vPortSVCHandler SVC_Handler		// fix problem
#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
#define xPortSysTickHandler SysTick_Handler


#define configUSE_PREEMPTION		1
#define configUSE_IDLE_HOOK			0
#define configUSE_TICK_HOOK			1
#define configCPU_CLOCK_HZ			( ( unsigned long ) 48000000 )
#define configTICK_RATE_HZ			( ( TickType_t ) 1000 )
#define configMAX_PRIORITIES		( 5 )
#define configMINIMAL_STACK_SIZE	( ( unsigned short ) 32 )
#define configTOTAL_HEAP_SIZE		( ( size_t ) ( 17 * 1024 ) )
#define configMAX_TASK_NAME_LEN		( 16 )
#define configUSE_TRACE_FACILITY	0
#define configUSE_16_BIT_TICKS		0
#define configIDLE_SHOULD_YIELD		1
#define configUSE_MUTEXES			1

/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 		0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

/* Set the following definitions to 1 to include the API function, or zero
 to exclude the API function. */

#define INCLUDE_vTaskPrioritySet		1
#define INCLUDE_uxTaskPriorityGet		1
#define INCLUDE_vTaskDelete				1
#define INCLUDE_vTaskCleanUpResources	0
#define INCLUDE_vTaskSuspend			1
#define INCLUDE_vTaskDelayUntil			1
#define INCLUDE_vTaskDelay				1

/* This is the raw value as per the Cortex-M3 NVIC.  Values can be 255
 (lowest) to 0 (1?) (highest). */
#define configKERNEL_INTERRUPT_PRIORITY 		255
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
 See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 	191 /* equivalent to 0xb0, or priority 11. */

/* This is the value being used as per the ST library which permits 16
 priority values, 0 to 15.  This must correspond to the
 configKERNEL_INTERRUPT_PRIORITY setting.  Here 15 corresponds to the lowest
 NVIC value of 255. */
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY	15

#endif /* FREERTOS_CONFIG_H */


7. main;

#include "main.h"

void vTaskUART2(void *argument);
void vTaskConvADC(void *argument);

uint32_t Motor(int32_t which, int32_t speed, int32_t turn);

void IndicatorLED(uint32_t number, uint32_t status);


//define      typedef enum :)
#define MotorLeft		1
#define MotorRight		0
#define MoveBack		0
#define MoveForward		1
#define MaxSpeedMotor	1000

uint16_t adc_buf[10];				// Buffer DMA ADC sensors
uint16_t SensWhiteOrBlack[10];		// Buffer sensors white or black

int main(void) {

	RCC_Init();
	GPIO_Init();
	TIM1_Init();
	UART3_Init();
	ADC_Init();

	xTaskCreate(vTaskUART2, "UART", 512, NULL, 1, NULL);
	xTaskCreate(vTaskConvADC, "ADC", 128, NULL, 1, NULL);

	UART3_Send_String("Start program\r\n");

	GPIOA->BSRR |= GPIO_BSRR_BS10;	// Motor enable

	vTaskStartScheduler();

	while (1) {

	}
}
/*************************************Tasks***************************************/

void vTaskUART2(void *argument) {

	while (1) {

//-------------------Read sensors from buff DMA ADC, and print to UART3-------------//

		for (uint32_t i = 0; i <= 9; i++)
		{

			if (adc_buf[i] <= 300)		// value sens is white
			{
				IndicatorLED(i, 0);
				SensWhiteOrBlack[i] = 0;
			} else						// else value sens is black
			{
				IndicatorLED(i, 1);
				SensWhiteOrBlack[i] = 1;
			}

//			UART3_Send_Number_Float(SensWhiteOrBlack[i]);
//			UART3_Send_String("\t");
		}
///		UART3_Send_String("\r\n");

//-----------------------------------------Move-----------------------------------------//


		//----Normal mode----//
		float devMotorLeft  = 1;
		float devMotorRight = 1;
		uint32_t flagSizeBuf = 0;

		for (int32_t i = 6; i <= 9; i++)
		{
			if (SensWhiteOrBlack[i])
			{
				flagSizeBuf = 1;

				if(i == 6 && SensWhiteOrBlack[i] == 1)
				{
					devMotorRight = 0.75;
				}
				else if(i == 7 && SensWhiteOrBlack[i] == 1)
				{
					devMotorRight = 0.5;
				}
				else if(i == 8 && SensWhiteOrBlack[i] == 1)
				{
					devMotorRight = 0.25;
				}
				else if(i == 9 && SensWhiteOrBlack[i] == 1)
				{
					devMotorRight = 0.0;
				}
			}
		}

		for(int32_t i = 5; i >= 0; i--)
		{
			if(SensWhiteOrBlack[i])
			{
				flagSizeBuf = 1;

				if(i == 3 && SensWhiteOrBlack[i] == 1)
				{
					devMotorLeft = 0.75;
				}
				else if(i == 2 && SensWhiteOrBlack[i] == 1)
				{
					devMotorLeft = 0.5;
				}
				else if(i == 1 && SensWhiteOrBlack[i] == 1)
				{
					devMotorLeft = 0.25;
				}
				else if(i == 0 && SensWhiteOrBlack[i] == 1)
				{
					devMotorLeft = 0.0;
				}
			}
		}

		if(!flagSizeBuf)
		{
			devMotorLeft  = 0;
			devMotorRight = 0;
		}

		Motor(MotorRight, (int32_t)(MaxSpeedMotor * (float)devMotorRight), MoveForward);
		Motor(MotorLeft,  (int32_t)(MaxSpeedMotor * (float)devMotorLeft),  MoveForward);


/*
		if (adc_buf[0] > 1000)
		{
			Motor(MotorLeft, 500, MoveBack);
		}
		else if (adc_buf[0] <= 1000)
		{
			Motor(MotorLeft, 0, MoveForward);
		}

		if (adc_buf[9] > 1000)
		{
			Motor(MotorRight, 500, MoveBack);//Motor(0, 500, 1);	MotorRight	MoveBack
		}
		else if (adc_buf[9] <= 1000)
		{
			Motor(MotorRight, 0, MoveForward);
		}
*/

		vTaskDelay(50);
	}
}
void vTaskConvADC(void *argument) {

	while (1) {

		// just void :)

		vTaskDelay(5000);
	}

}
/**********************************Function*************************************/

void IndicatorLED(uint32_t number, uint32_t status) {

	if (number == 0 && status == 0) {
		GPIOB->BSRR |= GPIO_BSRR_BS9;
	}

	else if (number == 0 && status == 1) {
		GPIOB->BSRR |= GPIO_BSRR_BR9;
	}

	if (number == 1 && status == 0) {
		GPIOB->BSRR |= GPIO_BSRR_BS8;
	}

	else if (number == 1 && status == 1) {
		GPIOB->BSRR |= GPIO_BSRR_BR8;
	}

	if (number == 2 && status == 0) {
		GPIOB->BSRR |= GPIO_BSRR_BS7;
	}

	else if (number == 2 && status == 1) {
		GPIOB->BSRR |= GPIO_BSRR_BR7;
	}

	if (number == 3 && status == 0) {
		GPIOB->BSRR |= GPIO_BSRR_BS6;
	}

	else if (number == 3 && status == 1) {
		GPIOB->BSRR |= GPIO_BSRR_BR6;
	}

	if (number == 4 && status == 0) {
		GPIOB->BSRR |= GPIO_BSRR_BS5;
	}

	else if (number == 4 && status == 1) {
		GPIOB->BSRR |= GPIO_BSRR_BR5;
	}

	if (number == 5 && status == 0) {
		GPIOB->BSRR |= GPIO_BSRR_BS4;
	}

	else if (number == 5 && status == 1) {
		GPIOB->BSRR |= GPIO_BSRR_BR4;
	}

	if (number == 6 && status == 0) {
		GPIOB->BSRR |= GPIO_BSRR_BS3;
	}

	else if (number == 6 && status == 1) {
		GPIOB->BSRR |= GPIO_BSRR_BR3;
	}

	if (number == 7 && status == 0) {
		GPIOA->BSRR |= GPIO_BSRR_BS15;
	}

	else if (number == 7 && status == 1) {
		GPIOA->BSRR |= GPIO_BSRR_BR15;
	}

	if (number == 8 && status == 0) {
		GPIOA->BSRR |= GPIO_BSRR_BS12;
	}

	else if (number == 8 && status == 1) {
		GPIOA->BSRR |= GPIO_BSRR_BR12;
	}

	if (number == 9 && status == 0) {
		GPIOA->BSRR |= GPIO_BSRR_BS11;
	}

	else if (number == 9 && status == 1) {
		GPIOA->BSRR |= GPIO_BSRR_BR11;
	}

}

uint32_t Motor(int32_t which, int32_t speed, int32_t turn) {

	if (which == 0)	//Right motor
	{
		UART3_Send_Number_Float(speed);
		UART3_Send_String("\t");

		if (speed > 0 && speed <= 1000)
		{
			TIM1->CCR3 = speed;
			if (turn == 0) 	// back
			{
				GPIOB->BSRR |= GPIO_BSRR_BS14;
			}
			else			//forward
			{
				GPIOB->BSRR |= GPIO_BSRR_BR14;
			}
		}
		else		//disable motor
		{
			TIM1->CCR3 = 0;
			GPIOB->BSRR |= GPIO_BSRR_BR14;

		}

	}

	else if (which == 1)	//left motor
	{
		UART3_Send_Number_Float(speed);
		UART3_Send_String("\r\n");

		if (speed > 0 && speed <= 1000)
		{
			TIM1->CCR2 = speed;
			if (turn == 1) 	// back
			{
				GPIOA->BSRR |= GPIO_BSRR_BS8;
			}
			else			//forward
			{
				GPIOA->BSRR |= GPIO_BSRR_BR8;
			}
		}
		else		//disable motor
		{
			TIM1->CCR2 = 0;
			GPIOA->BSRR |= GPIO_BSRR_BS8;

		}

	}



	return 0;
}

/*************************************IRQ***************************************/
/*
 void USART2_IRQHandler(void) {

 if (USART2->SR & USART_CR1_RXNEIE) {

 USART2->SR &= ~USART_CR1_RXNEIE;

 if (USART2->DR == '0') {
 UART2_Send_String("OFF\r\n");
 GPIOC->BSRR = GPIO_BSRR_BS13;
 } else if (USART2->DR == '1') {
 UART2_Send_String("ON\r\n");
 GPIOC->BSRR = GPIO_BSRR_BR13;
 } else if (USART2->DR == '2') {
 uint16_t d0 = ADC1->DR;
 float Vdd = 1.2 * 4069 / d0;
 UART2_Send(Vdd);
 GPIOC->BSRR = GPIO_BSRR_BR13;
 }
 }
 }
 */
void DMA1_Channel1_IRQHandler(void) {

	DMA1->IFCR = DMA_IFCR_CGIF1 | DMA_IFCR_CTCIF1;	// clear DMA interrupt flags
	DMA1_Channel1->CCR &= ~DMA_CCR_EN;					//  
	/*
	 * Code
	 */
	DMA1_Channel1->CCR |= DMA_CCR_EN;			   //  
	ADC1->CR2 |= ADC_CR2_ADON;
}



рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░реЛ


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

рдореИрдВ рдлреЛрдЯреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрднрдЧ рднреВрд▓ рдЧрдпрд╛ рдерд╛, рдХреБрдЫ рдШрдЯрдХ рдЕрднреА рддрдХ рдирд╣реАрдВ рдЖрдП рд╣реИрдВ, рдФрд░ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреА рд╕рдордп рд╕реАрдорд╛ рдХрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ DIY рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛, рдЗрд╕рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдирд╣реАрдВред

рд░реЛрдмреЛрдЯ рдлреЛрдЯреЛ
image

рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдорд┐рдиреА рдкрд░реАрдХреНрд╖рдг рд╡реАрдбрд┐рдпреЛ рд╣реИ

All Articles