STM32L- рдбрд┐рд╕реНрдХрд╡рд░реА рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдкрд░ рдПрд▓рд╕реАрдбреА рд╕рдВрдХреЗрддрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рд╕рд┐рджреНрдзрд╛рдВрдд


рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА


STM32L- рдбрд┐рд╕реНрдХрд╡рд░реА рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдореЗрдВ рдПрдХ рд▓рд┐рдХреНрд╡рд┐рдб рдХреНрд░рд┐рд╕реНрдЯрд▓ рдЗрдВрдбрд┐рдХреЗрдЯрд░ (рдПрд▓рд╕реАрдбреА, рдЗрдВрдЧреНрд▓рд┐рд╢ рдПрд▓рд╕реАрдбреАред рд▓рд┐рдХреНрд╡рд┐рдб рдХреНрд░рд┐рд╕реНрдЯрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ) рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЫрд╣ 14 рд╕реЗрдЧрдореЗрдВрдЯ рдХреИрд░реЗрдХреНрдЯрд░, 4 рдХреЛрд▓рди рдХреИрд░реЗрдХреНрдЯрд░ (рдХреЛрд▓рди), 4 рдбреЙрдЯреНрд╕ (DP), 4 рд╕реНрдЯреНрд░рд┐рдкреНрд╕ (рдмрд╛рд░) рд╣реИрдВред рд╕рднреА рдЦрдВрдбреЛрдВ рдХреЛ 24 рдЦрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ OM0, COM1, COM2, COM3 рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдХрд╛ рдЕрдкрдирд╛ рдЕрд▓рдЧ "рд╕рд╛рдорд╛рдиреНрдп рддрд╛рд░" рд╣реЛрддрд╛ рд╣реИред


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

рдПрд▓рд╕реАрдбреА рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрдореГрддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ


STM32L152RB рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ LCD_RAM тАЛтАЛрд░рдЬрд┐рд╕реНрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдЦрдВрдб рд╕рдореВрд╣ COM0 - COM3 рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рджреЛ 32 рдмрд┐рдЯ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдИ рд░рдЬрд┐рд╕реНрдЯрд░ рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рд╕реЗ рдЕрдзрд┐рдХ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдПрд▓рд╕реАрдбреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рдПрд▓рд╕реАрдбреА рдХреЛ 176 рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 4 COM0 - COM3 рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ 44 рд╕реЗрдЧрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, 320 рд╕реЗрдЧрдореЗрдВрдЯ рд╡рд╛рд▓реЗ рдПрд▓рд╕реАрдбреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 40 рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдХреЗ 8 COM0 - COM7 рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



STM32L-рдбрд┐рд╕реНрдХрд╡рд░реА рдбрд┐рдмрдЧ рдмреЛрд░реНрдб 96 рдЦрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде 4 рдЦрдВрдб COM0 - COM3 рдореЗрдВ 24 рдЦрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдПрд▓рд╕реАрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

STM32L-рдбрд┐рд╕реНрдХрд╡рд░реА рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдкрд░ рдПрд▓рд╕реАрдбреА рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдХрд┐ рдмрд┐рдЯреНрд╕ S40, рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдореЗрдВ рджреВрд╕рд░реЗ LCD_RAM тАЛтАЛрд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ S41 рдФрд░ рдкрд╣рд▓реЗ LCD_RAM тАЛтАЛрд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ S0-S27 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд┐рдЯреНрд╕ S40-S43 рдХреА рдЬрд╛рдирдХрд╛рд░реА рдореБрдХреНрдд рдмрд┐рдЯреНрд╕ S28-S31 рдореЗрдВ рд░реАрдореЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд░реНрдЬ рдХреА рдЬрд╛рдПрдЧреАред

рдлреНрд░реАрдХреНрд╡реЗрдВрд╕реА рдбрд┐рд╡рд╛рдЗрдбрд░ рдмреНрд▓реЙрдХ


рдлрд╝реНрд░рд┐рдХреНрд╡реЗрдВрд╕реА рдЬрдирд░реЗрдЯрд░ рдмреНрд▓реЙрдХ рдЖрдкрдХреЛ рдПрд▓рд╕реАрдбреА рдкрд░ 32 kHz рд╕реЗ 1 MHz рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдлреНрд░реЗрдо рджрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдШрдбрд╝реА рд╕рдВрдХреЗрдд рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
  1. 32 kHz рдмрд╛рд╣рд░реА рдХрдо рдЖрд╡реГрддреНрддрд┐ рдерд░рдерд░рд╛рдирд╡рд╛рд▓рд╛ (LSEред рдХрдо рдЧрддрд┐ рдмрд╛рд╣рд░реА)
  2. 37 kHz рдЖрдВрддрд░рд┐рдХ рдХрдо рдЖрд╡реГрддреНрддрд┐ рдерд░рдерд░рд╛рдирд╡рд╛рд▓рд╛ (LSIред рдХрдо рдЧрддрд┐ рдЖрдВрддрд░рд┐рдХ)
  3. 2.48 рдФрд░ 16 рдХреА рдЖрд╡реГрддреНрддрд┐ рдбрд┐рд╡рд╛рдЗрдбрд░ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдЖрд░рдПрдл рдЬрдирд░реЗрдЯрд░ рдФрд░ 1 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдЕрдзрд┐рдХрддрдо рдЖрд╡реГрддреНрддрд┐ред (рдПрдЪрдПрд╕рдИред рдЙрдЪреНрдЪ рдЧрддрд┐ рдмрд╛рд╣рд░реА)

рд╕рдЯреАрдХ рддреБрд▓реНрдпрдХрд╛рд▓рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдПрд▓рд╕реАрдбреА рдЦрдВрдбреЛрдВ рдореЗрдВ рдбреАрд╕реА рд╡реЛрд▓реНрдЯреЗрдЬ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдШрдбрд╝реА рд╕реНрд░реЛрдд рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред LCDCLK рдХреНрд▓реЙрдХ рд╕рд┐рдЧреНрдирд▓ рдХреЛ LCD рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдЧреБрдгрд╛рдВрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ LCD_FCR рд░рдЬрд┐рд╕реНрдЯрд░ (рдлреНрд░реЗрдо рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░) рдХреЗ PS [3: 0], DIV [3: 0] рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЖрд╡реГрддреНрддрд┐ рдбрд┐рд╡рд╛рдЗрдбрд░ рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкрд░рд┐рдгрд╛рдореА рдЖрд╡реГрддреНрддрд┐ рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ:

f ck_div = F LCDCLK / (2 PS * (16 + DIV))

рдлреНрд░реЗрдо рджрд░ рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ:

f рдлреНрд░реЗрдо = f ck_div * рдХрд░реНрддрд╡реНрдп

рдЬрд╣рд╛рдВ рдХрд░реНрддрд╡реНрдп рд╣реИ, рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ рдЕрдкрдиреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдирд╛рдбрд╝реА рдЕрд╡рдзрд┐ рдХрд╛ рдЕрдиреБрдкрд╛рдд рд╣реИред рдПрдХ рдлреНрд░реЗрдо рдХреЗ рджреМрд░рд╛рди, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ LCD_RAM тАЛтАЛ[x], LCD_RAM тАЛтАЛ[x + 1] рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдПрд▓рд╕реАрдбреА рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдПрд▓рд╕реАрдбреА рдХреЗ рд▓рд┐рдП, рдПрдХ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП, рдПрд▓рд╕реАрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ COM0 - COM3 рдЦрдВрдбреЛрдВ рдХреЗ 4 рд╕рдореВрд╣реЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдкрд▓реНрд╕ рдЕрд╡рдзрд┐ рдлреНрд░реЗрдо рдЕрд╡рдзрд┐ рдХрд╛ 1/4 рд╣реЛрдЧреА, рдЕрд░реНрдерд╛рддред рдХрд░реНрддрд╡реНрдп = рез/рекред

рдПрд▓рд╕реАрдбреА рдкреНрд░рдмрдВрдзрди


рдПрд▓рд╕реАрдбреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ- рд╕реНрдЯреИрдЯрд┐рдХ рдХрдВрдЯреНрд░реЛрд▓ рдореЛрдб рдФрд░ рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдореЛрдбред рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде, рд╕реВрдЪрдХ рдирд┐рд░реНрд╡рд╣рди рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдПрд▓рд╕реАрдбреА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, STM32LDiscovery рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдкрд░, рдЖрдкрдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ 6 * 14 = 84 рдкрд┐рди (рдХреЙрд▓реЛрди, рдбреЙрдЯреНрд╕ рдФрд░ рд╕реНрдЯреНрд░рд┐рдкреНрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдкрд┐рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг, рдЕрдиреНрдп рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЬреБрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред STM32L152RB рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ 64 рдкрд┐рди рд╣реИрдВред рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдореЛрдб (рдЧрддрд┐рд╢реАрд▓ рдирд┐рдпрдВрддреНрд░рдг рдореЛрдб) рдореЗрдВ, рд╕рдВрдХреЗрддрдХ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рдорд╛рди рдЦрдВрдбреЛрдВ рдХреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реВрдЪрдирд╛ рд╕рдВрдХреЗрддрдХ рдмрд┐рдЯреНрд╕ рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрд░рдЬреНрд╡рд▓рди рдХреЗ рдХрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреА рдЖрд╡реГрддреНрддрд┐ рдорд╛рдирд╡ рдЖрдВрдЦ рд╕реЗ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

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

рд╕реВрдЪрдХ рдХрд╛ рдкрд╣рд▓рд╛ рдЕрдВрдХ рд╕рдордп 0 рдкрд░

рд╕рдордп рдкрд░ рд╕реВрдЪрдХ рдХрд╛ рдкрд╣рд▓рд╛ рдЕрдВрдХ t 1

рд╕рдордп рдЯреА 2 рдкрд░ рд╕реВрдЪрдХ рдХрд╛ рдкрд╣рд▓рд╛ рдЕрдВрдХ


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


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

рд╕реЗрдЧрдореЗрдВрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рд╡реЛрд▓реНрдЯреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕реНрддрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдЧреБрдгрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдбреАрдмрдЧ рдмреЛрд░реНрдб рдкрд░ рдПрд▓рд╕реАрдбреА рдбреНрдпреВрдЯреА = 1/4 рдФрд░ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ = 1/3 рдХреЗ рд╕рд╛рде рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХрд░реНрддрд╡реНрдп рдФрд░ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдХрд╛ рдорд╛рди DUTY [2: 0] рдФрд░ BIAS [1: 0] рдмрд┐рдЯреНрд╕ рдореЗрдВ LCD_CR (рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрднреНрдпрд╛рд╕


рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкреЛрд░реНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛


рдПрд▓рд╕реАрдбреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
  1. рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░
  2. рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди AF 11 (рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
  3. 400 kHz рдкреЛрд░реНрдЯ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдлреНрд░рд┐рдХреНрд╡реЗрдВрд╕реА рд╣реИ
  4. рдкреБрд╢-рдкреБрд▓ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  5. рдкреБрд▓-рдЕрдк рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛

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

рдПрд▓рд╕реАрдбреА рдкрд┐рди рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ GPIOA (PA1-PA3, PA8-PA10, PA15), GPIOB (PB3-PB5, PB8-PB15), GPIOC (PC0-PC3, PC6-PC11) рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред рдПрд▓рд╕реАрдбреА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрдпрдирд┐рдд рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рдПрдХ рдШрдбрд╝реА рд╕рдВрдХреЗрдд рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ GPIO рдкреЛрд░реНрдЯ рдХреА рдХреНрд▓реЙрдХрд┐рдВрдЧ RCC (рд░реАрд╕реЗрдЯ рдПрдВрдб рдХреНрд▓реЙрдХ рдХрдВрдЯреНрд░реЛрд▓) рд╕рд┐рд╕реНрдЯрдо рдХреЗ AHB рдмрд╕ рд╕реЗ рдЖрддреА рд╣реИ - рдХреНрд▓реЙрдХрд┐рдВрдЧ рдФрд░ рд░реАрд╕реЗрдЯ рд╕рд┐рд╕реНрдЯрдоред RCC_AHBENR (AHB рдкрд░рд┐рдзреАрдп рдШрдбрд╝реА рд╕рдХреНрд╖рдо рд░рдЬрд┐рд╕реНрдЯрд░) рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХрд░рдХреЗ рдШрдбрд╝реА рд╕рд┐рдЧреНрдирд▓ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИред

рд░рдЬрд┐рд╕реНрдЯрд░ RCC_AHBENR (рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рдкрд╣рд▓реЗ 15 рдЕрдВрдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИ)

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

RCC->AHBENR |=(RCC_AHBENR_GPIOAEN|RCC_AHBENR_GPIOBEN|RCC_AHBENR_GPIOCEN);  RCC->AHBENR = 0x7; /* 0x7=111 */ 


GPIOx_MODER (GPIO рдкреЛрд░реНрдЯ рдореЛрдб рд░рдЬрд┐рд╕реНрдЯрд░) рд░рдЬрд┐рд╕реНрдЯрд░ (x = A..H) рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЛрд░реНрдЯ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЛ MODERy рд╕рдореВрд╣реЛрдВ [1: 0] рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ y рд╕рдВрдмрдВрдзрд┐рдд рдкреЛрд░реНрдЯ рдХрд╛ рдкрд┐рди рдирдВрдмрд░ рд╣реИред рдкреЛрд░реНрдЯ рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдореЛрдб рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рдкрд┐рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рдореВрд╣ рдореЗрдВ, рдорд╛рди рдХреЛ 10 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред GPIOA рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд┐рди 1-3.8-10.15 рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд 1 рд╕реЗ 3,5,7,17,19,21,31 рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХрд░реЗрдВред

GPIOx_MODER рд░рдЬрд┐рд╕реНрдЯрд░ (GPIO рдкреЛрд░реНрдЯ рдореЛрдб рд░рдЬрд┐рд╕реНрдЯрд░)

 GPIOA->MODER |= (GPIO_MODER_MODER1_1 | GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1 | GPIO_MODER_MODER8_1 | GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1 | GPIO_MODER_MODER15_1);  GPIOA->MODER = 0x802A00A8; /* 0x802A00A8=1000 0000 0010 1010 0000 0000 1010 1000 */ GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1 | GPIO_MODER_MODER8_1 | GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1 | GPIO_MODER_MODER15_1); GPIOA->MODER |= (GPIO_MODER_MODER1_1 | GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1 | GPIO_MODER_MODER8_1 | GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1 | GPIO_MODER_MODER15_1);  GPIOA->MODER = 0x802A00A8; /* 0x802A00A8=1000 0000 0010 1010 0000 0000 1010 1000 */ 

рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкреЛрд░реНрдЯреНрд╕ рдХреЛ рдкреБрд╢-рдкреБрд▓ рдореЛрдб рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП, GPIOx_OTYPER (GPIO рдкреЛрд░реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдЯрд╛рдЗрдк рд░рдЬрд┐рд╕реНрдЯрд░) рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдкрд┐рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдмрд┐рдЯреНрд╕ рдореЗрдВ 1 рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

GPIOx_OTYPER рд░рдЬрд┐рд╕реНрдЯрд░ (GPIO рдкреЛрд░реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рдХрд╛рд░ рд░рдЬрд┐рд╕реНрдЯрд░)

 GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_1 | GPIO_OTYPER_OT_2 | GPIO_OTYPER_OT_3 | GPIO_OTYPER_OT_8 | GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10 | GPIO_OTYPER_OT_15);  GPIOA->OTYPER &= ~0x0000870E; /* 0x870E=1000 0111 0000 1110 */ | GPIO_OTYPER_OT_2 | GPIO_OTYPER_OT_3 | GPIO_OTYPER_OT_8 | GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10 | GPIO_OTYPER_OT_15); GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_1 | GPIO_OTYPER_OT_2 | GPIO_OTYPER_OT_3 | GPIO_OTYPER_OT_8 | GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10 | GPIO_OTYPER_OT_15);  GPIOA->OTYPER &= ~0x0000870E; /* 0x870E=1000 0111 0000 1110 */ 

рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рдЪрдпрдирд┐рдд рдкрд┐рдВрд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред (GPIOA рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП, рдкрд┐рди 1-3.8-10.15 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ)ред рдпрджрд┐ рдЖрдкрдХреЛ рдкреЛрд░реНрдЯ рдХреЗ рд╕рднреА рдкрд┐рди рдХреЛ рдкреБрд╢-рдкреБрд▓ рдореЛрдб рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдореВрд▓реНрдп рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 GPIOA->OTYPER = 0x0; 

GPIOx_OSPEEDR (GPIO рдкреЛрд░реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдкреАрдб рд░рдЬрд┐рд╕реНрдЯрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЛрд░реНрдЯ рдореЗрдВ рд╕реВрдЪрдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рд░рдЬрд┐рд╕реНрдЯрд░ рдмрд┐рдЯреНрд╕ рдХреЛ OSPEEDRy [1: 0] рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ y рд╕рдВрдмрдВрдзрд┐рдд рдкреЛрд░реНрдЯ рдХрд╛ рдкрд┐рди рдирдВрдмрд░ рд╣реИред рдЗрд╕ рдХрд╛рдо рдореЗрдВ, 400 kHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдЕрд░реНрдерд╛рддреН рдкрд┐рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рдореВрд╣ рдореЗрдВ, рдорд╛рди рдХреЛ 00 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

GPIOx_OSPEEDR рд░рдЬрд┐рд╕реНрдЯрд░ (GPIO рдкреЛрд░реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдкреАрдб рд░рдЬрд┐рд╕реНрдЯрд░)

 GPIOA->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR1 | GPIO_OSPEEDER_OSPEEDR2 | GPIO_OSPEEDER_OSPEEDR3 | GPIO_OSPEEDER_OSPEEDR8 | GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR10 | GPIO_OSPEEDER_OSPEEDR15);  GPIOA->OSPEEDR &= ~0xC03F00FC; /*0xC03F00FC=1100 0000 0011 1111 0000 0000 1111 1100 */ 

рдпрджрд┐ рд╕рднреА рдкрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП 400 kHz рдкреЛрд░реНрдЯ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдЖрдк рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдореВрд▓реНрдп рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 GPIOA->OSPEEDR = 0x0; 

GPIOx_PUPDR (GPIO рдкреЛрд░реНрдЯ рдкреБрд▓рдЕрдк / рдкреБрд▓-рдбрд╛рдЙрди рд░рдЬрд┐рд╕реНрдЯрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрдпрдирд┐рдд рдкрд┐рди рдХреЗ рд▓рд┐рдП рдкреБрд▓-рдЕрдк рдФрд░ рдкреБрд▓-рдбрд╛рдЙрди рдкреБрд▓-рдЕрдк рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЛ PUPDRy рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ [1: 0], рдЬрд╣рд╛рдВ y рд╕рдВрдмрдВрдзрд┐рдд рдкреЛрд░реНрдЯ рдХрд╛ рдкрд┐рди рдирдВрдмрд░ рд╣реИред рдкрд┐рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рдореВрд╣ рдореЗрдВ рдкреБрд▓-рдЕрдк рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рди 00 рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

GPIOx_PUPDR рд░рдЬрд┐рд╕реНрдЯрд░ (GPIO рдкреЛрд░реНрдЯ рдкреБрд▓-рдЕрдк / рдкреБрд▓-рдбрд╛рдЙрди рд░рдЬрд┐рд╕реНрдЯрд░)

 GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR1 | GPIO_PUPDR_PUPDR2 | GPIO_PUPDR_PUPDR3 | GPIO_PUPDR_PUPDR8 | GPIO_PUPDR_PUPDR9 | GPIO_PUPDR_PUPDR10 | GPIO_PUPDR_PUPDR15);  GPIOA->PUPDR &= ~0xC03F00FC; /*0xC03F00FC=1100 0000 0011 1111 0000 0000 1111 1100 */ 

рдпрджрд┐ рд╕рднреА рдкрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрд▓-рдЕрдк рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдЖрдк рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдореВрд▓реНрдп рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 GPIOA->PUPDR = 0x0; 

рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рд░рдЬрд┐рд╕реНрдЯрд░ GPIOx_AFRL (GPIO рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрдо рд░рдЬрд┐рд╕реНрдЯрд░), рдЬреЛ рдХрдо рдкрд┐рди (0 рд╕реЗ 7) рдФрд░ GPIOx_AFRH (GPIO рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдЙрдЪреНрдЪ рд░рдЬрд┐рд╕реНрдЯрд░) рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬреЛ рдЙрдЪреНрдЪ рдкрд┐рди (8 рд╕реЗ 15 рддрдХ) рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЛ AFRLy [3: 0] рдФрд░ AFRHy [3: 0] рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдБ y рд╕рдВрдмрдВрдзрд┐рдд рдкреЛрд░реНрдЯ рдХрд╛ рдкрд┐рди рдирдВрдмрд░ рд╣реИред рдкреЛрд░реНрдЯ рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди AF11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкрд┐рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рдореВрд╣ рдореЗрдВ, рдорд╛рди 1011 рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

GPIOx_AFRL рд░рдЬрд┐рд╕реНрдЯрд░ (GPIO рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрдо рд░рдЬрд┐рд╕реНрдЯрд░)


GPIOx_AFRH рд░рдЬрд┐рд╕реНрдЯрд░ (GPIO рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдп рдЙрдЪреНрдЪ рд░рдЬрд┐рд╕реНрдЯрд░)

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдорд╛рди рд▓рд┐рдЦреЗрдВ:
 GPIOA->AFR[0] = 0xBBB0; /* 0xBBB0 = 1011 1011 1011 0000*/ GPIOA->AFR[1] = 0xB0000BBB; /* 0xB0000BBB=1011 0000 0000 0000 0000 1011 1011 1011*/ 

AFR [0] = 0xBBB0 - GPIOx_AFRL рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдорд╛рди рд▓рд┐рдЦрддрд╛ рд╣реИред
AFR [1] = 0xB0000BBB - GPIOx_AFRH рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдорд╛рди рд▓рд┐рдЦрддрд╛ рд╣реИред

рдЗрд╕реА GPIOB, GPIOC рдкреЛрд░реНрдЯ рдкрд┐рди рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВред

рдПрд▓рд╕реАрдбреА рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗрдЯрдЕрдк


рдПрд▓рд╕реАрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЕрдиреНрдп рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдбрд╝реА рд╕рдВрдХреЗрдд рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдмрд┐рдЬрд▓реА рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдбрд╝реА рд╕рдВрдХреЗрдд рднреА рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рдкрд╛рд╡рд░ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП APB1 рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред RCC_APB1ENR рд░рдЬрд┐рд╕реНрдЯрд░ (APB1 рдкрд░рд┐рдзреАрдп рдШрдбрд╝реА рд╕рдХреНрд╖рдо рд░рдЬрд┐рд╕реНрдЯрд░) рдореЗрдВ рдХреНрд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 9 рд╡реЗрдВ рдФрд░ 28 рд╡реЗрдВ рдЕрдВрдХ рдореЗрдВ 1 рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд░рдЬрд┐рд╕реНрдЯрд░ RCC_APB1ENR (APB1 рдкрд░рд┐рдзреАрдп рдШрдбрд╝реА рд╕рдХреНрд╖рдо рд░рдЬрд┐рд╕реНрдЯрд░)

 RCC->APB1ENR |= RCC_APB1ENR_PWREN|RCC_APB1ENR_LCDEN;  RCC->APB1ENR |= 0x10000200; /* 0x10000200=1 0000 0000 0000 0000 0010 0000 0000 */ 

рдПрд▓рд╕реАрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдШрдбрд╝реА рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕реНрд░реЛрдд рд░рдЬрд┐рд╕реНрдЯрд░ RCC_CSR рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЗрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрд░ рд▓рд┐рдЦрдирд╛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИред рдкреЙрд╡рд░ рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ PWR_CR (рдкреАрдбрдмреНрд▓реВрдЖрд░ рдкреЙрд╡рд░ рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░) рдореЗрдВ, RCC_CSR рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИред RCC_CSR рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд░рдЯреАрд╕реА рдФрд░ рдПрд▓рд╕реАрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдШрдбрд╝реА рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
RCC_CSR рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рд▓рд┐рдЦрдирд╛ PWR_CR рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ 1 рд╕реЗ 8 рд╡реЗрдВ рдЕрдВрдХ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред

PWR_CR рд░рдЬрд┐рд╕реНрдЯрд░ (PWR рдкрд╛рд╡рд░ рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░)

 PWR->CR |= PWR_CR_DBP;  PWR->CR |= 0x100; /* 0x100 =1 0000 0000 */ 

LCD рдХрдВрдЯреНрд░реЛрд▓рд░ (рдФрд░ RTC рдХреНрд▓реЙрдХ) рдХреЗ рдХреНрд▓реЙрдХ рд╕реЛрд░реНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ RCC_CSR (рдХрдВрдЯреНрд░реЛрд▓ / рд╕реНрдЯреЗрдЯрд╕ рд░рдЬрд┐рд╕реНрдЯрд░) рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ RTCRST рдмрд┐рдЯ (рд╕реЗрдЯрд┐рдВрдЧ 1 рд╕реЗ 23 рд╡реЗрдВ рдмрд┐рдЯ) рд╕реЗрдЯ рдХрд░рдХреЗ рдХреНрд▓реЙрдХ рд╕реЛрд░реНрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд░рдЬрд┐рд╕реНрдЯрд░ RCC_CSR (рдирд┐рдпрдВрддреНрд░рдг / рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░)

 RCC->CSR |= RCC_CSR_RTCRST; 

рдпрд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рд▓рд┐рдЦрдХрд░ | = =, рдХреНрдпреЛрдВрдХрд┐ рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдп
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ 0x0 рд╕реЗ рдЕрд▓рдЧ рд╣реИ:
 RCC->CSR |= 0x800000; /* 0x800000 = 1000 0000 0000 0000 0000 0000 */ 

рдПрдХ рдирдпрд╛ рдШрдбрд╝реА рд╕реНрд░реЛрдд рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП, RTCRST рдмрд┐рдЯ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
 RCC->CSR &= ~RCC_CSR_RTCRST;  RCC->CSR &= ~0x800000; 

рдПрдХ рдмрд╛рд╣рд░реА рдмрд╛рд╕ рдЬрдирд░реЗрдЯрд░ рдШрдбрд╝реА рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИред RCC_CSR рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, LSEON рдмрд┐рдЯ (1 рд╕реЗ 8 рдмрд┐рдЯ рд╕реЗрдЯ) рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
 RCC->CSR |= RCC_CSR_LSEON;  RCC->CSR |= 0x100; /* 0x100 = 1 0000 0000 */ 

рдЬрдирд░реЗрдЯрд░ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЬрдирд░реЗрдЯрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ RCC_CSR рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ LSERDY рдмрд┐рдЯ рдХреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ:
 while(!(RCC->CSR&RCC_CSR_LSERDY)); 

RCC_CSR рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ RTCSEL [1: 0] рд╕рдореВрд╣ рдореЗрдВ рдорд╛рди 01 рд╕реЗрдЯ рдХрд░рдХреЗ рдмрд╛рд╣рд░реА LF рдЬрдирд░реЗрдЯрд░ рдХреЛ рдШрдбрд╝реА рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ:
 RCC->CSR |= RCC_CSR_RTCSEL_LSE;  RCC->CSR |= 0x10000; /* 0x10000 = 01 0000 0000 0000 0000 */ 

рдПрд▓рд╕реАрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ, рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдореЛрдб рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, LCD_CR (LCD рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░) рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ, рдЖрдкрдХреЛ 10 рдореВрд▓реНрдп BIAS рд╕рдореВрд╣ [1: 0] рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, "рдХрдЪрд░рд╛" рд╕реЗ рдмрд┐рдЯреНрд╕ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд░рдЬрд┐рд╕реНрдЯрд░ LCD_CR (LCD рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░)

рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ рдмрд┐рдЯреНрд╕:
  LCD->CR &= ~LCD_CR_BIAS;  LCD->CR &= ~0x60; 

рдмреАрдорд╛рд╕ рдХрд╛ рд╡рд┐рдХрд▓реНрдк = 1/3 рдмрд┐рдЯрдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:
 LCD->CR |= LCD_CR_BIAS_1;  LCD->CR |= 0x40; 

рдХрд░реНрддрд╡реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ = 1/4 рдореЛрдбред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕рднреА рдмрд┐рдЯреНрд╕ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ:
 LCD->CR &=~LCD_CR_DUTY;  LCD->CR &= ~0x1C; 

LCD_CR рдХреЗ рд▓рд┐рдП DUTY [1: 0] рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдорд╛рди 011 рд╕реЗрдЯ рдХрд░реЗрдВ
рдбреНрдпреВрдЯреА рдореЛрдб = 1/4:
 LCD->CR |= LCD_CR_DUTY_0|LCD_CR_DUTY_1;  LCD->CR |= 0x; 

рд╣рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, LCD_CR рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ 7 рд╡реЗрдВ рдЕрдВрдХ рдореЗрдВ 1 рд╕реЗрдЯ рдХрд░реЗрдВ:
 LCD->CR |= LCD_CR_MUX_SEG;  <source lang=┬лC┬╗>LCD->CR |= 0x80; 

рд╣рдо LCDCLK рдШрдбрд╝реА рд╕рд┐рдЧреНрдирд▓ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХрд╛рд░рдХреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЧреБрдгрд╛рдВрдХ LCD_FCR рд░рдЬрд┐рд╕реНрдЯрд░ (LCD рдлреНрд░реЗрдо рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░) рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЛ рднреА рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рд░рдЬрд┐рд╕реНрдЯрд░ LCD_FCR (рдПрд▓рд╕реАрдбреА рдлреНрд░реЗрдо рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░)

 LCD->FCR &= ~LCD_FCR_PS; LCD->FCR &= ~LCD_FCR_DIV;  LCD->FCR &= ~0x3C00000; LCD->FCR &= ~0x3C0000; 

рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдЧреБрдгрд╛рдВрдХ рдХреЗ рдорд╛рди ck_ps = LCDCLK / 16, ck_div = ck_ps / 17 рдХреЗ рдмрд░рд╛рдмрд░ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 1 рд╕реЗ 24 рдФрд░ 18 рдЕрдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:
  LCD->FCR |= 0x1040000; /*0x1040000 = 1 0000 0100 0000 0000 0000 0000*/ 

рд╡рд╛рдВрдЫрд┐рдд рдХрдВрдЯреНрд░рд╛рд╕реНрдЯ рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CC рд╕рдореВрд╣ [рез: реж] рдХрд╛ рдорд╛рди режрезреж рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╕рд╛рде рд╣реА рдкреБрд░рд╛рдиреЗ рдорд╛рдиреЛрдВ рд╕реЗ рдмрд┐рдЯреНрд╕ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ:
 LCD->FCR &= ~LCD_FCR_CC; LCD->FCR |= LCD_FCR_CC_1;  LCD->FCR &= ~0x1C00; LCD->FCR |= 0x800; /*0x800 = 1000 0000 0000*/ 

рд╕рднреА рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, LCD_FCR рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред LCD_SR рд░рдЬрд┐рд╕реНрдЯрд░ (LCD рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░) рдореЗрдВ FCRSF рдмрд┐рдЯ рдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред

рд░рдЬрд┐рд╕реНрдЯрд░ LCD_SR (рдПрд▓рд╕реАрдбреА рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░)

 while(!(LCD->SR&LCD_SR_FCRSR)); 

рдПрд▓рд╕реАрдбреА рдХреЗ рд▓рд┐рдП рд╡реЛрд▓реНрдЯреЗрдЬ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реА рдПрд▓рд╕реАрдбреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд╕реНрдЯреЗрдк-рдЕрдк рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, LCD_CR рд░рдЬрд┐рд╕реНрдЯрд░ (LCD рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░) рдХрд╛ рдкрд╣рд▓рд╛ рдЕрдВрдХ 0 рдкрд░ рд╕реЗрдЯ рд╣реИ:
 LCD->CR &= ~LCD_CR_VSEL;  LCD->CR &= ~0x2; 

LCD_CR рд░рдЬрд┐рд╕реНрдЯрд░ (LCD рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░) рдХреЗ 1 рд╕реЗ 0 рдмрд┐рдЯ рд╕реЗрдЯ рдХрд░рдХреЗ рдПрд▓рд╕реАрдбреА рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 LCD->CR |= LCD_CR_LCDEN;  LCD->CR |= 0x1; 

рд╡реЛрд▓реНрдЯреЗрдЬ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд╕реНрдЯреЗрдк-рдЕрдк рдХрдирд╡рд░реНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕рдХреА рддрддреНрдкрд░рддрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЙрдкрд▓рдмреНрдзрддрд╛ LCD_SR рд░рдЬрд┐рд╕реНрдЯрд░ (LCD рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░) рдореЗрдВ RDY рдмрд┐рдЯ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ:
 while(!(LCD->SR&LCD_SR_RDY)); 

рдПрд▓рд╕реАрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреА рддрддреНрдкрд░рддрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрдкрд▓рдмреНрдзрддрд╛ LCD_SR рд░рдЬрд┐рд╕реНрдЯрд░ (LCD рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░) рдореЗрдВ ENS рдмрд┐рдЯ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ:
 while(!(LCD->SR&LCD_SR_ENS)); 

рдПрд▓рд╕реАрдбреА рдЗрдореЗрдЬрд┐рдВрдЧ


рд╕рдВрдХреЗрддрдХ рдХреЗ рд╕рднреА рдЦрдВрдбреЛрдВ рдХреЛ рд╕рдореВрд╣ COM0 - COM3 рдореЗрдВ 24 рдЦрдВрдбреЛрдВ (рдкреНрд░рддреНрдпреЗрдХ SEG-SEG23) рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА LCD_RAM тАЛтАЛрдореЗрдВ LCD рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдореЛрд░реА рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИред рдкреАрд╕реАрдмреА рд▓реЗрдЖрдЙрдЯ рдРрд╕рд╛ рд╣реИ рдХрд┐ рдЦрдВрдб рд╕рдВрдЦреНрдпрд╛ LCD_RAM тАЛтАЛрд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдЕрдВрдХреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред

рдПрд▓рд╕реАрдбреА рдХреЗ рдкрд╣рд▓реЗ рдЕрдВрдХ рдореЗрдВ 1 рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 1 рдмреА, 1 рд╕реА рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рд▓рд╛рдЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЦрдВрдб 1 рдмреА рд╕рдореВрд╣ COM0 рдХрд╛ рд╣реИ, рдЦрдВрдб 1C рд╕рдореВрд╣ COM1 рдХрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреНрд░рдорд╢рдГ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рд░реИрдо [0] (LCD_RAM0), рд░реИрдо [2] (LCD_RAM2) рдореЗрдВ рджрд░реНрдЬ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╕реЗрдЧрдореЗрдВрдЯ 1B рдХреЗ рд▓рд┐рдП, LCDSEG22 рдЖрдЙрдЯрдкреБрдЯ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА RAM рд░рдЬрд┐рд╕реНрдЯрд░ [1] (LCD_RAM1) рдХреЗ SEG40 рд╢реНрд░реЗрдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдкреБрди: рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, RAMSEG22 рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП RAM рд░рдЬрд┐рд╕реНрдЯрд░ [0] (LCD_RAM0) рдХрд╛ SEG28 рдмрд┐рдЯ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред рдЦрдВрдб 1C рдХреЗ рд▓рд┐рдП, LCD LCDSEG1 рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА RAM рд░рдЬрд┐рд╕реНрдЯрд░ [2] (LCD_RAM2) рдХреЗ SEG1 рд╢реНрд░реЗрдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред

 LCD->RAM[0]= 0x10000000; /*0x10000000 = 1 0000 0000 0000 0000 0000 0000 0000 */ LCD->RAM[2] = 0x2; /*0x2= 10 */ 

рдореЗрдореЛрд░реА рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдорд╛рди рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрд▓рд╕реАрдбреА рдореЗрдВ рдкрд┐рдЫрд▓рд╛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, UDR (рдЕрдкрдбреЗрдЯ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЕрдиреБрд░реЛрдз) LCD_SR (рдПрд▓рд╕реАрдбреА рд╕реНрдЯреЗрдЯрд╕ рд░рдЬрд┐рд╕реНрдЯрд░) рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдПрд▓рд╕реАрдбреА рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рджреЛ рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░ рд╣реЛрддреЗ рд╣реИрдВ, рд╕реВрдЪрдирд╛ рдХреЛ рдкрд╣рд▓реЗ рдмрдлрд░ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдмрдлрд░ рд╕реЗ рдПрд▓рд╕реАрдбреА рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред UDR рдмрд┐рдЯ рдкрд╣рд▓реЗ рдмрдлрд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рджреМрд░рд╛рди рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, LCD_RAM тАЛтАЛрд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ:
 while(LCD->SR & LCD_SR_UDR); 

LCD_RAM тАЛтАЛрд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, LCD_SR рд░рдЬрд┐рд╕реНрдЯрд░ (LCD рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░) рдореЗрдВ UDR рдмрд┐рдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рд╕реЗрдЯ 1 рд╕реЗ 2 рдмрд┐рдЯ):
  LCD->SR |= LCD_SR_UDR;  LCD->SR |= 0x4; /*0x4 = 100 */ 


рддреИрдпрд╛рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб
 #include "stm32l1xx.h" void gpio(void); void controller(void); int main() { gpio(); controller(); while(LCD->SR & LCD_SR_UDR); LCD->RAM[0]= 0x3E300FFF; LCD->RAM[2] = 0x2EB00382; LCD->RAM[6] = 0x400; LCD->SR |= LCD_SR_UDR; while(1); } void gpio(void) { RCC->AHBENR |= 0x7; GPIOA->MODER |= 0x802A00A8; GPIOB->MODER |= 0xAAAA0A80; GPIOC->MODER |= 0xAAA0AA; GPIOA->OTYPER &= ~0x870E; GPIOB->OTYPER &= ~0xFF38; GPIOC->OTYPER &= ~0xFCF; GPIOA->PUPDR &= ~0xC03F00FC; GPIOB->PUPDR &= ~0xFFFF0FC0; GPIOC->PUPDR &= ~0xFFF0FF; GPIOA->OSPEEDR &= ~0xC03F00FC; GPIOB->OSPEEDR &= ~0xFFFF0FC0; GPIOC->OSPEEDR &= ~0xFFFFF0FF; GPIOA->AFR[0] |= 0xBBB0; GPIOA->AFR[1] |= 0xB0000BBB; GPIOB->AFR[0] |= 0xBBB000; GPIOB->AFR[1] |= 0xBBBBBBBB; GPIOC->AFR[0] |= 0xBB00BBBB; GPIOC->AFR[1] |= 0xBBBB; } void controller(void) { RCC->APB1ENR |= 0x10000200; PWR->CR |= 0x100; RCC->CSR |= 0x800000; RCC->CSR &= ~0x800000; RCC->CSR |= 0x100; while(!(RCC->CSR&RCC_CSR_LSERDY)); RCC->CSR |= 0x10000; LCD->CR &= ~0x60; LCD->CR |= 0x40; LCD->CR &= ~0x1C; LCD->CR |= 0xC; LCD->CR |= 0x80; LCD->FCR &= ~0x3C00000; LCD->FCR &= ~0x3C0000; LCD->FCR |= 0x1040000; LCD->FCR &= ~0x1C00; LCD->FCR |= 0x800; while(!(LCD->SR&LCD_SR_FCRSR)); LCD->CR &= ~0x2; LCD->CR |= 0x1; while(!(LCD->SR&LCD_SR_RDY)); while(!(LCD->SR&LCD_SR_ENS)); } 



UPD: рдЧрд╛рд░рд┐рдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд░реИрдо рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛

рд╕рдВрджрд░реНрдн:
  1. http://chipspace.ru/ STM32L-DISCOVERY рдПрд▓рд╕реАрдбреА рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
  2. http://easyelectronics.ru рдПрдЖрд░рдПрдоред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкрд╛рдареНрдпрдХреНрд░рдо
  3. http://radiokot.ru/ рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдХреЗрдд
  4. STM32 L1 рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХрд╡рд░реА рдХрд┐рдЯ - STM32L152 MCU рдХреЗ рд╕рд╛рде

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


All Articles