рдЬрдВрдЧ рд▓рдЧрд╛ рд╣реБрдЖред STM32F103C8T6 (рдмреНрд▓реИрдХ рдкрд┐рд▓) рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПрдо 3 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕

рдирдорд╕реНрдХрд╛рд░! рдореИрдВ рдЖрдкрдХреЛ рд░рд╕реНрдЯ рдПрдВрдмреЗрдбреЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ред рдпрд╣ рд╣рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ (рдПрдВрдмреЗрдбреЗрдб рд▓рд┐рдирдХреНрд╕ / рдЖрд░рдЯреАрдУрдПрд╕ / рдмреЗрдпрд░ рдореЗрдЯрд▓) рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд░рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


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

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

рд╣рдореЗрдВ STM32 рдбрд┐рдмрдЧ рдмреЛрд░реНрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕рд╕реНрддреЗ рдФрд░ рд╕рд╕реНрддреА рдЪреАрдиреА рдПрд╕рдЯреА-рд▓рд┐рдВрдХ рд╡реА 2 рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред


рдЬрдВрдЧ рд╕рдВрдХрд▓рдХ рд╕рдВрд╕реНрдХрд░рдг


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

> rustc --version

рдШрдЯрдХ рд╕реНрдерд╛рдкрдирд╛


рдЕрдм рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

GNU рдЖрд░реНрдо рдПрдВрдмреЗрдбреЗрдб рдЯреВрд▓рдЪрд┐рди


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

рд▓рд┐рдВрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд░реНрдЬ рдХрд░рдХреЗ рд╕рдм рдХреБрдЫ рд╣реИ рдпрд╛ рдирд╣реАрдВ:

> arm-none-eabi-gdb -v

рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рддреЛ рдЖрдк рд╕реНрдерд╛рдкрд┐рдд рдШрдЯрдХ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВрдЧреЗред

рдПрд╕рдЯреА-рд▓рд┐рдВрдХ рдбреНрд░рд╛рдЗрд╡рд░


рдПрд╕рдЯреА-рд▓рд┐рдВрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╣реА ( рдЪреМрдВрд╕рда рдмрд┐рдЯ рдпрд╛ рдмрддреНрддреАрд╕ ) рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ ред

рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ

ST- рд▓рд┐рдВрдХ рдЙрдкрдХрд░рдг


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



рдорд╛рд▓-binutils


рдЕрдВрдд рдореЗрдВ, рдкреИрдХреЗрдЬ рдХрд╛рд░реНрдЧреЛ-рдмрд┐рдиреБрдЯрд┐рд▓реНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдпрд╣ рдХрдВрд╕реЛрд▓ рдореЗрдВ рджреЛ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

> cargo install cargo-binutils
> rustup component add llvm-tools-preview

рдпрд╣ рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛


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

> cargo new stm32f103c8t6

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЕрдиреБрдХреВрд▓рди


Cargo.toml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ :

[package]
name = "stm32f103c8t6"
version = "0.1.0"
authors = ["Nick"]
edition = "2018"

#      Cortex-M3
[dependencies]
cortex-m = "*"
cortex-m-rt = "*"
cortex-m-semihosting = "*"
panic-halt = "*"
nb = "0.1.2"
embedded-hal = "0.2.3"

#       stm32f1
[dependencies.stm32f1xx-hal]
version = "0.5.2"
features = ["stm32f100", "rt"]

#   `cargo fix`!
[[bin]]
name = "stm32f103c8t6"
test = false
bench = false

#   
[profile.release]
codegen-units = 1 #  
debug = true #  ,     Flash 
lto = true #  

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐, рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

MEMORY
{
 FLASH : ORIGIN = 0x08000000, LENGTH = 64K
 RAM : ORIGIN = 0x20000000, LENGTH = 20K
}

рд▓рдХреНрд╖реНрдп рдордВрдЪ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдХрд▓рди рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛


рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

> rustup target add thumbv7m-none-eabi

рдЙрд╕рдХреЗ рдмрд╛рдж, "рдмрдирд╛рдиреЗ рдХреЗ .cargo " рдлрд╝реЛрд▓реНрдбрд░ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ "рдореЗрдВ config " рдЙрд╕ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ ред рд╡рд┐рдиреНрдпрд╛рд╕

рдлрд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА :

[target.thumbv7m-none-eabi]

[target.'cfg(all(target_arch = "arm", target_os = "none"))']

rustflags = ["-C", "link-arg=-Tlink.x"]

[build]
target = "thumbv7m-none-eabi"  # Cortex-M3

рдЗрд╕реЗ рдореЗрдВ, рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдХрд▓рди рд▓рдХреНрд╖реНрдп рдХреА рдкрд╣рдЪрд╛рди рдХреА, рдЗрд╕ рдПрдХ рд╣рд╛рде рдореЗрдВ рд╣рдорд╛рд░реЗ рдХреЛрдб рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ .elf рдПрдХ рд╕рд░рд▓ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓:

> cargo build --release

рдЙрджрд╛рд╣рд░рдг


рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рдПрдХ рдПрд▓рдИрдбреА рдирд┐рдорд┐рд╖ред Main.rs

рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА :

#![deny(unsafe_code)]
#![no_std]
#![no_main]

use panic_halt as _;

use nb::block;

use stm32f1xx_hal::{
    prelude::*,
    pac,
    timer::Timer,
};
use cortex_m_rt::entry;
use embedded_hal::digital::v2::OutputPin;

//   .
#[entry]
fn main() -> ! {
    
    //     
    let cp = cortex_m::Peripherals::take().unwrap();
    let dp = pac::Peripherals::take().unwrap();
    let mut flash = dp.FLASH.constrain();
    let mut rcc = dp.RCC.constrain();

    let clocks = rcc.cfgr.freeze(&mut flash.acr);
    let mut gpiob = dp.GPIOB.split(&mut rcc.apb2);

    //   b12   .
    //  "crh"      .
    //   0-7,    "crl".
    let mut led = gpiob.pb12.into_push_pull_output(&mut gpiob.crh);
    //        .
    let mut timer = Timer::syst(cp.SYST, &clocks)
    .start_count_down(1.hz());

    //     
    //    .
    loop {
        block!(timer.wait()).unwrap();
        led.set_high().unwrap();
        block!(timer.wait()).unwrap();
        led.set_low().unwrap();
    }
}

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, - рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ #![deny(unsafe_code)], рд╣рдо рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред

рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдордиреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд░рдЦрд╛ #![no_std], рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирдВрдЧреЗ рд▓реЛрд╣реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрддреА #![no_main]рд╣реИ рдЬреЛ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╣рдо рддрд░реНрдХ рд╡реЗрдХреНрдЯрд░ рдФрд░ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдЕрдиреНрдп рд░рдирдЯрд╛рдЗрдо рдирд╣реАрдВ рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рд┐рдЯрд░реНрди рдорд╛рди рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рджрд╛рдпрд░реЗ рдореЗрдВ рдкреНрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрджрдд рд╕реЗ рдмрд╛рд╣рд░, рд╣рдо рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ -main()ред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ, рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ #[entry]ред

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

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдмреЛрд░реНрдб рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдПрд▓рдИрдбреА рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкрд┐рди рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдмреНрд▓реИрдХ рдкрд┐рд▓ рдмреЛрд░реНрдб рд╣реИ , рдЗрд╕рдореЗрдВ рд▓рдЧреА рдПрд▓рдИрдбреА рдкрд┐рди B12 рд╕реЗ рдЬреБрдбрд╝реА рд╣реИ ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмреНрд▓реВ рдкрд┐рд▓ рдмреЛрд░реНрдб рд╣реИ , рддреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрд▓рдИрдбреА рдХреЗ рд▓рд┐рдП рдкрд┐рди C13 рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкрд┐рди рдмреА 12 рдХреЛ рдПрдХ рдкреБрд╢-рдкреБрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ ledред

рдЕрдм рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдЗрд╡реЗрдВрдЯ рдЯреНрд░рд┐рдЧрд░ рд╕рдордп рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВtimerред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рд╕рдордп рдПрдХ рд╕реЗрдХрдВрдб рдХрд╛ рд╣реИред

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

рд╕рдВрдХрд▓рди


рдЕрдм рдЬрдм рд╣рдордиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдФрд░ рд▓реЙрдЬрд┐рдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде .elf рдлрд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :

> cargo build --release

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

рд▓реЗрдХрд┐рди, рдирдВрдЧреЗ рдзрд╛рддреБ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ .elf рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ , рдмрд▓реНрдХрд┐ рдПрдХ .bin рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ред рдПрдХ .bin рдлрд╝рд╛рдЗрд▓ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЫрд╡рд┐ рд╣реИ рдЬрд┐рд╕реЗ рдорд╛рдЗрдХреНрд░реЛ-рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рдмрд╛рдЗрдЯ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред .Elf рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ .bin рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ :

> cargo objcopy --bin stm32f103c8t6 --target thumbv7m-none-eabi --release -- -O binary stm32f103c8t6.bin

рдЕрдм рд╣рдорд╛рд░реА рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред

рд╕рдВрдмрдВрдз


рд╣рдо рдПрд╕рдЯреА-рд▓рд┐рдВрдХ рд╡реА 2 рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЛрд░реНрдб рдХреЛ рдлреНрд▓реИрд╢ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдмреЛрд░реНрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

рдХреЗ 3.3V рдФрд░ GND рдкрд┐рди рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ ред рдкрд┐рдВрдЧ SWDIO DIO рдХреЛ рдкрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ , рдФрд░ CLK рдХреЛ рдкрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SWCLK рдХреЛ рдкрд┐рди рдХрд░реЗрдВ ред

рдмреЛрд░реНрдб рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдПрд╕рдЯреА-рд▓рд┐рдВрдХ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди!рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдмреЛрд░реНрдб рд╕реЗ рдЕрдиреНрдп рд╕рднреА рдмрд┐рдЬрд▓реА рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдмреЛрд░реНрдб рдпрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм рд╣рдо рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

> st-info --descr

рдХрдВрд╕реЛрд▓ рдореЗрдВ, рд╣рдореЗрдВ " рдПрдл 1 рдордзреНрдпрдо-рдШрдирддреНрд╡ рдбрд┐рд╡рд╛рдЗрд╕ " рд▓рд╛рдЗрди рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдлрд░реНрдорд╡реЗрдпрд░


рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЪрдордХрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдмреЛрд░реНрдб рдХреА рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдл рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЙрд╕ рдкрд░ рдХреБрдЫ рд▓рд┐рдЦрд╛ рд╣реИ:

> st-flash erase

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдлрд░реНрдорд╡реЗрдпрд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

> st-flash write stm32f1.bin 0x8000000

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдирд┐рдорд┐рд╖ рдПрд▓рдИрдбреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрдзрд╛рдИ рд╣реЛ!

рдирд┐рд╖реНрдХрд░реНрд╖


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

> cargo build --release
> cargo objcopy --bin stm32f103c8t6 --target thumbv7m-none-eabi --release -- -O binary stm32f103c8t6.bin
> st-flash erase
> st-flash write stm32f1.bin 0x8000000

рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ .bat рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдЦрдХ рд╕реЗ


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

рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

All Articles