STM32 рдФрд░ рдмреНрд▓реВрдЯреВрде рдпрд╛ рдбреВ-рдЗрдЯ-рдЦреБрдж рдкреАрд╕реА рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп


рд╢реБрдн рджрд┐рдиред
рдЖрдЬ рдореИрдВ рдЙрд╕реА рдХрдорд░реЗ рдХреЗ рднреАрддрд░ рдПрдХ рдкреАрд╕реА рд░рд┐рдореЛрдЯ рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

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

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕


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

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

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

рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛


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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрдпрд╛ рд╣реБрдЖ:


рджрд╛рдирд╡


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

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рд╕реЗрдЯ рдЕрдк рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:
#!/usr/bin/python2 # -*- coding: utf-8 -*- import serial import dbus import subprocess import time import os #        BT ,             ,       .        ,            . #      ser = serial.Serial('/dev/rfcomm0', 115200, timeout=1) #     DBUS,       Amarok. bus = dbus.SessionBus() am = bus.get_object('org.kde.amarok', '/Player') #           ,        . commands = { 'p': [am.PlayPause, []], '>': [am.Next, []], '<': [am.Prev, []], 'm': [am.Mute, []], '+': [am.VolumeUp, [1,]], '-': [am.VolumeDown, [1,]] } print 'Connected' #        . try: while 1: try: #     ,       ,             . line = ser.read(1) #                 except serial.serialutil.SerialException: #      ,     ,        . ser.close() time.sleep(0.5) while 1: try: #      ser = serial.Serial('/dev/rfcomm0', 115200, timeout=1) break #     , ..         ,    2      . except serial.serialutil.SerialException: time.sleep(2) #      (      , ,        ) , if len(line) == 1: #     ,      if line[0] == 'C': print 'Command' #   2   -     line += ser.read(2) #        2  - ..      3 . if len(line) == 3: print "0x%02x 0x%02x 0x%02x" % (ord(line[0]), ord(line[1]), ord(line[2])) #     ping,          , ..     ""    . if ord(line[1]) == 0x00 and ord(line[2]) == 0x00: print 'Device ping' ser.write('A') ser.write(chr(0x00)) ser.write(chr(0x02)) ser.write(chr(ord('O'))) ser.write(chr(ord('K'))) print 'Ansver to device' #      ,     . if ord(line[1]) == 0x02: #     . mlen = ord(line[2]) message = ser.read(mlen) #              if message in commands: current = commands[message] current[0](*current[1]) #    -    . except KeyboardInterrupt: ser.close() del am print 'Exiting' #      BT . # cleaning cmd = "sudo rfcomm unbind all" runner(cmd) 


рдкреНрд░реЛрдЯреЛрдХреЙрд▓


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

рдпреБрдХреНрддрд┐


рдпрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓рд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреАрд╕реА рдкрд░ рдореЙрдбреНрдпреВрд▓, рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдХрдбрд╝рд╡рд╛ рдЕрдиреБрднрд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рдЫрд╡рд┐
рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕реА рдореЗрдВ рд▓рд┐рдЦреЗ рдлрд░реНрдорд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕реЗ рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
 /* main work function */ void work(void) { unsigned short i, j; unsigned char mailbox_num = 0; volatile ProtoIOMBox * mbox; /*       ,       - . */ //     . /* check status */ check_status(); //    ""     ,      .                  . /* send ping */ mbox->outbox->header = 'C'; /* Command */ mbox->outbox->size = 0x00; /* 0 for ping request */ mbox->outbox_s = PROTO_IO_MBOX_READY; /* Box ready */ mbox->inbox->size = 64; /* buffer len for control */ mbox->inbox_s = PROTO_IO_MBOX_READY; /* Box ready */ /* wait connection estabilished */ while (status == 0); /* send ping message */ proto_send_msg(mailbox_num); /* wait to send message */ while (mbox->outbox_s <= PROTO_IO_MBOX_SEND); if (mbox->outbox_s == PROTO_IO_MBOX_COMPLETE) LCD_String("Con", 36, 6, 1, WHITE, GLASSY); else LCD_String("Un", 36, 6, 1, RED, GLASSY); /* get ping message */ /* FIXME wtf? this not work or work parity */ //proto_get_msg(mailbox_num); /* wait to get message */ while (mbox->inbox_s <= PROTO_IO_MBOX_SEND); if (mbox->inbox_s == PROTO_IO_MBOX_COMPLETE) { LCD_String("OK", 36 + 3 * 7, 6, 1, GREEN, GLASSY); for (i = 0; i < mbox->inbox->size; i++) LCD_Char(mbox->inbox->message[i], 70 + i * 6, 6, 1, WHITE, GLASSY); } else LCD_String("ERR", 36 + 3 * 7, 6, 1, RED, GLASSY); //               .    ,            . /* infinity loop */ while (1) { if (button_state.state[B_LGHT] == B_CLICK) { sender('+'); button_state.state[B_LGHT] = B_RELEASE; } /*       */ } } 


рдореИрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпрд╣ proto.o рдореЙрдбреНрдпреВрд▓ рд╣реИ - proto.c рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ proto.h рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ред рдореИрдВ рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрдбрд╝рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░реБрдХрд╛рд╡рдЯреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЛ рдЕрдм рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рднреЗрдЬрдирд╛ 2 рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдмрд╛рдЗрдЯреНрд╕ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рд╡реИрдзрддрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдХреА рдЬрд╛рдБрдЪ рдХреАред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рд╡реАрдбрд┐рдпреЛ рднреА рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реВрдВ:


рдЕрдВрддрднрд╛рд╖рдг


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

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


All Articles