рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╕рд╛рдзрдиреЛрдВ рд╕реЗ STM32 рдкрд░ рдПрдХ рд╕рдВрдЧреАрдд рдЦрд┐рд▓реМрдирд╛


рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп Khabrovitesред
рдПрдХ рд╢рд╛рдо рдореБрдЭреЗ рдмреЛрд░рд┐рдпрдд рдорд╣рд╕реВрд╕ рд╣реБрдИ рдФрд░ рдореИрдВрдиреЗ рдШрд░ рдкрд░ рдкрдбрд╝реЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдЙрдкрдХрд░рдг рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП, рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджреНрджреЗрд╢реНрдп рдХреЗред рдХреЛрдИ рднреА рдЗрд╕реЗ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдореБрджреНрд░рд┐рдд рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ "рдЪрдВрджрд╡рд╛" рдХреА рдПрдХ рдиреНрдпреВрдирддрдо рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХреБрдЫ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреЙрдХреНрд╕реА рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ, рддрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдк рдФрд░ рдЙрд╕реА epoxy рдХреЗ рд▓рд┐рдП рднрд░рд╛ рд╣реБрдЖ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ред
рддреЛ, рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдмрд╛рдВрд╕реБрд░реА рдмрдирд╛рдУ!

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

рдЖрдЗрдП рдкрд░рд┐рдгрд╛рдо рдХреЛ рддреБрд░рдВрдд рджреЗрдЦреЗрдВ:


рдШрдЯрдХ рдЪрдпрди


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбрд┐рд╡рд╛рдЗрд╕ рдЯреНрд╡реАрдЯрд░ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ - рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рдореБрд░рд╛рддрд╛ рд╕реЗ рдПрд╕рдПрдордбреА рдкреАрдЬрд╝реЛрдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдЙрддреНрд╕рд░реНрдЬрдХ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЛ рджреЗрдЦрд╛, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдкреАрдХреЗрдПрд▓рд╕реАрдПрд╕ 1212 рдИ 4001 рдФрд░ рдПрдХ рд╕рдорд╛рди рдкреАрдХреЗрдПрд▓рд╕реАрдПрд╕ 1212 2 рдбреА-рдЖрд░ 1 рд╣реИред рдпреЗ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдЖрдпрд╛рдореЛрдВ (10 x 12 x 3 рдорд┐рдореА) рдХреЗ рджреЛ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рдИрдЬрд╝реЛрдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдЙрддреНрд╕рд░реНрдЬрдХ рд╣реИрдВ, рдПрдХ 4000 рд╣рд░реНрдЯреНрдЬ рдкрд░ рд╢рд┐рдЦрд░ рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде, рдФрд░ рджреВрд╕рд░рд╛ 2000 рд╣рд░реНрдЯреНрдЬ рдкрд░ред рд╡рдХреНрддрд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡реЗ рд▓рдЧрднрдЧ рд╡рд░реНрддрдорд╛рди рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдкреАрдЬрд╝реЛрдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдкреНрд▓реЗрдЯ рдЭреБрдХрддрд╛ рд╣реИ рдЬрдм рд╡реЛрд▓реНрдЯреЗрдЬ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП 4 kHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдПрдХ рдЖрдпрддрд╛рдХрд╛рд░ рд╕рдВрдХреЗрдд рдкреНрд▓реЗрдЯ рдХреЛ рдПрдХ рд╣реА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХрдВрдкрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рддреЗрдЬ рдзреНрд╡рдирд┐ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЦрдкрдд 3.3V рдкрд░ 0.3 рдПрдордПрдП рд╣реИред
рдЪреВрдВрдХрд┐ рдЦрдкрдд рдЗрддрдиреА рдХрдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рдмреИрдЯрд░реА рдЪрд╛рд▓рд┐рдд рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдЙрдкрдХрд░рдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдП? рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдПрдореНрдкрд▓реАрдлрд╛рдпрд░реЛрдВ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд░реНрддрдорд╛рди рд╕реНрд░реЛрддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╕рдЪ рд╣реИ, рдЖрдкрдХреЛ рдЯреНрд╡реАрдЯрд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЗрд╕ рдмрд╣реБрдд рд╣реА рд╡рдХреНрд░ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдирд╣реАрдВ, рд╡реЗ рдПрдХ рдордирдорд╛рдиреА рдзреНрд╡рдирд┐ рд╕рдВрдХреЗрдд рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ WAV рднреА рдЖрдЙрдЯрдкреБрдЯ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдзреНрд╡рдирд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдореЗрдпрдВрдбрд░ рдХреЗ рд╕рд╛рде "рдлрд╝реАрдб" рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рдХреЗ рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рд╣рдо рдзреНрд╡рдирд┐ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗред


рдлреНрд░реАрдХреНрд╡реЗрдВрд╕реА рд░рд┐рд╕реНрдкрд╛рдВрд╕ рдЯреНрд╡реАрдЯрд░

рдпрд╣рд╛рдВ, рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд┐рдЬрд╝реЛ-рдПрдорд┐рдЯрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЦреЗрд▓рддреА рд╣реИ - рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рд╡реЗ рдереЛрдбрд╝реА рдЪрд┐рдХрдиреА рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВрдЧреЗ рдФрд░ рдПрдХ рдмрдбрд╝реА рдЖрд╡реГрддреНрддрд┐ рд░реЗрдВрдЬ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдВрдЧреЗред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдзреНрд╡рдирд┐ рдЙрддреНрд╕рд░реНрдЬрдХ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рд╣реИ - рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ CR2032, рд▓рд┐рдерд┐рдпрдо рдмреИрдЯрд░реА рдмрд╣реБрдд рдХрдо рд╕реНрддрд░ рдХреЗ рд╕рд╛рде, рд╕реНрд╡-рдирд┐рд░реНрд╡рд╣рди, 3V рд╕реЗ рд╡реЛрд▓реНрдЯреЗрдЬ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд╛рд░реНрдЬ), 2V (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреБрдЯреНрдЯреА рджреЗ рджреА) рдХреЗ рд▓рд┐рдПред рдЙрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ SMD рдзрд╛рд░рдХ рдкрд╛рдпрд╛:
рдЫрд╡рд┐
SMD рдмреИрдЯрд░реА рдзрд╛рд░рдХ

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

рдЫрд╡рд┐
рдЗрд▓реЗрдХреНрдЯреНрд░реЗрдЯ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди

рд╣рдо рдПрдХ рдЪрд░ рдЕрд╡рд░реЛрдзрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдЯ рдЪреБрдиреЗрдВрдЧреЗ, рдлрд┐рд░ рд╕реЗ, рдХреЛрдИ рднреА рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рд░реЛрдз рд▓реЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдмреИрдЯрд░реА рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд░реНрддрдорд╛рди рди рдЦреАрдВрдЪреЗред рдореИрдВрдиреЗ 50 kOhm рд▓рд┐рдпрд╛ред

рдЫрд╡рд┐
рдЪрд░ рдЕрд╡рд░реЛрдз рдХрд░рдиреЗрд╡рд╛рд▓рд╛

рдЖрдк рдХрдИ рдмрдЯрди рдХреЗ рд╕рд╛рде рдЕрд╡рд░реЛрдзрдХ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЦреЗрд▓ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЖрдпрд╛рдо рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА (рдФрд░ рдЗрди рдмрдЯрди рдХреЗ рд▓рд┐рдП рддрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреА рд╣реЛрдЧреА, рдФрд░ рдпрд╣, рдЪреБрдиреЗ рд╣реБрдП рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдПрдХ рдмрд╣реБрдд рдЕрдкреНрд░рд┐рдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рд╣реИ!)

рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреА рдЬреЛрдбрд╝реЗрдВред рдмреЗрд╢рдХ, рдпрд╣ рдЦрдкрдд рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ "рдмрд╛рдВрд╕реБрд░реА" рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдмреИрдЯрд░реА рдХреЗ рдирд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдареАрдХ рд╣реИред рдореИрдВрдиреЗ KAA-3528EMBSGC SMD LED рдХреЛ рдЪреБрдирд╛ред

рд╕рднреА рдЬреЛ рдЕрд╡рд╢реЗрд╖ рд╣реИ рд╡рд╣ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ - рд╣рд╛рде рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, STM32F100C4 , рдПрдХ рд╕рдордп рдореЗрдВ рд╡реЗ рдЯреЗрд░рд╛ рдореЗрдВ рд▓рдЧрднрдЧ 20 рд░реВрдмрд▓ рдЦрд░реНрдЪ рдХрд░рддреЗ рдереЗ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП, рдФрд░ рдореИрдВ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреВрд░рд╛ рдмреИрдЧ рдЦрд░реАрджрд╛ред рдирд┐рдпрдВрддреНрд░рдХ "рдШреБрдЯрдиреЗ рдкрд░" рдмрдврд╝рддреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ - LQFP48, 0.5 рдорд┐рдореА рдХреЗ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдкрд┐рдЪ рдХреЗ рд╕рд╛рдеред

рджрд░рдЕрд╕рд▓, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдлреЛрдЯреЛ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рд╡рд┐рд╡рд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдФрд░ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рдмреЛрд░реНрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЬрд┐рд╕ рдкрд░ рдпрд╣ рд╕рдм рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИ) - рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рджреВрд╕рд░рд╛ рд╕реНрдХреНрд╡реАрдХрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ (рдлреЛрдЯреЛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ, 4 KHz рдкрд░ рдПрдХ), SMD рдмрдЯрди рдФрд░ рдПрдХ рдкреЗрди рдХрд╛ рдПрдХ рдЬреЛрдбрд╝рд╛ рд╣реИ рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░ рдХреЗ рд▓рд┐рдПред


рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг

рдмрдЯрдиреЛрдВ рдХреЗ рд▓рд┐рдП - рд╢реБрд░реВ рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдЪрд░ рдЕрд╡рд░реЛрдзрдХ рдХреЗ рд╕рд╛рде рд╕рднреА рдиреЛрдЯреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдереА (рдФрд░ рджреЛ рдкреВрд░реНрдг рдСрдХреНрдЯреЗрд╡реНрд╕ рдХреЗ рд▓рд┐рдП рдиреЛрдЯреЛрдВ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА), рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рддрдм рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛рдлреА рдЕрд╕рд╣рдЬ рд╣реЛ рдЬрд╛рдПрдЧреА рдФрд░ рджреЛ рдмрдЯрди рдЬреЛрдбрд╝реЗрдЧреАред рдПрдХ "рддреЗрдЬ" рдЪреБрдирддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрдпрдирд┐рдд рдиреЛрдЯ рдХреЛ рдЖрдзрд╛ рдЯрди рдКрдкрд░ рд╢рд┐рдлреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЪрдпрдирд┐рдд рдиреЛрдЯ рдХреЛ рдПрдХ рдкреВрд░реЗ рд╕рдкреНрддрдХ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, 2 (рдСрдХреНрдЯреЗрд╡рд╕) рдХреЗ рдмрдЬрд╛рдп * 12 (рд╕реЗрдореАрдЯреЛрди) = 24 рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░ рдХреА рд╕реНрдерд┐рддрд┐, рдЖрдкрдХреЛ рд╕рд╛рдд рдиреЛрдЯреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдХреБрд▓ 7 рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдмрдЯрди рджрдмрд╛рдХрд░ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕реЗрдореАрдЯреЛрди рдФрд░ рдСрдХреНрдЯреЗрд╡ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдбрд┐рд╡рд╛рдЗрд╕ рдЖрд░реЗрдЦ


рдмреЗрд╢рдХ, рдореИрдВрдиреЗ рдЗрд╕ рдкреВрд░реА рдЪреАрдЬрд╝ рдХрд╛ рдЖрд░реЗрдЦ рдирд╣реАрдВ рдмрдирд╛рдпрд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрд╕рдЯреАрдПрдо рд╕реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдорд╛рдЗрдХреНрд░реЛрдПрдХреНрд╕рдкреНрд▓рд░ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ред рдирддреАрдЬрд╛ рдерд╛ рдЗрддрдиреА рдЦреВрдмрд╕реВрд░рдд рддрд╕реНрд╡реАрд░:


рддреЛ, рд╣рдо рдХреНрдпрд╛ рдФрд░ рдХрд┐рд╕рд╕реЗ рдЬреБрдбрд╝реЗрдВрдЧреЗ?
  1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рджреЛ рдЯреНрд╡реАрдЯрд░ рдХреЗ рд▓рд┐рдП рджреЛ PWM рдЪреИрдирд▓ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдореНрдпреВрдЯ рдмрд┐рдВрджреБ рд╣реИ - рдЖрдк рдПрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЛрдиреЛрдВ рдЯреНрд╡реАрдЯрд░ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдЖрд╡реГрддреНрддрд┐ рдФрд░ рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
    рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд╡реАрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдирд▓ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЧ рд╣реЛрдЧрд╛, рдФрд░ рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ (рдФрд░ рдЗрд╕рд▓рд┐рдП рд▓рд┐рдлрд╛рдлреЗ рдХрд╛ рдЖрдХрд╛рд░!) рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд╡реАрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЯрд╛рдЗрдорд░ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреНрдпреВрдЯреА рд╕рд╛рдЗрдХрд┐рд▓ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
    рдЪреВрдВрдХрд┐ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдПрдкреЙрдХреНрд╕реА рд╕реЗ рднрд░рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдмрджрд▓рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
    рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдЯрд╛рдЗрдорд░ рд▓реЗрддреЗ рд╣реИрдВ, TIM3 рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ PWM рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдЪреИрдирд▓реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ - рдпреЗ рдкрд┐рди PA6 рдФрд░ PA7 рд╣реИрдВред
  2. рдмреЗрд╢рдХ, рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдкреАрдбрдмреНрд▓реВрдПрдо рдЪреИрдирд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдмреИрдЯрд░реА рд╡реЛрд▓реНрдЯреЗрдЬ рдФрд░ рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рд░реЛрдз рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд┐рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдкрд╛рд╡рд░ рдХрд░реЗрдВрдЧреЗ, рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛ - рд╣рдо рдЕрднреА рднреА рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рди рдХреЗ рд▓рд┐рдП 10 mA рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рджреЗрдВрдЧреЗ, рдиреАрд▓реЗ рдбрд╛рдпреЛрдб рдкрд░ рдЗрддрдиреА рдЕрдзрд┐рдХ рдмреВрдВрджреЗрдВ рдХрд┐ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдЕрдзрд┐рдХрддрдо рдкрд░ рдЕрдзрд┐рдХрддрдо рдЪрдордХ рдореЗрдВ рднреА рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред 3V рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ред
    рд╣рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл 1 рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЪреМрдереЗ рдЪреИрдирд▓ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдВрдЧреЗ - рдпрджрд┐ рдХреБрдЫ рднреА рд╣реИ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд╡реАрдХ рдХрд░реЗрдВрдЧреЗред
    рдЗрд╕рд▓рд┐рдП, рд╣рдо PWM рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП TIM1 рдФрд░ рдкрд┐рди PA8, PA9, PA10, PA11 рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред
  3. рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдФрд░ рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░ рд╕реЗ рдПрдирд╛рд▓реЙрдЧ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╢реВрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдбреАрд╕реА - рдкрд┐рди рдкреАрдП 2 рдФрд░ рдкреАрдП 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
    рдЪреВрдВрдХрд┐ рд╣рдо рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рддреБрд░рдВрдд рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рд▓реЗрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рдбреАрд╕реА рдШрдЯрдХ рдХреЛ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдзрд╛рд░рд┐рддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдПрдбреАрд╕реА рдХреА рд╕рдВрдкреВрд░реНрдг рдЧрддрд┐рд╢реАрд▓ рд░реЗрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛ рд╢рдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд░реЛрдзрдХ рд╡рд┐рднрдХреНрдд рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдпрд╣ рд╕рдм рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдирд┐рд░рдВрддрд░ рдШрдЯрдХ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдЯрддреЗ рд╣реИрдВ, рдбрд╛рдпрдиреЗрдорд┐рдХ рд░реЗрдВрдЬ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдХреЛ рдЗрд╕ рддрд░рд╣ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗ:


    рдирддреАрдЬрддрди, рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣рдореЗрдВ рдПрдХ рд╢рд╛рдВрдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рдЧрднрдЧ 2 рд╡реА рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдХреЗ рдмрдЧрд▓ рдореЗрдВ рддреЗрдЬ рдЖрд╡рд╛рдЬрд╝ рдХреЗ рд╕рд╛рде ~ 1.5 рд╕реЗ ~ 2.5 рддрдХред
    рдмреЗрд╢рдХ, рд╣рдо рд╢рдХреНрддрд┐ рдФрд░ рдЬрдореАрди рдХреЗ рдмреАрдЪ рд╡рд┐рднрдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рдордзреНрдп рдмрд┐рдВрджреБ рдХреЛ рдЖрд╕рдиреНрди рдПрдбреАрд╕реА рдЪреИрдирд▓ рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВред
  4. рд╣рдореЗрдВ рджреЛ рдмрдЯрди рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрднреА рд╕реЗ рдореБрдХреНрдд рдкрд┐рдВрд╕ PA0 рдФрд░ PA1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдкреБрд▓рдЕрдк рдЖрдВрддрд░рд┐рдХ рдЪрд╛рд▓реВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдмрд╕ рдмрдЯрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд┐рдВрд╕ рдХреЛ рдЬрдореАрди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
  5. рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ SWDIO рдФрд░ SWCLK (рд╕рд╛рде рд╣реА рд╕рд╛рде рдЬрдореАрди рдФрд░ рдмрд┐рдЬрд▓реА) рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, RESET рдкрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛, рдЪреВрдВрдХрд┐ рд╣рдо рд╕реНрд▓реАрдк рдореЛрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдЬреИрд╕реЗ рд╣реА рдбрд┐рдмрдЧ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВрдЧреЗ, рдЬрдм рдирд┐рдпрдВрддреНрд░рдХ рд╕реЛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрд╕рдЯреАрдПрдо рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдпрджрд┐ рдПрдХ RESET рдкрд┐рди рд╣реИ, рддреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд░реАрд╕реЗрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдЧ рд╕реЗ рдирд╣реАрдВ рдЦреЗрд▓реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкреГрдереНрд╡реА, рдмрд┐рдЬрд▓реА, рдкреАрдП 13, рдкреАрдП 14 рдФрд░ рдкрд┐рди рдПрдирдЖрд░рдПрд╕рдЯреА рдХреЛ рдбреЗрдмрд┐рдЯ рдХрдиреЗрдХреНрдЯрд░ рдкрд░ рдЦреАрдВрдЪ рд░рд╣реЗ рд╣реИрдВ
  6. рдЕрдВрддрд┐рдо рдЖрдЗрдЯрдо рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдирд╛рд▓реЙрдЧ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ - рд╣рдо DAC рдЪреИрдирд▓ рдХреЛ рдЙрд╕реА рдХрдиреЗрдХреНрдЯрд░ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдкрд┐рди рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ - рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдо рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рднреА рдордзреНрдпрд╡рд░реНрддреА рдПрдирд╛рд▓реЙрдЧ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ


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

рдЯрд╛рдВрдХрдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛


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


рдзрд░рддреА рдХреЛ рдорд┐рд▓рд╛рдУред рдкреБрд░рд╛рдирд╛ рдмреЛрд░реНрдб рдХрд╛рдо рдореЗрдВ рдЖрдпрд╛ - рдореИрдВрдиреЗ рдЬрд╝рдореАрди рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЬрд╝рдореАрди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред


рдбреАрдмрдЧрд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд┐рд▓рд╛рдк рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдШрд╛рд╡


рдЕрдиреНрдп рд╕рднреА рдкрд┐рдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВ


рдЗрдкреЙрдХреНрд╕реА рд╕реЗ рднрд░реЗрдВ


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


рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ

рдЗрд╕ рдкрд░, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рдЬрд╛рдПрдВред

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


рдлрд░реНрдорд╡реЗрдпрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╣рдо рдЕрдкрдиреЗ STM32F100C рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрд░рдВрднреАрдХрд░рдг рджрд░реНрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

GPIO рдкреНрд░рд╛рд░рдВрднрд┐рдХ
#define GPIO_Red GPIO_Pin_9 #define GPIO_Green GPIO_Pin_10 #define GPIO_Blue GPIO_Pin_11 #define GPIO_SHARP GPIO_Pin_0 #define GPIO_OCT GPIO_Pin_1 #define GPIO_FreePWM GPIO_Pin_8 #define GPIO_BUZZER1 GPIO_Pin_6 #define GPIO_BUZZER2 GPIO_Pin_7 void InitGPIO() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_BUZZER1 | GPIO_BUZZER2 | GPIO_FreePWM |GPIO_Red|GPIO_Green|GPIO_Blue; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_SHARP | GPIO_OCT; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); } 


рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ GPIO рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ - рд╕рднреА PWM рдЪреИрдирд▓ рдкреБрд╢-рдкреБрд▓ рдореЛрдб (GPIO_Mode_AF_PP) рдореЗрдВ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ, рдмрдЯрди рдЗрдирдкреБрдЯ рдкрд┐рди рд╣реИрдВ рдЬреЛ рдКрдкрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред ADC рдЪреИрдирд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдирд╛рд▓реЙрдЧ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдПрдбреАрд╕реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ
 #define SIGNAL_OFFSET 850 void InitADC() { ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_Init(ADC1, &ADC_InitStructure); ADC_InjectedSequencerLengthConfig(ADC1, 2); ADC_InjectedChannelConfig(ADC1, ADC_Channel_2, 1, ADC_SampleTime_1Cycles5); ADC_SetInjectedOffset(ADC1, ADC_InjectedChannel_1, SIGNAL_OFFSET); ADC_InjectedChannelConfig(ADC1, ADC_Channel_3, 2, ADC_SampleTime_1Cycles5); ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_None); ADC_Cmd(ADC1, ENABLE); } 


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

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрд╛рдЗрдорд░
 void InitTimers() { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseStructure.TIM_Period = 0xFFF; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0x00; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM3, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_SetCompare1(TIM3, 0x00); TIM_SetCompare2(TIM3, 0x00); TIM_ARRPreloadConfig(TIM3, ENABLE); TIM_Cmd(TIM3, ENABLE); TIM_CCxCmd(TIM3, TIM_Channel_1, ENABLE); TIM_CCxCmd(TIM3, TIM_Channel_2, ENABLE); TIM_TimeBaseStructure.TIM_Period = 0xFFF; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0x000; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OC1Init(TIM1, &TIM_OCInitStructure); TIM_OC2Init(TIM1, &TIM_OCInitStructure); TIM_OC3Init(TIM1, &TIM_OCInitStructure); TIM_OC4Init(TIM1, &TIM_OCInitStructure); TIM_CCxCmd(TIM1, TIM_Channel_1, DISABLE); TIM_CCxCmd(TIM1, TIM_Channel_2, ENABLE); //R TIM_CCxCmd(TIM1, TIM_Channel_3, ENABLE); //G TIM_CCxCmd(TIM1, TIM_Channel_4, ENABLE); //B TIM_Cmd(TIM1, ENABLE); TIM_CCPreloadControl(TIM1, DISABLE); TIM_CtrlPWMOutputs(TIM1, ENABLE); } 


рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп, рджреЛ рдЯрд╛рдЗрдорд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ред рд╣рдо рджреЛрдиреЛрдВ рдХреЛ рдкреАрдбрдмреНрд▓реВрдПрдо рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдПрд▓ рдИ рдбреА рдХреЛ рдЬреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдХреА рдЖрд╡реГрддреНрддрд┐, рдмреАрдкрд┐рдВрдЧ рдХреА рдЖрд╡реГрддреНрддрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдмрджрд▓ рдЬрд╛рдПрдЧреАред рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡реГрддреНрддрд┐ 8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╣реИ (рдХрдо, рдмреЗрд╣рддрд░, рдпрд╣ рдХрдо рдЦрдкрдд рдХрд░реЗрдЧрд╛!), рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЖрдЙрдЯрдкреБрдЯ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ (4 KHz + рддрдХ) рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PWM рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХред

рдЕрдм рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдорд░ рд╕реЗ рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд░, 1 KHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЯрд┐рдХред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдкреАрдЬрд╝реЛрдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдЙрддреНрд╕рд░реНрдЬрдХреЛрдВ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдирд╛рдбрд╝реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП рд╕рд┐рдЧреНрдирд▓ рдХреА рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд╛рдиреЛрдВ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрдЦрдж рдирд┐рдХрд▓рд╛: рд╕рд┐рдЧреНрдирд▓ рдкрд╛рд╡рд░ рдПрдХ "рдЯреНрд░рд┐рдЧрд░" рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ (рдкреВрд░реНрдг рдореВрд▓реНрдп рдФрд░ рд╡реНрдпреБрддреНрдкрдиреНрди рдореЗрдВ) рдкреНрд▓реЗрдмреИрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рд▓рд┐рдлрд╛рдлреЗ рдХреЛ рдПрдХ рд╕рдВрдзрд╛рд░рд┐рддреНрд░ рдХреЗ рдирд┐рд░реНрд╡рд╣рди рдХреА рддрд░рд╣ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЬрдм рд╕реАрдорд╛ рдкрд╛рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рд▓рд┐рдлрд╝рд╛рдлрд╝рд╛ рдХреЛ рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, START_VAL - рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рдВрдзрд╛рд░рд┐рддреНрд░ рдХрд╛ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ "рдЪрд╛рд░реНрдЬрд┐рдВрдЧ" рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рд░реБрдХрд╛рд╡рдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░, рдирдпрд╛ рд╕рдВрдХреЗрдд рдорд╛рди рдкреБрд░рд╛рдиреЗ рд╕реЗ 0.987 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЕрдиреБрднрд╡рдЬрдиреНрдп рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рдореВрд▓реНрдп, рдЬреЛ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрд╕ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдЯреНрд░реИрдк рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдлрд╛рдлрд╛ (t) = START_VAL * 0.987 ^ tред рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдлрд╝реНрд▓реЛрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, 0.987 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ 64684 рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдФрд░ 65536 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ (16 рд╕реЗ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг)ред рд╡рд╣ рд╣реИ,

 #define ENV_DECR 64684 //0,987 Envelope = (Envelope*ENV_DECR)>>16; 

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


ClippedEnvelope рдорд╛рди

рдпрд╣ рд╕рдВрдХреЗрдд рд╕реАрдзреЗ рдбреНрдпреВрдЯреА рдЪрдХреНрд░ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рджреЛ BUTs рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ
  1. рдзреНрд╡рдирд┐ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯрд╛рдЗрдорд░ рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде, 4KHz рдкрд░ 12-рдмрд┐рдЯ PWM рдЕрдм рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  2. рдкреАрдЬреЛ рдЯреНрд╡реАрдЯрд░ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрддрдо рдбреНрдпреВрдЯреА рдЪрдХреНрд░ рд╡рд╛рд▓рд╛ рдкреАрдбрдмреНрд▓реВрдПрдо рдиреНрдпреВрдирддрдо рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ рд╡рд╛рд▓реЗ рдкреАрдбрдмреНрд▓реВрдПрдо рд╕реЗ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЕрдзрд┐рдХрддрдо рдзреНрд╡рдирд┐ рдХреА рдорд╛рддреНрд░рд╛ рдПрдХ рдореЗрдиреНрдбрдВрдбрд░ (рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ - 50%) рдХреЗ рд╕рд╛рде рд╣реЛрдЧреАред

рдЗрд╕рд▓рд┐рдП, TimerPeriod рдЯрд╛рдЗрдорд░ рдХреА рдЕрд╡рдзрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрдпрдирд┐рдд рдиреЛрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЧрдИ рд╣реИ, рдФрд░ рддреБрд▓рдирд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдЖрдзреА рдЕрд╡рдзрд┐ ( TimerPeriod / 2) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ рдЖрдпрддрд╛рдХрд╛рд░ рд╕рдВрдХреЗрдд 50% рдХреЗ рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЕрдзрд┐рдХрддрдо рдзреНрд╡рдирд┐ рдорд╛рддреНрд░рд╛ред
рдлрд┐рд░, рдПрдХ рджреА рдЧрдИ рдЖрд╡реГрддреНрддрд┐ рдкрд░, рд╣рдорд╛рд░реЗ ClippedEnvelope рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдорд╛рди, 4000 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдЕрдзрд┐рдХрддрдо рдЖрдзреА рдЕрд╡рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ

 u16 OutEnvelope = (TimerPeriod/2)*ClippedEnvelope/4000; 

рдЯрд┐рдорд░рдкрд┐рд░рд┐рдпреЛрдб рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдпрд╛ рддреЛ рдкреНрд░рд╕рд┐рджреНрдз рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЫрд╡рд┐ , рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдерд┐рд░рд╛рдВрдХ рднреА рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдореИрдВрдиреЗ рд╕рдЯреАрдХрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ред рд╕реВрддреНрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЯреЗрдореНрдкрд░реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ (рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЕрд╡рдзрд┐) рдХреЗ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ ред рд╣рдо рдХреЗрд╡рд▓ рдЖрдзрд╛рд░ рдиреЛрдЯ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рдЕрдиреНрдп рд╕рднреА рдХреЛ рдЧрд┐рдиреЗрдВрдЧреЗ - рдореИрдВрдиреЗ 1046.5 рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдиреЛрдЯ рдХреЛ рддреАрд╕рд░реЗ рдСрдХреНрдЯреЗрд╡ рдореЗрдВ рд▓реЗ рд▓рд┐рдпрд╛ред рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдВрддреНрд░рдХ рдЖрд╡реГрддреНрддрд┐ (8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ) рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдорд░ рдХреА рдЗрд╕реА рдЕрд╡рдзрд┐ 7644 рдЯрд┐рдХ рд╣реИред
рдЙрд╕реА рд╕рдордп, рдЕрдЧрд▓реЗ рд╕рдкреНрддрдХ рдХреЗ рдиреЛрдЯреНрд╕ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЕрд╡рдзрд┐ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ 2 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ "рд╢рд╛рд░реНрдкреНрд╕" (рдЖрдзрд╛ рдЯреЛрди рдЕрдзрд┐рдХ) рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП - рдЕрд╡рдзрд┐ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдЫрд╡рд┐ ред
рдкреВрд░реНрд╡-рдкрд░рд┐рдХрд▓рд┐рдд "рд╢рд╛рд░реНрдкреНрд╕" рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЗ рд╕рд░рдгреА рдХреЛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд┐рд░ рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - 1.059463 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм 61858 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ рдФрд░ 65536 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред
рдЖрдЗрдП рд╣рдорд╛рд░реА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ: рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реА рддреЗрдЬ рдиреЛрдЯ (C #) рдХреА рдЖрд╡реГрддреНрддрд┐ 1108.7 рд╣рд░реНрдЯреНрдЬ рд╣реИред рдбреВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЕрд╡рдзрд┐ 7644 рд╣реИред
c_sh = (7644 * 61858) >> 16 = 7215
рдкреНрд░рд╛рдкреНрдд рдЕрд╡рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЯрд╛рдЗрдорд░ (8,000,000) рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ, рд╣рдореЗрдВ 1108.8 рд╣рд░реНрдЯреНрдЬ рдорд┐рд▓рддрд╛ рд╣реИ - рдмрд╣реБрдд рдХрд░реАрдмред

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

RGB рд░рдВрдЧ рдШрдЯрдХреЛрдВ рдХреА рдЧрдгрдирд╛
 void Spectrum(u8 position, u32* r, u32* g, u32* b) { if(position<85) { *r=85-position; *g=position; *b=0; } if(position>84&&position<170) { *r=0; *g=170-position; *b=position-85; } if(position>169) { *r=position-170; *g=0; *b=255-position; } *r*=3; *g*=3; *b*=3; } 


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

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

 ResistorValue = ((res*highOctave)+sharp)>>5; 

рдпрд╣рд╛рдБ Res ADC рдЪреИрдирд▓ рд╕реЗ рдкрдврд╝рд╛ рдЧрдпрд╛ рдорд╛рди рд╣реИ, рд╣рд╛рдИрдСрдХреНрдЯреЗрд╡ рдкреНрд░реЗрд╕ рдХрд┐рдП рдЧрдП рдСрдХреНрдЯреЗрд╡ рд╕рд┐рд▓реЗрдХреНрд╢рди рдмрдЯрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд╛рди 1 рдФрд░ 2 рд▓реЗрддрд╛ рд╣реИ, рдФрд░ "рд╢рд╛рд░реНрдк" рдмрдЯрди рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд╢рд╛рд░реНрдк рдПрдХ рдорд╛рдореВрд▓реА рдСрдлрд╕реЗрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╣рдо рдпрд╣ рд╕рдм 5 рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ ADC рдХреЗ рд╕рд╛рде рдорд╛рди 12-рдмрд┐рдЯ рд╣реИ - рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд░рдВрдЧ рдЧрдгрдирд╛ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди 8-рдмрд┐рдЯ рд╣реЛрдЧрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдмрд╛рдзрд╛ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:

рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдорд░ рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд░
 #define HALF_TONE 61858 //0.9438782 #define ENV_DECR 64684 //0,987 #define START_VAL 7500 #define CLIPPING_VAL 4000 #define POWER_TH 400 #define DPOWER_TH 500 #define SLEEP_INTERVAL 10 u16 Notes[7] = {7644, 6810, 6067, 5726, 5102, 4545, 4050}; u16 ResLin[] = {10, 249, 480, 900, 2000, 3685, 4095}; s32 Envelope=0; u32 TimerPeriod=0; s32 LastPower=0; u16 ResistorValue[3]; u32 Sleeped = 0; u16 sharp=0, highOctave=0; void SysTick_Handler() { volatile s16 mic; volatile u16 res; mic = (s16)ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1); res = ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_2); ADC_SoftwareStartInjectedConvCmd(ADC1, ENABLE); s32 power = mic; power = (power*((s32)mic))>>9; s32 dP = power-LastPower; LastPower=power; //linearizing resistor u8 n; for(n=0;n<6;n++) if(res<ResLin[n]) break; if(power>POWER_TH && dP> DPOWER_TH) { //got signal! Sleeped=0; TimerPeriod=Notes[n]; sharp=0; highOctave=1; if(!GPIO_ReadInputDataBit(GPIOA, GPIO_SHARP)) { sharp = 0x700; TimerPeriod=(TimerPeriod*HALF_TONE)>>16; } if(!GPIO_ReadInputDataBit(GPIOA, GPIO_OCT)) { TimerPeriod/=2; highOctave = 2; } if(Envelope<CLIPPING_VAL) { ResistorValue[0] = ResistorValue[1]; ResistorValue[1] = ResistorValue[2]; ResistorValue[2] = ((res*highOctave)+sharp)>>5; } TIM_SetAutoreload(TIM3, TimerPeriod); Envelope=START_VAL; } Envelope = (Envelope*ENV_DECR)>>16; if(Envelope<50) { Envelope=0; Sleeped++; StopPeripherals(); u32 interval=SLEEP_INTERVAL; if(Sleeped>1000) interval*=8; Stop(interval); } u16 ClippedEnvelope=Envelope; if(Envelope>CLIPPING_VAL) ClippedEnvelope=CLIPPING_VAL; u16 OutEnvelope = (TimerPeriod/2)*ClippedEnvelope/4000; //Debug DAC //DAC_SetChannel1Data(DAC_Align_12b_R, dP); u32 r=0,g=0,b=0; u8 sPos = 0; for(u8 i=0;i<3;i++) sPos+=ResistorValue[i]; Spectrum(sPos,&r,&g,&b); r*=ClippedEnvelope; g*=ClippedEnvelope; b*=ClippedEnvelope; r>>=11; g>>=9; b>>=8; TIM_SetCompare1(TIM3, OutEnvelope); TIM_SetCompare2(TIM3, OutEnvelope); TIM_SetCompare2(TIM1, r); TIM_SetCompare3(TIM1, g); TIM_SetCompare4(TIM1, b); } 


рдпрд╣рд╛рдВ рд╣рдордиреЗ рд▓рдЧрднрдЧ рд╣рд░ рдЪреАрдЬ рдХреА рдЬрд╛рдВрдЪ рдХреА, рдЬрд┐рд╕рдореЗрдВ рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░ рдХреЗ рд░реЗрдЦреАрдпрдХрд░рдг рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде - рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рд╕реАрдорд╛ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдХрд░реАрдм рдмрд╣реБрдд рдЧреИрд░-рд░реИрдЦрд┐рдХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдЕрдзрд┐рдХрддрдо рд░реЛрдЯреЗрд╢рди рдХреЛрдг (рд▓рдЧрднрдЧ 275 рдбрд┐рдЧреНрд░реА) рдХреЛ 7 рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рдкреВрд░реЗ рдкрд╣рд▓реЗ рдХреНрд╖реЗрддреНрд░, ADC рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди 0. рдкрд╣рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реИ, рдпрд╣ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рд░реИрдЦрд┐рдХ рднрд╛рдЧ , рдЬрд┐рд╕рдХреЗ рдмрд╛рдж, рдЕрдВрддрд┐рдо рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдВрдд рдХреЗ рдХрд░реАрдм, рдпрд╣ рдлрд┐рд░ рд╕реЗ рддреЗрдЬреА рд╕реЗ рд╕реАрдорд╛ рдореВрд▓реНрдп рддрдХ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдирд╛рддрдХ рд╕реНрддрд░ рдХреА рдкрдврд╝рд╛рдИ рдореБрдЭреЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдореИрдВрдиреЗ рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░ рдХреЛ рд▓рдЧрднрдЧ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдг рдкрд░ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдПрдбреАрд╕реА рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдХреЛ рджреЗрдЦрд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рддрдм рд░рд╛рд▓ рд╕рд░рдгреА рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ред
рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рдЬреЛ рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд░рдВрдЧ рдХреА рдЧрдгрдирд╛ рдХреЗ рдмрд╛рдж рдХрддрд░рдиреА рд╕рдВрдЪрд╛рд▓рди рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░рдВрдЧ рдШрдЯрдХреЛрдВ рдХреЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рд▓рд┐рдлрд╛рдлреЗ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдбрд╛рдпреЛрдб рд╕рдВрдЧреАрдд рдХреА рддрд╛рд▓ рдкрд░ рдЪрдордХрддрд╛ рд░рд╣реЗред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 12 рдмрд┐рдЯреНрд╕ + 8 рдмрд┐рдЯреНрд╕ = 20 рдмрд┐рдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХреЛ 8 рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдФрд░ рдкрд╛рд▓реА рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╡реЛрд▓реНрдЯреЗрдЬ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧреЛрдВ рдХреЗ рдбрд╛рдпреЛрдб рдкрд░ рдЧрд┐рд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд▓рд╛рд▓ рдбрд╛рдпреЛрдб рд╣рд░реЗ рд░рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╣реА рдкреАрдбрдмреНрд▓реВрдПрдо рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЙрдЬреНрдЬрд╡рд▓ рдЪрдордХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдиреАрд▓реЗ рд░рдВрдЧ рд╕реЗ рднреА рдЕрдзрд┐рдХред рдПрдХ рдЕрд▓рдЧ рдкрд╛рд░реА рд╕реЗрдЯ рдХрд░рдХреЗ, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╕рдлреЗрдж рд░рдВрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдлреЗрдж рджрд┐рдЦреЗ, рди рдХрд┐ рдкреАрд▓реЗ рд░рдВрдЧ рдХрд╛ред

рдЕрдВрддрд┐рдо рдЪрд░рдг рдКрд░реНрдЬрд╛ рдХреА рдмрдЪрдд рд╣реИред рд╕рдХреНрд░рд┐рдп рдореЛрдб рдореЗрдВ, рдбрд┐рд╡рд╛рдЗрд╕ 5.5 рдПрдордП (рдФрд░ рдПрд▓рдИрдбреА рдлреНрд▓реИрд╢ рд╣реЛрдиреЗ рдкрд░ 10-15 рддрдХ) рдХреА рдЦрдкрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рд▓рд┐рдлрд╛рдлрд╛ 0 рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╣реА рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдиреАрдВрдж рдореЗрдВ рд▓реЗ рдЬрд╛рдпреЗрдВрдЧреЗ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЬрдм рдпрд╣ 50 рддрдХ рдкрд╣реБрдБрдЪ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕реЗ рд╢реВрдиреНрдп рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрд░рд╛рдмрд░ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕рдкреЛрдиреЗрдВрдЯ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ 1/4096 рдореЗрдВ рднреА рдЯреНрд╡реАрдЯрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдзреНрд╡рдирд┐)ред
рдЗрд╕рд▓рд┐рдП, рд╣рдо RTC рдХреЛ 1 KHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:

рдЖрд░рдЯреАрд╕реА рд╕реЗрдЯрдЕрдк
 void InitRTC() { RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); PWR_DeInit(); PWR_BackupAccessCmd(ENABLE); RCC_LSICmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET); RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); RCC_RTCCLKCmd(ENABLE); RTC_WaitForSynchro(); RTC_WaitForLastTask(); RTC_SetPrescaler(40); RTC_WaitForLastTask(); while(RTC_GetFlagStatus(RTC_FLAG_SEC|RTC_FLAG_ALR) == RESET); EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_Line17; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } 



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

рдкрд╛рд╡рд░ рд╕реЗрд╡рд┐рдВрдЧ рдлрдВрдХреНрд╢рдВрд╕
 void Stop(u32 delay) { RTC_SetCounter(0); RTC_WaitForLastTask(); RTC_SetAlarm(RTC_GetCounter()+delay); RTC_WaitForLastTask(); PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI); } void StopPeripherals() { ADC_Cmd(ADC1, DISABLE); TIM_Cmd(TIM1, DISABLE); TIM_Cmd(TIM3, DISABLE); } void StartPeripherals() { ADC_Cmd(ADC1, ENABLE); TIM_Cmd(TIM1, ENABLE); TIM_Cmd(TIM3, ENABLE); ADC_SoftwareStartInjectedConvCmd(ADC1, ENABLE); SysTick_Config(SystemCoreClock/1000); } void RTCAlarm_IRQHandler() { EXTI_ClearITPendingBit(EXTI_Line17); StartPeripherals(); } 



рдЦреЗрд▓ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо SLEEP_INTERVAL = 10 рдПрдордПрд╕ рдкрд░ рд╕реЛ рдЬрд╛рдПрдВрдЧреЗ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрджреГрд╢реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ 1.1 рдПрдордП рддрдХ рдЦрдкрдд рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдКрд░реНрдЬрд╛ рдмрд░реНрдмрд╛рдж рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрд▓реАрдк рдХрд┐рдП рдЧрдП рдЪрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрдВрддрд░рд╛рд▓ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЕрдЧрд░ рд╣рдо рдмрд┐рдирд╛ рдЗрдирдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреЗ 1000 (рд▓рдЧрднрдЧ 10 рд╕реЗрдХрдВрдб) рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо SLE_INTERVAL * 8 рдкрд░ рд╕реЛ рдЬрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЦрдкрдд 0.7 mA рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЦрдкрдд рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ - рдирд┐рдпрдВрддреНрд░рдХ рдХрдо рдЦрдкрдд рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдкреНрд░рддрд┐рд░реЛрдз рдХреЗ рд╕рд╛рде рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░ рдЗрд╕реЗ рдХрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдореИрдВрдиреЗ 50K рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ, рдореБрдЭреЗ 100K рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдорд┐рд▓рд╛рдк, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЧрд▓рддреА рд╕реЗ, рдореИрдВ 24K), рд╢рд╛рдпрдж рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдкрд╛рд╡рд░ рд╕рд░реНрдХрд┐рдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдЫреЛрдЯреЗ рд▓реАрдХ рдФрд░ рдЗрддрдиреЗ рдкрд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЦрд┐рд▓реМрдиреЗ рдХреЗ рд▓рд┐рдП, рдмреИрдЯрд░реА рдХреА рдХреНрд╖рдорддрд╛ 150 рдПрдордПрдПрдЪ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд▓рдЧрднрдЧ 9 рджрд┐рдиреЛрдВ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рд╕рдм рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ, рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдлрд▓ рдбрд┐рд╡рд╛рдЗрд╕!

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


All Articles