ะ
แแฆแแก แแ แแแฉแแแแแแ, แแฃ แ แแแแ แแแแแแงแแแแ แแแแแชแแแแ แชแฎแ แแแแแ แกแแแแแแ แแแ แขแแแ, แแแแ แแ แแฃแชแแแแแแแ แแ แแแแแ แแ แแแฅแขแแกแแแแก, แแแแชแแแแแแก แแแแแกแแญแ แแแแ STM32 (Blue Pill) แแ STM8 แแแแขแ แแแแ แแแแ. แงแแแแ แแแแ แแ แแแฅแขแ แแซแฆแแแแแ แฉแแแก แกแแงแแแ แแ LED-แแแก, แฉแแแ แแแ แแแแ แ แแแแแแแแแ แแแแแแแแแแ, แ แแกแแแแกแแช แแแแแแฌแแแก แงแแแแแแแแ แ แกแแแแขแแ แแกแ แแแ แแคแแ แแฃแแ แแแฌแงแแแแแแแแก แแแแแงแแแแแ.
แขแแฅแกแขแ แแแแแ แฃแแแ แแแแแ แ แแฆแแแฉแแแ, แแแแขแแ แแแฎแแ แฎแแแฃแแแแแกแแแแก แแแแแแแ แจแแแแแ แกแก:
แฃแแ แ แแแกแฃแฎแแกแแแแแแแแแแ: แแ แแ แแแ แแแแแแแ แ, แแ แแแแแ แแ แแ แแขแแแแแแก, แ แแ แฆแ แแ แชแแแแ แแแฅแแก แแแแฅแขแ แแแแแแจแ, แกแขแแขแแ แแแแแฃแแแแแแแ แฉแแแแแแ แ แแแงแแแ แฃแแแแแกแแแแก. แคแแฅแขแแแ แแแแ, แแ แ แฌแแแก แฌแแ แแแแก แแแแแฉแแแแแ แกแแแแแแ แแฃแแแขแแ แแแ. แแแแแแ แ แแ แแแแฅแแ แแแจแแ, แ แแ แฃแชแแแ แฉแแแแ แแแแแชแแแแแแก แคแฃแ แชแแแแ แแ แแงแ แกแแจแแแแแ แฌแแกแแแแแฎแแ, แแแ แแ แแก แแ แแแแฎแแ แฏแแแแ แแแขแแ แแแขแจแ แแแแแแ แแ แแแแแก แแแกแแซแแแแแ แแ แแแแ แแขแแแแ แแ แฌแแแแแแแ แแแแขแแ แฎแแแฏแแฎแแแแก แแแแแแแแแแแก.
แแ แกแขแแขแแแก แงแฃแ แแแฆแแแ แแแแแฎแแแแแแฃแแแ แแแแแชแแแแ แคแฃแ แชแแแแแ แแ แแ แ แแ แแแฅแขแแแแ, แแแแขแแ แแแแ แจแแแซแแแแ แแ แแงแแก แซแแแแแ แกแฃแคแแ แแ แฎแจแแ แแ แแแขแแแ แแฃแแ. แแแแแ แแ แแแฅแขแแแ แซแแแแแ แแแ แขแแแแ, แแฃแแชแ แจแแกแแคแแ แแกแแ แแฎแแแ แฉแแแแก แแแ แแแแ แแแชแแแแแกแแแแก.
แแแแแ แแแฅแแก, แ แแ แฉแแแ แกแขแแขแแ แแแแฎแแแ แแแ แแแแแแก แฐแแแแจแ แฉแแซแแ แแแก แแกแแแแก แแขแแแแ.
STM32
16 LED DM634 แแ SPI
แแแขแแ แ แแ แแแฅแขแ Blue Pill-แแก (STM32F103C8T6) แแ DM634 LED แแ แแแแแ แแก แแแแแงแแแแแแ. แแแแแชแแแแ แชแฎแ แแแแแแก แแแแแงแแแแแแ, แฉแแแ แแแแแ แแแแแ แแ แแแแแ แก, STM IO แแแ แขแแแก แแ SPI-แก แแแแคแแแฃแ แแชแแแก.
DM634
แขแแแแแแแก แฉแแแ 16 16-แแแขแแแแ PWM แแแแแกแแกแแแแแแ, แจแแแซแแแแ แแแแแแจแแ แแแฃแแ แแงแแก แฏแแญแแแแจแ. แแแแแแ แแแแแก 12-แแแขแแแแ แแแแแแ แชแแแแแแแ แจแแแ แแ แแแฅแขแแแแ
แแแแแแแแ แแฌแแ แแแแแแแ แขแแแแแแแแ,
DC แฉแแซแแ แแแก แฌแงแแ แแแแ (แฆแแ แแแแแแแแแชแแ)
แฉแแแซแแ แ / แฆแแ แกแแแแแฆแแ แ แแแแแแแแแแ - แแแแแแแแ; แจแแแแแแแแแ แแแแแก แฌแงแแ แ; แแแแแแแแแแ แฉแแ แแฃแแแ แแแฌแแกแแแ แแฅแขแแฃแ แแแแแแแ แแแแแจแ - LED-แแแ แฃแแแแจแแ แแแแ แแ แแแแแ แก แแแแแแแแแ. แแแแฅแขแ แฃแแ แแแแแกแแแ แแกแแ, แแก, แ แ แแฅแแ แฃแแแ, แแ แแ แแก "แฆแแ แแแแแแแแแชแแ" (แฆแแ แกแแแแแฆแแ แ), แแแแ แแ แแแแแชแแแแ แคแฃแ แชแแแแจแ แฎแจแแ แแ แแแฎแแแแแ แฅแแแซแแกแแแแแแแก แแก แแฆแแแจแแแ แแแแแแแแแก แ แแแแแจแ.
แแแ แ แ แแแแกแขแแ แแแ REXT-แกแ แแ GND-แก แจแแ แแก แแแแแแแแแแ แแแแแก แแแแจแแแแแแแแก แแแกแแงแแแแแแแ
REXT แแแแกแ แแ แแแฌแแก แจแแ แแก แแแแแแขแแแแแฃแแแ แกแแชแแแแแ แ แ แแแแกแขแแ แ, แ แแแแแแช แแแแแขแ แแแแแก แแแแแกแแแแแแแก แจแแแ แฌแแแแแฆแแแแแแแแก, แแฎแแแแ แแแแแ แแแ แแแแแชแแแแ แชแฎแ แแแแก แแ-9 แแแแ แแแ. DM634-แจแ, แแก แฌแแแแแฆแแแแแแแ แแกแแแ แจแแแซแแแแ แแแแขแ แแแแแแแแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แกแแจแฃแแแแแแ, แแแแแแแ แกแแแแจแแแจแแก แแแงแแแแแแ (แแแแแแแฃแ แ แกแแแแจแแแจแ); แแ แกแขแแขแแแจแ แแแขแแแแแจแ แแ แจแแแแ, แฃแแ แแแแ แแฅ แแแแแแ 2.2 - 3 kOhm แ แแแแกแขแแ แก.
แแแแก แแแกแแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแขแ แแแแ แฉแแแ, แแแแแ แจแแแฎแแแแ แแแฌแงแแแแแแแแก แแแขแแ แคแแแกแแก แแฆแฌแแ แแก:
แฐแ, แแ, แฉแแแฃแ แ แแแแแแกแฃแ แ แแแแแ แแแแแกแ แแแแแแแ. แแแแก แแแ แแแแ แแ แแแแแแฃแ แแ, แกแฃแ แแแแแก แจแแแแฎแแแแแจแ แจแแแแซแแแแ แแแแแแ, แแแแ แแ แแ แกแแแแแก แกแฎแแ แแแ - แแแฎแแ, แ แแแแ แแ แแก แแฆแฌแแ แแแ แคแฃแแฅแชแแฃแ แแ แแกแแแแก TLC5940-แแแ แแแแจแแ แ แแแแแชแแแแ แคแฃแ แชแแแจแ:
... แแแฌแงแแแแแแแแจแ แแแแแชแแแแแแก แจแแกแแขแแแแ แกแแญแแ แแ แแฎแแแแ แกแแแ แแแแ. SCLK แกแแแแแแแก แแแแแแแแแ แแแแ แแแแแแฅแแก แแแแแชแแแแแก SIN แแแแแแแ แจแแแ แ แแแกแขแ แจแ. แงแแแแ แแแแแชแแแแก แฉแแขแแแ แแแแก แจแแแแแ, แแแแแ แแแฆแแแ XLAT แกแแแแแแ แแแแแแแก แแแแแแแแแแ แฃแแแ แแแแแชแแแฃแ แแแแแชแแแแแก แจแแแ แ แแแกแขแ แแแจแ. แจแแแ แ แแแแกแขแ แแแ แแ แแก แแแ แแแญแแแแ, แ แแแแแแแช แแแแฆแแแฃแแแ XLAT แกแแแแแแแก แแแแแ. แงแแแแ แแแแแชแแแ แแแ แแแ แ แแแจแ แแแแแแชแแแ แงแแแแแแ แแแแจแแแแแแแแ แแแขแก.
แแฃแฅแ โ แฉแแแแแขแ/แฉแแแแแขแ/แกแแแแขแ.
แแแแแแแแแ แแฆแแแ แ - แแฃแแกแแก แฌแแแ แแแแ
MSB แฏแแ โ แงแแแแแแ แแแแจแแแแแแแแแ (แแแ แชแฎแแแ) แแแขแ แฌแแ.
แกแแแแแก แแแแแชแแแแแแกแแแแก - แแแแแชแแแแแแก แแแแแแแแแแ แฃแแแ แแแแแชแแแ (แแแขแ-แแแขแ).
แกแแขแงแแ latch แฎแจแแ แแ แแแฎแแแแแ แฉแแแแแแก แแแแฃแแแแขแแชแแแจแ แแ แแแแ แแแแแแ แกแฎแแแแแกแฎแแ แแแแ, แแแแขแแ แแแแแแแก แแแแแแ แแแแก แฃแคแแแแแก แแแแชแแ
แแชแแ แ แกแแแแแแแแแแแแแแ แแ แแแ แแแLED แแ แแแแแ แ แแ แกแแแแแแ แแ แแก แชแแแแก แ แแแแกแขแ แ. "แชแแแ" (แแแแแแขแแแแก) แกแแฎแแแจแ - แแแแแชแแแแ แแแขแแฃแ แ แแแแแแแแแแแแ แแแฌแงแแแแแแแแก แจแแแแแ: แงแแแแแ แแฎแแแ แแแขแ, แ แแแแแแช แจแแแแแ แแ แแก แฉแแกแแฃแแ, แแแแ แฏแแญแแก แฌแแ แฃแแแซแแแแก แแแก แฌแแ. แแแแก แแแแ, แ แแ แแ แแแแก แกแฃแ แก แแแแแแแ แแแก LED-แแแแก แฅแแแขแฃแ แแแชแแแชแแแแก แชแแแแก แแ แแก, แแ แแชแแกแ แแแแแแแแ แแแแก แแฃแคแแ แฃแ แ แแแแกแขแ แแแจแ, แ แแแแแแแช แแแแแงแแคแแแแ แกแแแฃแจแแ แ แแแแกแขแ แแแแแแ แแแแแแ แแก แกแแจแฃแแแแแแ (latch) แแ แแก แแ แแแแแ แ แแแกแแชแแแแ แแแแฎแ, แกแแแแช แแแขแแแ แแแแแแแแแฃแแแ แกแแกแฃแ แแแแ แแแแแแแแแแ แแแแ. แ แแแแกแแช แงแแแแแคแแ แ แแแแ แแ แแก, แฉแแแแแขแ แแฎแกแแแแ แแ แแแขแแแ แแแแแแแก แกแแแฃแจแแแแ, แชแแแแก แฌแแแ แแแ แขแแแก. แกแแขแงแแ latch แแแแ แแกแฅแแแแแแก แแแแฃแแแแขแแชแแแจแ แแแแฅแแแก แงแแแแแแแแก แแฃแแแกแฎแแแแก แแกแแ แแแแแแ แก, แแ แแฅแแก แแแแจแแแแแแแ แ แ แแแแแแแแชแแแแจแแ แแแ แแแแแงแแแแแฃแแ.
แแกแ แ แแ, แแแแแชแแแแ แแแแแชแแแ DM634-แแ แฎแแแแ แแกแ: แแแแงแแแแ DAI แจแแงแแแแ แจแแ แแฃแแ LED-แแก แงแแแแแแ แแแแจแแแแแแแแแ แแแขแแก แแแแจแแแแแแแแแ, แแฌแแแ DCK แแแแแ แแ แฅแแแแแ; แแแแงแแแแ DAI แจแแงแแแแ แจแแแแแแ แแแขแแก แแแแจแแแแแแแแแ, แแแแงแแแแแ DCK; แแ แแกแ แจแแแแแ แกแแแแ แงแแแแ แแแขแ แแ แแแแแแชแแแ (แฉแแแแขแแแ), แ แแก แจแแแแแแแช แแฌแแแ LAT-แก. แแก แจแแแซแแแแ แแแแแแแแก แฎแแแแ (แแแข-แแแแแ), แแแแ แแ แฃแแฏแแแแกแแ แแแแแแแงแแแแ แแแแกแแแแแก แกแแแชแแแแฃแ แแ แแแ แแแแฃแแ SPI แแแขแแ แคแแแกแ, แ แแแแแ แแก แฌแแ แแแแแแแแแแ แฉแแแแก STM32-แแ แแ แแแแแแแแแ แแ.
แแฃแ แฏแ แแแ STM32F103
แจแแกแแแแแ: STM32 แแแแขแ แแแแ แแแ แแแแ แแ แฃแคแ แ แ แแฃแแแ, แแแแ แ Atmega328, แแแแ แ แจแแแซแแแแ แกแแจแแแแแ แแแแแแงแฃแ แแแแแแก. แฃแคแ แ แแแขแแช, แแแแ แแแแก แแแแแแแแก แแแแแแ, แแแแฅแแแก แงแแแแ แแแ แแคแแ แแฃแแ แแแฌแงแแแแแแแ แแแแแ แแฃแแแ แแแฌแงแแแแกแแก, แฎแแแ แกแแแแแก แกแแฎแจแแ แ แแ แแก 8 MHz แจแแแ แฌแงแแ แแแแ. แกแแแแแแแแ แแ, STM แแ แแแ แแแแกแขแแแแ แแแฌแแ แแก แแแแ, แ แแแแแแช แแฌแแแแก แฉแแแก "แแแแแแแแแ" 72 MHz-แแแ แแ แงแแแแ IDE-แแก แแแขแแ แแแแ, แ แแแแแแแช แแ แแแชแ, แจแแแขแแแแก แแก แแแแชแแแแแแแชแแแก แแ แแชแแแฃแ แแจแ, แแกแ แ แแ, แฉแแแ แแ แแแญแแ แแแแ แแแแแ แ (แแแแ แแ
แแแแฃแแแแขแแชแแ: Blue Pill แแฆแญแฃแ แแแแแ แแแแฃแแแ แฃแแ STM32F103C8T6 แฉแแแแ, แแแแกแแแแก แแ แ แกแแกแแ แแแแแ แแแแฃแแแแขแแ:
แแแแแชแแแแ แคแฃแ แชแแแ แแแแ แแแแแขแ แแแแ แแแแกแแแแก STM32F103x8 แแ STM32F103xB;แชแแแแแ แ แกแแฎแแแแซแฆแแแแแแ แแแแแ STM32F103 แฎแแแแกแแแแก แแ แกแฎแแ.
แแแแแชแแแแ แชแฎแ แแแจแ แฉแแแ แจแแแซแแแแ แแแแแแขแแ แแกแแแ:
- แแแแแฃแขแแแ โ แฉแแแฃแ แ แแแแแขแแแ โ แแ แจแแแแฎแแแแแจแ, แแฃ แแแแแแฌแงแแแขแ แแแคแแแแก แแแแแแแแแแก แแแแแ;
- แแแฎแกแแแ แแแแก แ แฃแแ - แแแฎแกแแแ แแแแก แ แฃแแ แแแแแ แแขแฃแแ แฉแแแแกแแแแก. แกแแชแแแแแ แ แกแแฎแแแแซแฆแแแแแแแก แแฅแแก แแแแแ แฎแแแแก แ แฃแแ แแ แแแกแจแ แแแแแแแแฃแแแ แ แแแแกแขแ แแแ, แ แแแแแแแช แฉแแแแก แแ แแแแฉแแแ.
- Pin Definitions แชแฎแ แแแ โ แฅแแแซแแกแแแแแแแก แซแแ แแแแแ แแ แแแขแแ แแแขแแฃแแ แคแฃแแฅแชแแแแแก แฉแแแแแแแแแแ; "แแฃแ แฏแ แแแแกแแแแก" แจแแแแซแแแแ แแแแแแ แฃแคแ แ แแแกแแฎแแ แฎแแแแแ แกแฃแ แแแแแ แแแขแแ แแแขแจแ, แฅแแแซแแกแแแแแแแก แฉแแแแแแแแแแแ แแ แแแแ แคแฃแแฅแชแแแแแ. แแแแขแแ, แฉแแแ แแแฃแงแแแแแแแแ แแแซแแแ แแฃแแแจแ Blue Pill pinout-แก แแ แฎแแแ แแแแฅแแก แแก แกแฃแ แแแ:
แจแแแแจแแแ: แกแฃแ แแแแ แแงแ แจแแชแแแแ แแแขแแ แแแขแแแแ, แ แแแแแแช แแฆแแแแจแแ แแแแแแขแแ แแแจแ, แแแแแแแ แแแแกแแแแก. แกแฃแ แแแ แจแแแชแแแแ, แแแแ แแ แแก แแ แแก แแแแแแแแแ - แฃแแฏแแแแกแแ แจแแแแแฌแแแ แแแคแแ แแแชแแ แแ แ แแแแแชแแแแ แชแฎแ แแแแแแแแ.
แฉแแแ แแฎแกแแแ แแแแแชแแแแ แชแฎแ แแแก, แแฎแกแแแ แกแแชแแแแแ แ แกแแฎแแแแซแฆแแแแแแแก แแ แแแแแ แแแแ แแฎแแแแ แแแก แแแงแแแแแ.
แแ แแชแแแฃแ แ: แกแแฅแแ แแแแฅแแก แกแขแแแแแ แขแฃแ แจแแงแแแแ/แแแแแแแแแแแแ, แแแแแแคแแแฃแ แแ แแแ SPI, แฉแแ แแแ แกแแญแแ แ แแแ แแคแแ แแฃแแ แแแฌแงแแแแแแแแแ.
แจแแงแแแแแก แแแแแแแแแแ
Atmega328-แแ I/O แฎแแ แชแแแแแแแ แซแแแแแ แแแ แขแแแแ, แ แแก แแแแแช STM32 แแแ แแแแขแแแแก แกแแแ แแแแ แจแแแซแแแแ แแแแแแแแแแแ แแงแแก. แแฎแแ แแฎแแแแ แแแกแแแแแแ แแแญแแ แแแแ, แแแแ แแ แแแแแช แแ แแฅแแ แแแฎแ แแแ แแแแขแ:
แฆแแ แแ แแแแแ, แแแซแแ-แแแงแแแแแแแแ, แแแขแแ แแแขแแฃแแ แแแซแแ-แแแฌแแแ, แแแขแแ แแแขแแฃแแ แฆแแ แแแแแแแแ
"แฒแแฅแแฉแแ แแแฌแแแ" (แแแซแแ) แแ แแก แฉแแแฃแแแแ แแแ แแแแแแแแแแ Arduino-แแแ, แแแแก แจแแฃแซแแแ แแแแฆแแก แแแแจแแแแแแแ HIGH แแ LOW. แแแแ แแ "แฆแแ แแแแแแแแแ" แแ แแก
แแแแแแแแแแ แแแแคแแแฃแ แแชแแ / แ แแแแกแแช แแแ แขแ แแแแแญแแแฃแแแ แแแแแแแแแแแ: / แแแแแแแแแแ แแฃแคแแ แ แฉแแ แแฃแแแ: / โ แแแแแแแแแก แ แแแแแแก แแแฎแกแแ: แแแแแแแแแแ แ แแแกแขแ แจแ โ0โ แฉแแ แแแแก N-MOS-แก, แแแแแแแแแแ แ แแแกแขแ แจแ โ1โ แขแแแแแก แแแ แขแก Hi-Z แ แแแแแจแ ( P-MOS แแ แแ แแก แแแแฅแขแแฃแ แแแฃแแ ) / โ Push-pull แ แแแแแ: แแแแแแแแแ แ แแแกแขแ แจแ โ0โ แแแฅแขแแฃแ แแแก N-MOS-แก, โ1โ แแแแแแแแแ แ แแแกแขแ แจแ แแแฅแขแแฃแ แแแก P-MOS-แก.
แงแแแแ แแแแกแฎแแแแแแ แฆแแ แแแแแแแแแชแแแก แจแแ แแก (แฆแแ แกแแแแแฆแแ แ) โแแแซแแ แ-แแแงแแแแแแแโ (แแแซแแ) แแ แแก แแก, แ แแ แแแ แแแ แแแแจแ แแ แจแแฃแซแแแ แแแแฆแแก HIGH แแแแแแแ แแแแ: แแแแแแแแแ แ แแแกแขแ แจแ แแ แแแก แฉแแฌแแ แแกแแก แแก แแแแแแแก แแแฆแแแ แฌแแแแแฆแแแแแแแแก แ แแแแแจแ (แแแฆแแแ แฌแแแแฆแแแ, Hi-Z). แแฃแแแก แแแฌแแ แแกแแก แแแแ แแ แแแแแ แแ แแฅแชแแแ แแ แแแ แ แแแแแจแ, แ แแแแ แช แแแแแแฃแ แแ, แแกแแแ แแแแฅแขแ แแแฃแแแ.
แแแ แแแแฃแ แแแแแแแแแ แ แแแแแจแ, แแแแ แฃแแ แแแแ แแแ แชแแแแแก แแแแแแแแแแ แ แแแแกแขแ แแก แจแแแแแ แกแก. "แแแขแแ แแแขแแแแจแ" แแก แแแแขแ แแแแแแ แจแแกแแแแแแกแ แแแ แแคแแ แแฃแแ แแแฌแงแแแแแแแแแแ (แแฎ. 9.1.4):
แแฃ แแแ แขแแก แแแขแ แแ แแก แแแแคแแแฃแ แแ แแแฃแแ, แ แแแแ แช แแแขแแ แแแขแแฃแแ แคแฃแแฅแชแแแก แแแแ, แแแแแก แ แแแแกแขแ แ แแแแแ แแฃแแแ แแ แแแแ แแแแแแจแแ แแแฃแแแ แแแ แแคแแ แแฃแ แแแแแแ.
แแแแแแฃแแ แแแแแก แแแขแแ แแแขแแฃแแ แคแฃแแฅแชแแแแแ แแแ แแฆแฌแแ แแแแ แแแ แแแแแแ แขแแแแแ แแแแแชแแแแ แคแฃแ แชแแแ แแ แแก แแแแแแฌแแ แแ แกแฃแ แแแแ. แแแแฎแแแแ, แแฃ แ แ แฃแแแ แแแแแแแแก, แแฃ แแแแก แแฅแแก แ แแแแแแแแ แแแขแแ แแแขแแฃแแ แคแฃแแฅแชแแ, แแแกแฃแฎแ แแแชแแแฃแแแ แแแแแชแแแแ แคแฃแ แชแแแก แกแฅแแแแแจแ:
แแฃ แแ แแแแแ แแแ แแคแแ แแฃแแ แแแฌแงแแแแแแแ แแงแแแแแก แแ แแกแ แแ แแแแแ แแแแก, แแแขแแ แแแขแแฃแ แคแฃแแฅแชแแแแก แจแแ แแก แแแแคแแแฅแขแแก แแแแแแแ แแชแแแแแแก แแแแแแ, แแฎแแแแ แแ แแ แแแ แแคแแ แแฃแแ แฃแแแ แแงแแก แแแแแงแแแแแฃแแ แแ แแแ แแฃแแแ, แแแแแ แแแ แแแ แแคแแ แแฃแแ แกแแแแแก แฉแแ แแแแก แแแขแแก แแแแแงแแแแแแ (แจแแกแแแแแแก RCC แ แแแกแขแ แจแ).
แแแแแแแก, แแแแแแแแแแ แ แแแแแจแ แฅแแแซแแกแแแแแแก แแกแแแ แแฅแแ แกแแแแแก แกแแฉแฅแแ แ. แแก แแ แแก แแแแ แแแแก แแแแแแแแก แแแแแ แแ แแ แคแฃแแฅแชแแ; แฉแแแแก แจแแแแฎแแแแแจแ, แฉแแแ แแแก แแแฅแกแแแฃแแแ แแแงแแแแแ แแ แแแแแฌแงแแแ.
แแกแ แ แแ: แฉแแแ แแแงแแแแแ SPI-แก, แ แแช แแแจแแแแก, แ แแ แแ แ แแแแ (แแแแแชแแแแแแ แแ แกแแแแแก แกแแแแแแแ) แฃแแแ แแงแแก โแแแขแแ แแแขแแฃแแ push-pull แคแฃแแฅแชแแโ, แฎแแแ แแแแ แ (LAT) แฃแแแ แแงแแก โแ แแแฃแแแ แฃแแ push-pullโ. แแแแ แแ แแแ แแแแแญแแแแแแ, แแแแแ แแแฃแแแแแแแแ SPI-แก.
SPI
แแแแแ แแ แแ แแแขแแ แ แกแแแแแแแแแแแแแแ แแ แแแ แแแ
SPI แแ แกแแ แแฃแแ แแแ แแคแแ แแฃแแ แแแขแแ แคแแแกแ (แกแแ แแฃแแ แแแ แแคแแ แแฃแแ แแแขแแ แคแแแกแ) แแ แแก แแแ แขแแแ แแ แซแแแแแ แแคแแฅแขแฃแ แ แแแขแแ แคแแแกแ MK-แแก แกแฎแแ MK-แแแแแ แแ แแแแแแแ แแแ แ แกแแแงแแ แแกแแแ แแแกแแแแแจแแ แแแแแ. แแแกแ แแแฅแแแแแแแก แแ แแแชแแแ แฃแแแ แแฆแฌแแ แแแแ แแแแแ, แกแแแแช แแ แแก แฉแแแฃแ แ LED แแ แแแแแ แแก แจแแกแแฎแแ (แกแแชแแแแแ แ แกแแฎแแแแซแฆแแแแแแแจแ, แแฎแแแแ แกแแฅแชแแ 25). SPI-แก แจแแฃแซแแแ แแแฃแจแแแก แกแแแแแแกแขแ แ ("แแแกแขแแ ") แแ แกแแแแแก ("แแแแ") แ แแแแแจแ. SPI-แก แแฅแแก แแแฎแ แซแแ แแแแแ แแ แฎแ, แ แแแแแแแแแ แงแแแแ แแ แจแแแซแแแแ แแงแแก แแแแแงแแแแแฃแแ:
- MOSI, แซแแ แแแแแ แแแแแแแแแแ / Slave แจแแงแแแแ: แแก แแแแ แแแแแกแชแแแก แแแแแชแแแแแก แแแแแแ แ แแแแแจแ แแ แแฆแแแก แแแแแชแแแแแก slave แ แแแแแจแ;
- MISO, Master Input / Slave Output: แแแ แแฅแแ, แแฆแแแก แแแกแขแแ แจแ แแ แแแแแกแชแแแก แกแแแแจแ;
- SCK, แกแแ แแฃแแ แกแแแแ: แแแแแแก แแแแแชแแแแ แแแแแชแแแแก แกแแฎแจแแ แแก แแแแแแ แจแ แแ แแฆแแแก แกแแแแแก แกแแแแแแก แกแแแแจแ. แแ แกแแแแแแ แฃแ แขแงแแแก;
- SS, Slave Select: แแ แแ แฎแแก แแแฎแแแ แแแแ แแแแแ แแชแแก, แ แแ แแแกแแแ แ แแฆแแช แแแฎแแแแแ. STM32-แแ แแแก แฃแฌแแแแแแ NSS, แกแแแแช N = แฃแแ แงแแคแแแ, แ.แ. แแแแขแ แแแแ แ แฎแแแแ แแแแ, แแฃ แแ แแ แฎแจแ แแ แแก แกแแคแฃแซแแแแ. แแก แแแ แแแ แแ แฌแงแแแก Open Drain Output แ แแแแแก, แแแแ แแ แแก แกแฎแแ แแแแแแแ.
แแกแแแ แ แแแแ แช แงแแแแแคแแ แ, STM32-แแ SPI แแแแแแ แแ แคแฃแแฅแชแแแแแ แแแแ, แ แแช แแแ แแแแฃแแฌแแแแ แแ แแฃแแแแก แแแก แแแแแแแก. แแแแแแแแแ, แแแก แจแแฃแซแแแ แแแฃแจแแแก แแ แ แแฎแแแแ SPI-แแ, แแ แแแแ I2S แแแขแแ แคแแแกแแแแช แแ แแแแฃแแแแขแแชแแแจแ แแแแ แแฆแฌแแ แแแแแแแ แจแแ แแฃแแแ, แแฃแชแแแแแแแแ แแแแแแขแแก แแ แแฃแแแ แแแญแ แ. แฉแแแแ แแแแชแแแ แซแแแแแ แแแ แขแแแแ: แฉแแแ แแฎแแแแ แแแแแชแแแแแแก แแแแแแแแ แแแญแแ แแแแ แแฎแแแแ MOSI แแ SCK แแแแแงแแแแแแ. แฉแแแ แแแแแแแแแแ แ แแแแงแแคแแแแแแจแ 25.3.4 (แแแฎแแแ แแ แแฃแแแแฅแกแฃแ แ แแแแฃแแแแแชแแ, แแแฎแแแ แแ แแฃแแแแฅแกแฃแ แ แแแแฃแแแแแชแแ), แกแแแแช แแแแฃแแแแ 1 แกแแแแ แแ 1 แชแแแแฎแ แแแ แแแแแชแแแแ แแแแแฃแแ (1 แกแแแแแก แกแแแแแแ แแ 1 แชแแแแฎแ แแแ แแแแแชแแแแ แแแแแแ):
แแ แ แแแแแจแ, แแแแแแแชแแ แแงแแแแแก SPI-แก แแฎแแแแ แแแแแชแแแแก แแ แแฎแแแแ แแแฆแแแแก แ แแแแแจแ. / แแฎแแแแ แแแแแชแแแแก แ แแแแแ แแฃแแแแฅแกแแก แ แแแแแแก แแกแแแแกแแ: แแแแแชแแแแแ แแแแแชแแแฃแแแ แแแแแชแแแแก แแแแแ (MOSI แแแแแแ แ แแแแแจแ แแ MISO แแแแฃแ แ แแแแแจแ), แฎแแแ แแแแฆแแแ (MISO แแ MOSI แจแแกแแแแแแกแแ) แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แ แแแแ แช แฉแแแฃแแแแ แแแ I/O แแแแ. . แแ แจแแแแฎแแแแแจแ, แแแแแแแชแแแก แแฎแแแแ Rx แแฃแคแแ แแก แแแแแ แแ แแแ แกแญแแ แแแแ (แแฃ แแก แฌแแแแแแฎแแแ, แแฅ แแ แแฅแแแแ แแแแแชแแแฃแแ แแแแแชแแแแแ).
แจแแกแแแแจแแแแแ, MISO แแแแ แฃแคแแกแแ, แแแแแ แแแแฃแแแแจแแ แแ แแแก LAT แกแแแแแแ. แแแแแ แจแแแฎแแแแ Slave Select-แก, แ แแแแแแช STM32-แแ แจแแแซแแแแ แแ แแแ แแแฃแแแ แแแแขแ แแแแแแแแแก, แ แแช แซแแแแแ แแแกแแฎแแ แฎแแแแแแ. แฉแแแ แแแแแฎแฃแแแแ แแแแแ แกแแฎแแแฌแแแแแแก แแแแแชแก แแแแงแแคแแแแแแจแ 25.3.1 SPI แแแแแแ แแฆแฌแแ แ:
แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแแขแ แแแ NSS (SSM = 1) / แแแแแแ แจแแ แฉแแแแก แแแคแแ แแแชแแ แจแแแชแแแก SPI_CR1 แ แแแแกแขแ แแก SSI แแแขแจแ. แแแ แ NSS แแแแ แแแแแกแฃแคแแแ แ แฉแแแ แแแแแแแชแแแก แกแฎแแ แกแแญแแ แแแแแกแแแแก.
แแ แแ แแแแฌแแ แแ แ แแแกแขแ แแแก. แแ แแแแแแฌแงแแแขแ แแแแแแแงแแแ SPI2, แแแซแแแ แแแกแ แกแแแแแแกแ แแแกแแแแ แแ แแแแแชแแแแ แคแฃแ แชแแแจแ - แแแแงแแคแแแแแแจแ 3.3 Memory Map:
แแแ, แแแแแฌแงแแ:
#define _SPI2_(mem_offset) (*(volatile uint32_t *)(0x40003800 + (mem_offset)))
แแแฎแกแแแแ แแแแงแแคแแแแแ 25.3.3 แแแแแแฎแกแแแแ แกแแแแฃแ แแ โSPI-แแก แแแแคแแแฃแ แแชแแ แกแแแแแแกแขแ แ แ แแแแแจแโ:
1. แแแแงแแแแ แกแแ แแฃแแ แกแแแแแก แกแแฎแจแแ แ แแแขแแแแ BR[2:0] SPI_CR1 แ แแแแกแขแ แจแ.
แ แแแกแขแ แแแ แแ แแแแแแ แแแแแ แกแแฎแแแฌแแแแแแก แกแแชแแแแแ แ แกแแฎแแแแซแฆแแแแแแแก แแแแงแแคแแแแแแจแ. แแแกแแแแ แแแก แชแแแ (แแแกแแแแ แแแก แแคแกแแขแฃแ แ) CR1-แกแแแแก โ 0x00, แแแแฃแแแกแฎแแแแแ แงแแแแ แแแขแ แแแกแฃแคแแแแแแฃแแแ (แแแแจแแแแแแแแก แแแแแขแแแ แแแ 0x0000):
BR แแแขแ แแแแแแก แแแแขแ แแแแ แแก แกแแแแแก แแแแงแแคแก, แ แแแแช แแแแกแแแฆแแ แแแก แกแแฎแจแแ แแก, แ แแแแแแแช แแแฃแจแแแแแก SPI. แฉแแแแ STM32 แกแแฎแจแแ แ แแฅแแแแ 72 MHz, LED แแ แแแแแ แ, แแแกแ แแแแแชแแแแ แชแฎแ แแแแก แแแฎแแแแแ, แแฃแจแแแแก 25 MHz-แแแ แกแแฎแจแแ แแ, แแแแขแแ แฃแแแ แแแแงแแ แแแฎแแ (BR[2:0] = 001).
#define _SPI_CR1 0x00
#define BR_0 0x0008
#define BR_1 0x0010
#define BR_2 0x0020
_SPI2_ (_SPI_CR1) |= BR_0;// pclk/4
2. แแแแงแแแแ CPOL แแ CPHA แแแขแแแ แแแแแชแแแแ แแแแแชแแแแกแ แแ แกแแ แแฃแแ แกแแแแแก แแ แแแแแก แแแแจแแ แแก แแแกแแแแแแแ (แแฎ. แแแแแ แแแ 240 แแแแ แแแ)
แแแแแแแแ แฉแแแ แแฅ แแแแแฎแฃแแแแ แแแแแชแแแแ แชแฎแ แแแก แแ แแ แแฃแงแฃแ แแแ แกแฅแแแแแก, แแแแแ แฃแคแ แ แแฎแแแก แแแแฎแแแแ CPOL แแ CPHA แแแขแแแแก แขแแฅแกแขแแก แแฆแฌแแ แแก 704 แแแแ แแแ (SPI แแแแแแ แแฆแฌแแ แ):
แกแแแแแก แคแแแ แแ แแแแแ แแแ
SPI_CR1 แ แแแแกแขแ แแก CPOL แแ CPHA แแแขแแแแก แแแแแงแแแแแแ, แจแแแแซแแแแ แแ แแแ แแแฃแแแ แแแ แฉแแแ แแ แแแก แแแฎแ แแแแจแแ แ. CPOL (แกแแแแแก แแแแแ แแแแก) แแแขแ แแแแแขแ แแแแแก แกแแแแแก แกแแแแแแแก แแแแแแแ แแแแแก, แ แแแแกแแช แแ แฎแแแแ แแแแแชแแแแแแก แแแแแชแแแ. แแก แแแขแ แแแแแขแ แแแแแก แแแแแแ แแ แกแแแ แ แแแแแแแก. แแฃ CPOL แแแแแขแแแ แแฃแแแ, SCK แแแแ แแแแแแแ แแแกแแแแแแแก แ แแแแแจแ. แแฃ CPOL แแแขแ แแแงแแแแแฃแแแ, SCK แแแแ แแแฆแแแแ แแแกแแแแแแแก แ แแแแแจแ.
แ แแแแกแแช CPHA (แกแแแแแก แคแแแ) แแแขแ แแแงแแแแแฃแแแ, แแแฆแแแ แแแขแแก แฎแแคแแแแแก แกแขแ แแแ แแ แแก SCK แกแแแแแแแก แแแแ แ แแแแ (แแแ แแแแ แแฃ CPOL แแแแแแแ, แแแ แแแแ แแฃ CPOL แแแงแแแแแฃแแแ). แแแแแชแแแแแ แแฆแแ แแชแฎแแแ แกแแแแแก แกแแแแแแแก แแแแ แ แชแแแแแแแแ. แแฃ CPHA แแแขแ แแแแแแแ, แแแฆแแแ แแแขแแก แขแ แแแแก แกแขแ แแแ แแ แแก SCK แกแแแแแแแก แแแแแแแแแ แแแแ (แฉแแแแแแ แแแแแ แแแแ, แแฃ CPOL แแแงแแแแแฃแแแ, แแแแแแแแแ แแแแ, แแฃ CPOL แแแกแฃแคแแแแแแฃแแแ). แแแแแชแแแแแ แแฆแแ แแชแฎแแแ แกแแแแแก แกแแแแแแแก แแแ แแแแแแ แชแแแแแแแแกแแก.
แแ แชแแแแแก แแแแแกแแแแก แจแแแแแ แแแแแแแ แแแกแแแแแแแ, แ แแ แแ แแแ แแแขแ แแฃแแแแแ แฃแแแ แแแ แฉแแก, แ แแแแแ แฉแแแ แแแแแแ, แ แแ SCK แกแแแแแแ แแแ แฉแแก แแแแแแ, แ แแแแกแแช แแ แแแแแแงแแแแแ แแ แแแแแชแแแแแ แแแแแแชแแก แแฃแแกแแก แแแแแแแแ แแแแแแ (แแฎ. แแแแแแแแแ แแฆแแแ แ DM634 แแแแแชแแแแ แคแฃแ แชแแแจแ).
แกแฎแแแแ แจแแ แแก, แแฅ แแแ แแแแแ แจแแแฎแแแแ ST แแแแแชแแแแ แชแฎแ แแแแแจแ แแแฅแกแแแแก แแแฎแแกแแแแแแแแก: แแแแจแ แฌแแ แแ แคแ แแแ "แแแขแแก แแฃแแแ แแแแแขแแแ แแแ". แชแแขแ แแแแแขแแแ แแแแกแแแแกแแ แแ แ แชแแขแ แแแกแแกแฃแคแแแแแแแแแแแแแแแแแ, แแขแแแแแก แแกแแแแกแแ.
3. แแแแงแแแแ DFF แแแขแ แแแแก แแแกแแแแแแแ, แแ แแก แแฃ แแ แ แแแแแชแแแแ แแแแแ 8-แแแขแแแแ แแฃ 16-แแแขแแแแ แคแแ แแแขแแ
แแ แกแแแชแแแแฃแ แแ แแแแฆแ 16-แแแขแแแแ DM634, แ แแ แแ แจแแแแฌแฃแฎแแแแแ 12-แแแขแแแแ PWM แแแแแชแแแแแแก แแแแแชแแแ, แ แแแแ แแชแแ DM633. แแแ แ แแฅแแก DFF-แแก แแ แแแ แแแงแแแแแแก:
#define DFF 0x0800
_SPI2_ (_SPI_CR1) |= DFF; // 16-bit mode
4. แแแแแแแคแแแฃแ แแ แแ LSBFIRST แแแขแ SPI_CR1 แ แแแกแขแ แจแ แแแแแแก แคแแ แแแขแแก แแแกแแแแแแแ
LSBFIRST, แ แแแแ แช แแแกแ แกแแฎแแแ แแแแแแแแแแก, แฏแแ แแแแแคแแแฃแ แแ แแแก แแแแแชแแแแก แงแแแแแแ แแแแแแแแ แแแแจแแแแแแแแแ แแแขแแ. แแแแ แแ DM634 แกแฃแ แก แแแแฆแแก แแแแแชแแแแแ แแแฌแงแแแฃแแ แงแแแแแแ แแแแจแแแแแแแแแ แแแขแแแแ. แแแแขแแ, แฉแแแ แแขแแแแแ แแแก แแแแแขแแแ แแแแก.
5. แแแแ แแขแฃแ แฃแ แ แแแแแจแ, แแฃ แกแแญแแ แแ NSS แแแแแแแ แจแแงแแแแ, แแแแแแงแแแแ แแแฆแแแ แกแแแแแแ NSS แแแแแ แแแแแ แแแแขแแก แแแแแชแแแแก แแแแแแแแแแ แแแแก แแแแแแแแแแแจแ. NSS แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แ แแแแแจแ แแแแงแแแแ SSM แแ SSI แแแขแแแ SPI_CR1 แ แแแกแขแ แจแ. แแฃ NSS แแแแ แฃแแแ แแฅแแแก แแแแแงแแแแแฃแแ แ แแแแ แช แแแแแกแแแแแ, แกแแญแแ แแ แแฎแแแแ SSOE แแแขแแก แแแงแแแแแ.
แแแแแแกแขแแแแ แแ SSM แแ SSI, แ แแ แแแแแแฌแงแแ NSS แแแแ แแขแฃแ แแก แ แแแแแ:
#define SSI 0x0100
#define SSM 0x0200
_SPI2_ (_SPI_CR1) |= SSM | SSI; //enable software control of SS, SS high
6. MSTR แแ SPE แแแขแแแ แฃแแแ แแงแแก แแแงแแแแแฃแแ (แแกแแแ แแแงแแแแแฃแแแ แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ NSS แกแแแแแแ แแแฆแแแแ)
แกแแแแแแแแแแจแ, แแ แแแขแแแแ แฉแแแ แแแแจแแแแ แฉแแแแก SPI-แก, แ แแแแ แช แแแกแขแแ แก แแ แฉแแ แแแแ แแแก:
#define MSTR 0x0004
#define SPE 0x0040
_SPI2_ (_SPI_CR1) |= MSTR; //SPI master
//ะบะพะณะดะฐ ะฒัะต ะณะพัะพะฒะพ, ะฒะบะปััะฐะตะผ SPI
_SPI2_ (_SPI_CR1) |= SPE;
SPI แแ แแก แแแแคแแแฃแ แแ แแแฃแแ, แแแแแ, แแแฃแงแแแแแแแแ แแแแฌแแ แแ แคแฃแแฅแชแแแแ, แ แแแแแแแช แแแแแแแแแ แแแแขแแแก แแ แแแแแ แแ. แแแแแแ แซแแ แแแแฎแแ 25.3.3 โSPI-แแก แแแแคแแแฃแ แแชแแ แกแแแแแแกแขแ แ แ แแแแแจแโ:
แแแแแชแแแแ แแแแแชแแแแก แจแแแแแแ
แแแแแชแแแ แแฌแงแแแ แแแจแแ, แ แแแแกแแช แแแแขแ แฉแแแฌแแ แแแ Tx แแฃแคแแ แจแ.
แแแแแชแแแแ แแแแขแ แแขแแแ แแแแ shift แ แแแกแขแ แจแ at แแแ แแแแแฃแ แแ แ แแแแแ (แจแแแ แแแขแแแฃแกแแแแ) แแแ แแแแ แแแขแแก แแแแแชแแแแก แแ แแก, แ แแก แจแแแแแแแช แแแ แแแแแแชแแแ แแแแแแแแแแ แฃแแ MOSI แแแแแก แ แแแแแ, แแแ แแแแ แแ แแแแ แแแขแ แฌแแ, แแแแแแแแแแฃแแแ LSBFIRST แแแขแแก แแแ แแแแขแ แแ CPI_CR1 แ แแแกแขแ แจแ. TXE แแ แแจแ แแแงแแแแแฃแแแ แแแแแชแแแแ แแแแแชแแแแก แจแแแแแ Tx แแฃแคแแ แแแแ แแแแแกแแแแก แ แแแกแขแ แแแแแแ แแกแแแ แฌแแ แแแฅแแแแก แจแแคแแ แฎแแแแก, แแฃ แแแงแแแแแฃแแแ TXEIE แแแขแ CPI_CR1 แ แแแกแขแ แจแ.
แแ แฎแแแแแกแแแ แแฆแแแแจแแ แแแ แแแแแจแ แ แแแแแแแแ แกแแขแงแแ, แ แแแ แงแฃแ แแแฆแแแ แแแแแแแฎแแแแ STM แแแแขแ แแแแ แแแจแ SPI แแแแฎแแ แชแแแแแแแก แแ แ แแแฎแแกแแแแแแแแแ. Atmega-แแ TXE แแ แแจแ (Tx แชแแ แแแแ, Tx แชแแ แแแแแ แแ แแแแ แแ แแก แแแแแชแแแแแแก แแแกแแฆแแแแ) แแแงแแแแแฃแแแ แแฎแแแแ แแแแแ แแแแขแแก แแแแแแแแแก แจแแแแแ แแแ แแ. แแ แแฅ แแก แแ แแจแ แแแงแแแแแฃแแแ แแแก แจแแแแแ, แ แแช แแแแขแ แแฅแแแแ แฉแแกแแฃแแ แจแแแ shift แ แแแกแขแ แจแ. แแแแก แแแแ, แ แแ แแแ แแ แแแ แแฃแแแ แงแแแแ แแแขแแแ แแ แแแ (แแแ แแแแแฃแ แแ) แแแแแแแก แแฅ, แจแแแแแ แแ แแแแแชแแแแแ แแแแแแชแแแ แแแแแแแแแแ แฃแแแ, TXE แแแงแแแแแฃแแแ แแแแขแแก แกแ แฃแแแ แแแแแแแแแแแ. แแก แแแแจแแแแแแแแแแ, แ แแแแแ แฉแแแแ LED แแ แแแแแ แแก แจแแแแฎแแแแแจแ, แแแแแแแแแก แจแแแแแ LAT-แแก แแแแ แฃแแแ แแแแแแแฆแแ แงแแแแ แแแแแชแแแแแ, แ.แ. แแฎแแแแ TXE แแ แแจแ แแ แแฅแแแแ แกแแแแแ แแกแ แฉแแแแแแแก.
แแก แแแจแแแแก, แ แแ แฉแแแ แแแญแแ แแแแ แกแฎแแ แแ แแจแ. แแแแแ แจแแแฎแแแแ 25.3.7 - "แกแขแแขแฃแกแแก แแ แแจแแแ":
<...>
แแแแแแแแฃแแ แแ แแจแ
BSY แแ แแจแ แแแงแแแแแฃแแแ แแ แแแกแฃแคแแแแแแฃแแแ แแแแ แแขแฃแ แแก แแแแ (แแแกแแ แฌแแ แแก แแ แแแแแ แ แแคแแฅแขแ แแ แแฅแแก). BSY แแ แแจแ แแแฃแแแแแแก SPI แกแแแแแฃแแแแแชแแ แคแแแแก แแแแแแแ แแแแแแ.
แแก แแฆแแแแแแก:
แ แแแแกแแช แแแแแชแแแ แแแกแ แฃแแแแฃแแแ (แแแ แแ แแแกแขแแ แ แแแแแจแ, แแฃ แแแแแชแแแ แฃแฌแงแแแขแแ)
แ แแแแกแแช SPI แแแแแ แแฃแแแ
แ แแแแกแแช แฉแแแแแ แซแแ แแแแแ แ แแแแแแก แจแแชแแแแ (MODF=1)
แแฃ แแแแแชแแแ แแ แแ แแก แฃแฌแงแแแขแ, BSY แแ แแจแ แแฌแแแแแแแ แแแแแแฃแ แแแแแชแแแแ แแแแแชแแแแก แจแแ แแก
แแแ แแ, แแก แแแแแแแแแแแแ. แแแแแ แแแแแ แแแแแ แกแแ แแแแแแ แแแแก Tx แแฃแคแแ แ. แแแแกแแแแแก แฌแแแแแแฎแแ "SPI แแแแแชแแแแ แ แแแแกแขแ แแชแแ":
แแแขแแแ 15:0 DR[15:0] แแแแแชแแแแ แ แแแแกแขแ แแชแแ
แแแฆแแแฃแแ แแ แแแแแกแแชแแแ แแแแแชแแแแแ.
แแแแแชแแแแ แ แแแกแขแ แ แแแงแแคแแแแ แแ แแฃแคแแ แแ - แแ แแ แฉแแฌแแ แแกแแแแก (แแแแแชแแแแก แแฃแคแแ แ) แแ แแแแ แ แฌแแแแแฎแแแกแแแแก (แแแฆแแแแก แแฃแคแแ แ). แแแแแชแแแแ แ แแแกแขแ แจแ แฉแแฌแแ แ แแฌแแ แก Tx แแฃแคแแ แก, แฎแแแ แแแแแชแแแแ แ แแแกแขแ แแแแ แฌแแแแแฎแแ แแแแแ แฃแแแแก แแแแจแแแแแแแแก, แ แแแแแแช แจแแแชแแแก Rx แแฃแคแแ แก.
แแ แกแขแแขแฃแกแแก แ แแแกแขแ แ, แกแแแแช แแ แแก TXE แแ BSY แแ แแจแแแ:
แฒฉแแแ แแฌแแ แ:
#define _SPI_DR 0x0C
#define _SPI_SR 0x08
#define BSY 0x0080
#define TXE 0x0002
void dm_shift16(uint16_t value)
{
_SPI2_(_SPI_DR) = value; //send 2 bytes
while (!(_SPI2_(_SPI_SR) & TXE)); //wait until they're sent
}
แแแ แแ, แ แแแแแ แฉแแแ แแแญแแ แแแแ 16-แฏแแ แแ แ แแแแขแแก แแแแแชแแแ, LED แแ แแแแแ แแก แแแแแแแแแแ แ แแแแแแแแแก แแแฎแแแแแ, แแแแฎแแแแแแ แแกแแแ:
void sendLEDdata()
{
LAT_low();
uint8_t k = 16;
do
{ k--;
dm_shift16(leds[k]);
} while (k);
while (_SPI2_(_SPI_SR) & BSY); // finish transmission
LAT_pulse();
}
แแแแ แแ แฉแแแ แฏแแ แแ แแแชแแ, แ แแแแ แแแแแงแแแแแ LAT แแแแ, แแแแขแแ แแแแฃแแ แฃแแแแแแ I/O-แก.
แฅแแแซแแกแแแแแแแก แแแแแญแแแ
STM32F1-แจแ, แฅแแแซแแกแแแแแแแก แแแแแแแ แแแแแแ แแแกแฃแฎแแกแแแแแแแ แ แแแแกแขแ แแแ แกแแแแแแ แฃแฉแแแฃแแแ. แแแกแแแแแแ, แ แแ แแกแแแ แฃแคแ แ แแแขแแ แแแแ แ Atmega, แแแแ แแ แแกแแแ แแกแแแ แแแแกแฎแแแแแแแแแ แกแฎแแ STM แฉแแแแแแกแแแ. แแแฌแแแ 9.1 GPIO-แก แแแแแแ แแฆแฌแแ แ:
แแแแแแฃแแ แแแแแแ แแแแแจแแฃแแแแแก I/O แแแ แขแ (GPIO) แแฅแแก แแ แ 32-แแแขแแแแ แแแแคแแแฃแ แแชแแแก แ แแแแกแขแ แ (GPIOx_CRL แแ GPIOx_CRH), แแ แ 32-แแแขแแแแ แแแแแชแแแแ แ แแแแกแขแ แ (GPIOx_IDR แแ GPIOx_ODR), 32-แแแขแแแแ แแแงแแแแแแก/แแแแแขแแแ แแแแก แ แแแแกแขแ แ (GPIOx_BSRR), 16-แแแขแแแแ แแแแแขแแแ แแแแก แ แแแแกแขแ แ (GPIOx_BRR) แแ แแแขแแก แแแแแแแแแก แ แแแแกแขแ แ (GPIOx_LCKR).
แแแ แแแแ แแ แ แ แแแแกแขแ แ แฃแฉแแแฃแแแ แแ แแกแแแ แกแแแแแแ แแแฃแฎแแ แฎแแแแแแ, แ แแแแแ 16 แแแ แขแแก แแแแ แแแแแคแแแขแฃแแแ แแแแแ "แแแฎแ แแแขแ แซแแแแ" แคแแ แแแขแจแ. แแแแ. แฅแแแซแแกแแแแแแ แแฃแแแแแ แจแแแแแแแ แแ แแก CRL-แจแ, แแแแแ แฉแแแ แแ CRH-แจแ. แแแแแแ แแฃแแแ, แแแ แฉแแแแแ แ แแแแกแขแ แแแ แฌแแ แแแขแแแแ แจแแแชแแแก แแแ แขแแก แงแแแแ แแแแแก แแแขแแแก - แฎแจแแ แแ แ แฉแแแ แแแฎแแแ แแ "แ แแแแ แแแ แแแฃแแ".
แกแแแแ แขแแแแกแแแแก, แแแแแฌแงแแ แกแแแก แแแแแแแ.
แฉแแแ แแ แแแญแแ แแแแ แแแแแแแแแก แ แแแกแขแ แ.
แแแงแแแแแ แแ แแแแแขแแแ แแแแก แ แแแแกแขแ แแแ แกแแแแแแ แกแแกแแชแแแแ แแแแ, แ แแ แแกแแแ แแแฌแแแแแ แแ แแแแแ แแแแ แแ แแแแแแแก: แจแแแแซแแแแ แแแฌแแ แแ แงแแแแแคแแ แ แแฎแแแแ BSRR-แจแ, แกแแแแช 16 แฃแคแ แ แแแฆแแแ แแแขแ แแฆแแแแแแก แแแแก แแฃแแแ, แฎแแแ แฅแแแแ แแแงแแแแแแ 1-แแ, แแ แแกแแแ แจแแแแซแแแแ. แแแแแแงแแแแ BRR, แ แแแแแก แฅแแแแ 16 แแแขแ แแฎแแแแ แแแแ แแแแแแงแแแแ. แแแแ แ แแแ แแแแขแ แแแแฌแแแก. แแก แ แแแแกแขแ แแแ แแแแจแแแแแแแแแแ, แ แแแแแ แแกแแแ แฃแแ แฃแแแแแงแแคแแ แแขแแแฃแ แฌแแแแแแก แฅแแแซแแกแแแแแแแ:
แแขแแแฃแ แ แแแแแแแฅแขแ แแ แแแแแขแแแ แแแ
แแ แแ แแก แกแแญแแ แ แจแแคแแ แฎแแแแแแก แแแแแ แแแ GPIOx_ODR-แแก แแแแ แแแ แแแแแแกแแก แแแขแแก แแแแแแ: แแ แแ แแ แแแขแ แแแขแ แจแแแซแแแแ แจแแแชแแแแแก แแ แแ แแขแแแฃแ แ แฉแแฌแแ แแก แแแแ แแชแแแ APB2. แแก แแแแฆแฌแแแ "1"-แแก แฉแแฌแแ แแ แแแงแแแแแแก/แแแแแขแแแ แแแแก แ แแแกแขแ แจแ (GPIOx_BSRR แแ, แแฎแแแแ แแแแแขแแแ แแแแกแแแแก, GPIOx_BRR) แแ แแแขแแก, แ แแแแแแช แฃแแแ แจแแแชแแแแแก. แกแฎแแ แแแขแแแ แฃแชแแแแแ แแแ แฉแแแ.
แแแแแชแแแแ แ แแแแกแขแ แแแก แแฅแแ แกแแแแแแ แแแกแแแแแ แกแแฎแแแแแ - IDR = แจแแงแแแแแก แแแแแ แแฃแแแแแก แ แแแกแขแ แ, แจแแงแแแแแก แ แแแแกแขแ แ; ODR = แแแแแงแแแแแก แแแแแ แแฃแแแแแก แ แแแแกแขแ แ, แแแแแแแแแแ แ แแแแกแขแ แ. แแกแแแ แแ แแแแแญแแ แแแแ แแแแแแแแ แ แแ แแแฅแขแจแ.
แแ แแแแแก, แกแแแแแขแ แแแ แ แแแแกแขแ แแแ. แแแแแแแแ แฉแแแ แแแแแแขแแ แแกแแแก แแแแ แ SPI แฅแแแซแแกแแแแแแ, แแแ แซแแ PB13, PB14 แแ PB15, แฉแแแ แแแฃแงแแแแแแแแ แแฃแงแฃแ แแแ CRH-แก:
แแ แฉแแแ แแฎแแแแแ, แ แแ แแแแแญแแ แแแแ แ แแฆแแชแแก แฉแแฌแแ แ แแแขแแแจแ 20-แแแ 31-แแแ.
แแแแแ แฃแแแ แแแแแ แแแแแ แ แ แแแแแแ แฅแแแซแแกแแแแแแแกแแแแ, แแแแขแแ แแฅ แแแแแแแแแ แกแแ แแแจแแขแแก แแแ แแจแ, แฃแแ แแแแ แแแขแงแแ, แ แแ MODE แแแแกแแแฆแแ แแแก แแแแแ แแฃแแแแแก (แจแแงแแแแ แแฃ แแ แแแ แแแขแ แแแงแแแแแฃแแแ 0-แแ) แแ แแแแแก แกแแฉแฅแแ แ (แแแญแแ แแแแ 50 MHz, แ.แ. แแ แแแ แแแแ โ1โ-แแ), แแ CNF แแงแแแแแก แ แแแแแก: แ แแแฃแแแ แฃแแ โแแแซแแแแโ โ 00, โแแแขแแ แแแขแแแโ โ 10. แแแแฃแแแกแฎแแแแแ, แ แแแแ แช แแแแแ แแฎแแแแแ, แงแแแแ แแแแก แแฅแแก แแแกแแแ แแแขแ แฅแแแแแแแ (CNF0). แแก แแงแแแแแก แแแ แ แแแแแจแ แแชแฃแ แแแ แจแแงแแแแ.
แแแแแแแแ แแ แฉแแแแ แกแฎแแ แ แแแแก แแแแแแแแแก แแแแแ แแ, แกแแแแ แขแแแแกแแแแก แแ แแแแแกแแแฆแแ แ แงแแแแ แจแแกแแซแแ MODE แแ CNF แแแแจแแแแแแแ แ แแแแ แช แฅแแแแ, แแกแแแ แแแแ แกแแแแแขแ แแแ แ แแแแกแขแ แแแแกแแแแก.
แ แแขแแแฆแแช แแกแ
#define CNF0_0 0x00000004
#define CNF0_1 0x00000008
#define CNF1_0 0x00000040
#define CNF1_1 0x00000080
#define CNF2_0 0x00000400
#define CNF2_1 0x00000800
#define CNF3_0 0x00004000
#define CNF3_1 0x00008000
#define CNF4_0 0x00040000
#define CNF4_1 0x00080000
#define CNF5_0 0x00400000
#define CNF5_1 0x00800000
#define CNF6_0 0x04000000
#define CNF6_1 0x08000000
#define CNF7_0 0x40000000
#define CNF7_1 0x80000000
#define CNF8_0 0x00000004
#define CNF8_1 0x00000008
#define CNF9_0 0x00000040
#define CNF9_1 0x00000080
#define CNF10_0 0x00000400
#define CNF10_1 0x00000800
#define CNF11_0 0x00004000
#define CNF11_1 0x00008000
#define CNF12_0 0x00040000
#define CNF12_1 0x00080000
#define CNF13_0 0x00400000
#define CNF13_1 0x00800000
#define CNF14_0 0x04000000
#define CNF14_1 0x08000000
#define CNF15_0 0x40000000
#define CNF15_1 0x80000000
#define MODE0_0 0x00000001
#define MODE0_1 0x00000002
#define MODE1_0 0x00000010
#define MODE1_1 0x00000020
#define MODE2_0 0x00000100
#define MODE2_1 0x00000200
#define MODE3_0 0x00001000
#define MODE3_1 0x00002000
#define MODE4_0 0x00010000
#define MODE4_1 0x00020000
#define MODE5_0 0x00100000
#define MODE5_1 0x00200000
#define MODE6_0 0x01000000
#define MODE6_1 0x02000000
#define MODE7_0 0x10000000
#define MODE7_1 0x20000000
#define MODE8_0 0x00000001
#define MODE8_1 0x00000002
#define MODE9_0 0x00000010
#define MODE9_1 0x00000020
#define MODE10_0 0x00000100
#define MODE10_1 0x00000200
#define MODE11_0 0x00001000
#define MODE11_1 0x00002000
#define MODE12_0 0x00010000
#define MODE12_1 0x00020000
#define MODE13_0 0x00100000
#define MODE13_1 0x00200000
#define MODE14_0 0x01000000
#define MODE14_1 0x02000000
#define MODE15_0 0x10000000
#define MODE15_1 0x20000000
แฉแแแแ แแแแแแ แแแแแแ แแแแก B แแแ แขแแ (แแแแแก แแแกแแแแ แแ โ 0x40010C00), แแแแ:
#define _PORTB_(mem_offset) (*(volatile uint32_t *)(0x40010C00 + (mem_offset)))
#define _BRR 0x14
#define _BSRR 0x10
#define _CRL 0x00
#define _CRH 0x04
//ะธัะฟะพะปัะทัะตะผ ััะฐะฝะดะฐััะฝัะน SPI2: MOSI ะฝะฐ B15, CLK ะฝะฐ B13
//LAT ะฟัััั ะฑัะดะตั ะฝะฐ ะฝะตะธัะฟะพะปัะทัะตะผะพะผ MISO โ B14
//ะพัะธัะฐะตะผ ะดะตัะพะปัะฝัะน ะฑะธั, ะพะฝ ะฝะฐะผ ัะพัะฝะพ ะฝะต ะฝัะถะตะฝ
_PORTB_ (_CRH) &= ~(CNF15_0 | CNF14_0 | CNF13_0 | CNF12_0);
//ะฐะปััะตัะฝะฐัะธะฒะฝัะต ััะฝะบัะธะธ ะดะปั MOSI ะธ SCK
_PORTB_ (_CRH) |= CNF15_1 | CNF13_1;
//50 ะะั, MODE = 11
_PORTB_ (_CRH) |= MODE15_1 | MODE15_0 | MODE14_1 | MODE14_0 | MODE13_1 | MODE13_0;
แแ, แจแแกแแแแแแกแแ, แจแแแแซแแแแ แแแฌแแ แแ แแแแแแ แขแแแแแ LAT-แแกแแแแก, แ แแแแแแแช แแแแแแญแ แแแ BRR แแ BSRR แ แแแแกแขแ แแแแ:
/*** LAT pulse โ high, then low */
#define LAT_pulse() _PORTB_(_BSRR) = (1<<14); _PORTB_(_BRR) = (1<<14)
#define LAT_low() _PORTB_(_BRR) = (1<<14)
(LAT_low แแฎแแแแ แแแแ แชแแแ, แงแแแแแแแแก แแกแ แแงแ, แแแ แฉแแก)
แแฎแแ แงแแแแแคแแ แ แแจแแแแแแ แแแแ, แแแแ แแ แแ แแฃแจแแแแก. แ แแแแแ แแก แแ แแก STM32, แแกแแแ แแแแแแแ แแแแฅแขแ แแแแแ แแแแก, แ แแช แแแจแแแแก, แ แแ แแฅแแแ แฃแแแ แฉแแ แแแ แกแแญแแ แ แแแ แแคแแ แแฃแแ แแแฌแงแแแแแแแแแแก แแแแแ แ.
แฉแแ แแแ แแแแฅแแ
แกแแแแ, แ แแแแแแช แแกแแแ แชแแแแแแแ แ แแแแ แช แกแแแแ, แแแกแฃแฎแแกแแแแแแแแ แกแแแแแ. แแ แฉแแแ แฃแแแ แจแแแแแฉแแแแ แแแ แแแแแขแฃแ แ RCC. แฉแแแ แแแซแแแ แแแก แแแแฃแแแแขแแชแแแจแ: แแก แแ แแก แแแแแขแแแ แแแ แแ แกแแแแแก แแแแขแ แแแ.
แ แแแแ แช แแแแแ แแแฅแแ, แกแแแแแแแแ แแ, แฅแ แแแแแแก แแแแแก แฃแ แแฃแแแกแ แแแฌแแแ แแแแแแแแแแก STM-แแก แแแแแแแแแแแ, แ แแกแแแแกแแช แแแ แแแ แแแแแแแแก แแฃแฎแแแ (แแแแแ แแ แแฎแแ แแแแชแแ แแแแแก
#define _RCC_(mem_offset) (*(volatile uint32_t *)(0x40021000 + (mem_offset)))
แแ แจแแแแแ แแ แแแแฌแแแแฃแแแ แแแฃแแแ, แกแแแแช แชแแแแแแ แ แแแแแก แแแแแแก แคแแ แคแแขแแจแ, แแ, แแแแ แแ แฃแแแแแกแ, แแแแแฎแแแแ แแแแแซแแแแ แแแแแ แ แแแแกแขแ แแแแก แแฆแฌแแ แแแแแแแก แแแแงแแคแแแแแแแแแแ. แ แแแแกแขแ แแแแก แฉแแ แแแ. แกแแ แแแแแแแ RCC_APB1ENR แแ RCC_APB2ENR:
แแ แแกแแแ, แจแแกแแแแแแกแแ, แจแแแชแแแก แแแขแแแก, แ แแแแแแแช แแแแชแแแก SPI2, IOPB (I/O แแแ แขแ B) แแ แแแขแแ แแแขแแฃแ แคแฃแแฅแชแแแแก (AFIO).
#define _APB2ENR 0x18
#define _APB1ENR 0x1C
#define IOPBEN 0x0008
#define SPI2EN 0x4000
#define AFIOEN 0x0001
//ะฒะบะปััะฐะตะผ ัะฐะบัะธัะพะฒะฐะฝะธะต ะฟะพััะฐ B ะธ ะฐะปัั. ััะฝะบัะธะน
_RCC_(_APB2ENR) |= IOPBEN | AFIOEN;
//ะฒะบะปััะฐะตะผ ัะฐะบัะธัะพะฒะฐะฝะธะต SPI2
_RCC_(_APB1ENR) |= SPI2EN;
แกแแแแแแ แแแแ แจแแแแซแแแแ แแฎแแแแ
แแฃ แแฅแแแ แแแฅแแ แขแแกแขแแ แแแแก แจแแกแแซแแแแแแแ แแ แกแฃแ แแแแ, แแแจแแ แจแแแแ แแแ DM634 แแกแ: DAI PB15-แแ, DCK-แแ PB13-แแ, LAT-แแ PB14-แแ. แแ แแแแแ แก แแแซแแแแ 5 แแแแขแแแแ, แแ แแแแแแแฌแงแแแ แกแแคแฃแซแแแแแแก แแแแแแจแแ แแแ.
STM8 PWM
PWM STM8-แแ
แ แแแแกแแช แแฎแแแฎแแ แแแแแแแแแ แแ แกแขแแขแแแก, แแแแแแฌแงแแแขแ, แแแแแแแแแ, แจแแแแกแฌแแแแ แฃแชแแแแ แฉแแแแก แแแ แแแแฃแแ แคแฃแแฅแชแแแแแ แแแ แแฎแแแแ แแแแแชแแแแ แคแฃแ แชแแแก แแแแแงแแแแแแ, แ แแแ แแ แแแแแแแแแ แแแแแ แคแแฎแกแแชแแแแก แแฌแแ แแแแแแแ แฉแแฅแแแแแก แแแ แแจแ. STM8 แแแแแแฃแ แ แแงแ แแ แ แแแแกแแแแก: แฏแแ แแ แแ, แแ แแฅแแแแ แ แแแแแแแแ แฉแแแฃแ แ แแแคแ STM8S103-แแ แแ แแแแ แแช, แแก แแ แช แแฃ แแกแ แแแแฃแแแ แฃแแแ แแ, แจแแกแแแแแแกแแ, แแแขแแ แแแขแจแ แฌแแแแแฎแแแกแ แแ แแแแแกแแแแแก แแแแแแก แชแแฃแแแแ แกแฌแแ แแ แแ แแแแแฌแงแแแขแแแแแแแแก แแแแแแแแแแก แแงแ แแแแแ.
แฉแแแกแแช แแฅแแก
Clocking แแ I/O
แแแแฃแแแกแฎแแแแแ, STM8 แแฃแจแแแแก 2 MHz แกแแฎแจแแ แแแ, แแก แแแฃแงแแแแแแแแ แฃแแแ แแแแแกแฌแแ แแแก.
HSI (แแแฆแแแ แกแแฉแฅแแ แแก แจแแแ) แกแแแแ
HSI แกแแแแแก แกแแแแแแ แแแฆแแแฃแแแ แจแแแ 16 MHz RC แแกแชแแแแขแแ แแแแ แแ แแแ แแแแ แแแแแ แแแแงแแคแแ (1-แแแ 8-แแแ). แแก แแแงแแแแแฃแแแ แกแแแแแก แแแแงแแค แ แแแกแขแ แจแ (CLK_CKDIVR).
แจแแแแจแแแ: แแแกแแฌแงแแกแจแ, HSI RC แแกแชแแแแขแแ แ 8-แแก แแแแงแแคแแ แแ แฉแแฃแแแ แกแแแแแก แกแแแแแแแก แฌแแแงแแแ แฌแงแแ แแ.
แฉแแแ แแแแฃแแแแ แ แแแกแขแ แแก แแแกแแแแ แแก แแแแแชแแแแ แคแฃแ แชแแแจแ, แแฆแฌแแ แแก refman-แจแ แแ แแฎแแแแแ, แ แแ แ แแแกแขแ แ แฃแแแ แแแกแฃแคแแแแแแก:
#define CLK_CKDIVR *(volatile uint8_t *)0x0050C6
CLK_CKDIVR &= ~(0x18);
แแแแก แแแแ, แ แแ แฉแแแ แแแแแ แแแ PWM-แก แแแจแแแแแก แแ LED-แแแแก แแแแแแจแแ แแแแก, แแแแแ แแแแแแฎแแแแ แแแแฃแขแก:
แฉแแแ แแ แแก แแแขแแ แ, แแแแ แ แคแฃแแฅแชแแ แจแแฉแแ แแแฃแแแ แแแแแ แฅแแแซแแกแแแแแแแ. แแก, แ แแช แแแแแ แแขแฃแ แคแ แฉแฎแแแแแจแแ, แแ แแก โแแแขแแ แแแขแแฃแแ แคแฃแแฅแชแแแแแ แแแโ, แแก แแแแแ แแฃแแแ โแแคแชแแแ แแแแขแแโ (แแแ แแแแขแแก แแแแขแแแ) โ แ แแฆแแช แแขแแแแแก แแแฃแแ แแแแ. แแฅแแแ แจแแแแซแแแแ แจแแชแแแแแ แแแแ แแแแจแแแแแแแแแ แแ แแแ แแแฃแแแ, แแแแ แแ แแก แแ แแ แแก แแฃแชแแแแแแแ, แ แแแแแ แแฎแแแ แคแฃแแฅแชแแ แแแแฅแขแแฃแ แแแฃแแแ แแฎแแแแ แแแแแขแแแ แแแแก แจแแแแแ. แฃแคแ แ แแแแแแแ ST Visual Programmer-แแก แแแแแงแแแแแ (แฉแแแแขแแแ แแฃแแแ Visual Develop-แแ), แ แแแแแกแแช แจแแฃแซแแแ แจแแชแแแแแก แแก แแแแขแแแ. แแแแแขแ แแฉแแแแแแก, แ แแ แแแ แแแแ แขแแแแแ แแก CH1 แแ CH2 แฅแแแซแแกแแแแแแ แแแแแแฃแแแ แแแแแ แแขแฃแ แคแ แฉแฎแแแแแจแ; แแฃแชแแแแแแแแ AFR1 แแ AFR0 แแแขแแแแก แแแงแแแแแ STVP-แจแ, แฎแแแ แแแแ แ แแกแแแ แแแแแกแชแแแก แแแแ แ แขแแแแแ แแก CH1 แแแแแแแแแแก PD4-แแแ PC5-แแ.
แแแ แแแแ, 6 แฅแแแซแแกแแแแ แแแแแแแขแ แแแแแก LED-แแแก: PC6, PC7 แแ PC3 แแแ แแแแ แขแแแแแ แ, PC5, PD3 แแ PA3 แแแแ แแจแ.
I/O แแแแแแแก แแแงแแแแแ STM8-แแ แฃแคแ แ แแแ แขแแแ แแ แแแแแแฃแ แแ, แแแแ แ STM32-แแ:
- แแแชแแแแ Atmega DDR แแแแแชแแแแ แแแแแ แแฃแแแแแก แ แแแกแขแ แแแแ (แแแแแชแแแแ แแแแแ แแฃแแแแแก แ แแแแกแขแ แแชแแ): 1 = แแแแแแแแแแ;
- แแแ แแแแ แกแแแแแขแ แแแ แ แแแแกแขแ แ CR1, แ แแแแกแแช แแแแแแแก, แแงแแแแแก แแแซแ-แแแงแแแแแก แ แแแแแก (1) แแ แฆแแ แแแแแแแแแก (0); แ แแแแแ LED-แแแก แฉแแแก แแแแแแแแแ แแฃแแแแจแแ แแ, แแฅ แแฃแแแแก แแขแแแแ;
- แแแแ แ แกแแแแแขแ แแแ แ แแแแกแขแ แ CR2, แ แแแแกแแช แแแแแแแก, แแแแแแก แกแแแแแก แกแแฉแฅแแ แแก: 1 = 10 MHz
#define PA_DDR *(volatile uint8_t *)0x005002
#define PA_CR2 *(volatile uint8_t *)0x005004
#define PD_DDR *(volatile uint8_t *)0x005011
#define PD_CR2 *(volatile uint8_t *)0x005013
#define PC_DDR *(volatile uint8_t *)0x00500C
#define PC_CR2 *(volatile uint8_t *)0x00500E
PA_DDR = (1<<3); //output
PA_CR2 |= (1<<3); //fast
PD_DDR = (1<<3); //output
PD_CR2 |= (1<<3); //fast
PC_DDR = ((1<<3) | (1<<5) | (1<<6) | (1<<7)); //output
PC_CR2 |= ((1<<3) | (1<<5) | (1<<6) | (1<<7)); //fast
PWM แแแ แแแแขแ แ
แแแ แแแ แ แแแจแ, แแแแแ แแแแแกแแแฆแแ แแ แขแแ แแแแแแ:
- PWM แกแแฎแจแแ แ - แกแแฎแจแแ แ, แ แแแแแแแช แขแแแแแ แ แแแแแแก;
- แแแขแแแแขแฃแ แ แแแแแขแแแ แแแ, AR โ แแแขแแแแขแฃแ แ แฉแแขแแแ แแแแแ แแแแจแแแแแแแ, แ แแแแแแแแแช แแแแแแแแแ แขแแแแแ แ (แแฃแแกแแก แแแ แแแแ);
- แฆแแแแกแซแแแแแก แแแแแฎแแแแ, UEV โ แแแแแแแ, แ แแแแแแช แฎแแแแ, แ แแแแกแแช แขแแแแแ แ แแแแแแแก AR-แแแ;
- PWM แกแแแฃแจแแ แชแแแแ - PWM แกแแแฃแจแแ แชแแแแ, แ แแแแแกแแช แฎแจแแ แแ แฃแฌแแแแแแ "แแแ แแแ แคแแฅแขแแ แก";
- แฆแแ แแแฃแแแแแก แแฆแแแ/แจแแแแ แแแ โ แแแแจแแแแแแแ แแฆแแแญแแแแก/แจแแแแ แแแแกแแแแก, แ แแแแแกแแช แแแแแแก แขแแแแแ แ แ แแแแก แแแแแแแแแก (PWM-แแก แจแแแแฎแแแแแจแ แแก แแแ แฃแแแแก แแแแแแแแแ แกแแแแแแก);
- แฌแแแแกแฌแแ แฉแแขแแแ แแแแก แแแแจแแแแแแแ - แฌแแแแกแฌแแ แแแขแแแ แแฃแแ แแแแจแแแแแแแ. แจแแแแแ แแ แฆแแ แแแฃแแแแ แแแ แจแแแชแแแแแ, แกแแแแ แขแแแแแ แ แแแแชแแแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ PWM แชแแแแ แแจแแแแ. แแแแขแแ, แแฎแแแ แแแแแชแแแฃแแ แแแแจแแแแแแแแแ แแแแแแกแแแฃแแแ แแฃแคแแ แจแ แแ แแแแฆแแแฃแแแ, แ แแแแกแแช แขแแแแแ แ แแแแฆแฌแแแก แแแแแแก แแแกแแกแ แฃแแก แแ แแฆแแแแแ;
- แแแแแแ แแแกแฌแแ แแแฃแแ ะธ แชแแแขแ แจแ แแแกแฌแแ แแแฃแแ แ แแแแแแแ - แแแกแฌแแ แแแ แกแแแฆแแ แแก แแแกแฌแแ แแ แแ แชแแแขแ แจแ, แแแแแ แแขแแแแแก แกแฌแ แแคแ PWM ะธ แคแแแแก แกแฌแแ แ PWM.
- OCiREF, แแแแแแแแแแ แจแแแแ แแแแก แกแแชแแแแแ แ แกแแแแแแ โ แกแแชแแแแแ แ แแแแแแแแแแ แกแแแแแแ, แคแแฅแขแแแ แแแแ, แแก, แ แแช แฉแแแแแ แจแแกแแแแแแก แแแแแ PWM แ แแแแแจแ.
แ แแแแ แช แฃแแแ แแ แแแแแ แแแแแขแแแแ, แแ แขแแแแแ แก แแฅแแก PWM แจแแกแแซแแแแแแแแแ - แแแ แแแแ แแ แแแแ แ. แแ แแแ 16-แแแขแแแแแ, แแแ แแแแก แแฅแแก แแแแ แ แแแแแขแแแแแ แคแฃแแฅแชแแ (แแแ แซแแ, แจแแฃแซแแแ แแแแแแ แแแแแแแช แแ แฅแแแแแแแช). แฉแแแ แแแญแแ แแแแ แแ แแแ แแแแแแ แแ แแแฃแจแแแก, แแแแขแแ แแแแแแฌแงแแแขแ แแแแแฌแงแ แแจแแแ แแ แฆแแ แแแ แแแแ แแแ, แ แแแ แจแแแแฎแแแแแ แแ แแแแแแแงแแแ แแก, แ แแช แแ แแ แแก. แแแ แแแแฃแแ แแ แแแแแแ แแก แแ แแก, แ แแ แกแแชแแแแแ แ แกแแฎแแแแซแฆแแแแแแแจแ แงแแแแ แขแแแแแ แแก PWM แคแฃแแฅแชแแแแแ แแแแก แแฆแฌแแ แ แแแชแแแฃแแแ แแแแจแ แแแ แแแแ แขแแแแแ แแก แจแแกแแฎแแ (17.5.7 PWM แ แแแแแ), แแกแ แ แแ แแฅแแแ แแฃแแแแแแ แฃแแแ แแแแแฎแขแแ แฌแแ แแ แฃแแแ แแแแ แแแแฃแแแแขแจแ.
PWM-แก STM8-แแ แแฅแแก แแแแจแแแแแแแแแ แฃแแแ แแขแแกแแแ PWM-แแ Atmega-แแ:
แกแแแฆแแ แแก แแแกแฌแแ แแแฃแแ PWM
แแแแแ แแจแแก แแแแคแแแฃแ แแชแแ แฅแแแแแแแ แแแแแแแ
แฅแแแแแแแ แแแแแ แแแแแแ แแฅแขแแฃแ แแ, แแฃ TIM_CR1 แ แแแกแขแ แจแ DIR แแแขแ แแแกแฃแคแแแแแแฃแแแ
แแแแแแแแ
แแแแแแแแ แแงแแแแแก แแแ แแแ PWM แ แแแแแก. PWM แกแแชแแแแแ แ แกแแแแแแ OCiREF แแแแฎแแแ แแแแแ, แกแแแแ TIM1_CNT < TIM1_CCRi. แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แแแแแ แแแแแก แแฆแแแก. แแฃ แจแแแแ แแแแก แแแแจแแแแแแแ TIM1_CCRi แ แแแแกแขแ แจแ แแแขแแ แแแขแแแแขแฃแ แ แแแขแแแ แแแแก แแแแจแแแแแแแแแ (TIM1_ARR แ แแแแกแขแ แ), OCiREF แกแแแแแแ แแแแฎแแแ 1-แแ. แแฃ แจแแแแ แแแแก แแแแจแแแแแแแ แแ แแก 0, OCiREF แแแแฎแแแ แแฃแแแ....
STM8 แขแแแแแ แ แแ แแก แฆแแแแกแซแแแแแก แแแแแฎแแแแ แฏแแ แแแแฌแแแแก แจแแแแแ แแ แฆแแ แแแฃแแแแแแ แแฎแแแแ แแแแก แจแแแแแ แแแแแแแฃแจแแแแแก แกแแชแแแแแ แ แกแแแแแแก. แแขแแแแแก แขแแแแแ แ แฏแแ แฎแ แแฎแแแก แแ แแแ แ แแแแ แแแก, แ แแก แจแแแแแแแแช compare value == 0
แแแแแแแแแแ แแ แแก แแแแกแ, แ แแแแแกแแช แ แแแแ แแ แฃแแแ แแแแแแ แแแก (แแแแแแแแแ, แแแแแแแก แแ แแแ แแแฃแแแ แจแแแ แฃแแแแแ).
แ แแกแ แแแแแแแแ แแแแแแ: 8-แแแขแแแแ PWM (AR == 255
), แแแแแแ แฅแแแแแแแ แแแแแ, แแแกแฌแแ แแแ แกแแแฆแแ แแก แแแกแฌแแ แแ. แแแแแแแแ แแแแฃแ แแแ แแแแแแจแแ แแแฃแแแ แฉแแแแแ แแแแแแแแแ, PWM แฃแแแ แแแแแกแชแแก 0 (LED แฉแแ แแฃแแ), แกแแแแ แจแแแแแ แแ แฆแแ แแแฃแแแแ แแ 1 แจแแแแแ.
แแแแแแ แแแก แจแแกแแฎแแ แฃแแแ แฌแแแแแแแฎแแ PWM แ แแแแแ, แแกแ แ แแ, แฉแแแ แแแแฃแแแแ แแแแ แ แขแแแแแ แแก แกแแญแแ แ แ แแแกแขแ แก แแ แคแ แแแแก แกแแชแแแแแ แ แกแแฎแแแแซแฆแแแแแแแจแ แแแซแแแแแ (18.6.8 - TIMx_CCMR1):
110: แแแ แแแแ PWM แ แแแแแ โ แฅแแแแแแแ แแแแแ แแแแแแแกแแก, แแแ แแแแ แแ แฎแ แแฅแขแแฃแ แแ, แฎแแแ TIMx_CNT < TIMx_CCR1. แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ, แแแ แแแแ แแ แฎแ แฃแแแฅแแแแแ. [แจแแแแแ แแแแฃแแแแขแจแ แแ แแก แแชแแแ แ แแแแแ -แแแกแขแ แขแแแแแ แ 1-แแแ] 111: แแแแ แ PWM แ แแแแแ โ แฅแแแแแแแ แแแแแ แแแแแแแกแแก แแแ แแแแ แแ แฎแ แฃแแแฅแแแแแ, แฎแแแ TIMx_CNT < TIMx_CCR1. แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ, แแแ แแแแ แแ แฎแ แแฅแขแแฃแ แแ.
แแแแแแแแ LED-แแแ MK-แก แแแแแแแแแ แฃแแแแจแแ แแแแ, แแแแ แ แ แแแแแ แแแแฌแงแแแก (แแแ แแแแแช, แแแแ แแ แแก แฏแแ แแ แแแชแแ).
แแแขแ 3 OC1PE: แฉแแ แแแ แแแแ 1 แฌแแแแกแฌแแ แฉแแขแแแ แแแ
0: TIMx_CCR1-แแ แฌแแแแกแฌแแ แฉแแขแแแ แแแแก แ แแแแกแขแ แแชแแ แแแแแ แแฃแแแ. แจแแแแซแแแแ แแแฌแแ แแ TIMx_CCR1 แแแแแกแแแแ แแ แแก. แแฎแแแ แฆแแ แแแฃแแแแ แแฃแจแแแแก แแแฃแงแแแแแแแแ.
1: แฉแแ แแฃแแแ แฌแแแแกแฌแแ แฉแแขแแแ แแแแก แ แแแแกแขแ แแชแแ TIMx_CCR1-แแ. แฌแแแแแฎแแแก/แฉแแฌแแ แแก แแแแ แแชแแแแแก แฌแแแแแ แฌแแแแกแฌแแ แฉแแขแแแ แแแแก แ แแแกแขแ แจแ. แฌแแแแกแฌแแ แแแขแแแ แแฃแแ แแแแจแแแแแแแ TIMx_CCR1 แแขแแแ แแแแ แฉแ แแแแแก แ แแแกแขแ แจแ แงแแแแแ แแแแแฎแแแแแก แแแแแแแแก แแ แแก.
*แจแแแแจแแแ: แแแแกแแแแแก, แ แแ PWM แ แแแแแ แแแแแ แแฃแแแ แแแฃแจแแแก, แฌแแแแกแฌแแ แฉแแขแแแ แแแแก แ แแแแกแขแ แแแ แฃแแแ แแงแแก แฉแแ แแฃแแ. แแก แแ แแ แแก แแฃแชแแแแแแแ แแ แแ แกแแแแแแแก แ แแแแแจแ (OPM แแแขแ แแแงแแแแแฃแแแ TIMx_CR1 แ แแแกแขแ แจแ).
แแแ แแ, แแแแแ แฉแแแ แแแ แงแแแแแคแแ แ, แ แแช แแแญแแ แแแแ แแแแ แ แขแแแแแ แแก แกแแแ แแ แฎแแกแแแแก:
#define TIM2_CCMR1 *(volatile uint8_t *)0x005307
#define TIM2_CCMR2 *(volatile uint8_t *)0x005308
#define TIM2_CCMR3 *(volatile uint8_t *)0x005309
#define PWM_MODE2 0x70 //PWM mode 2, 0b01110000
#define OCxPE 0x08 //preload enable
TIM2_CCMR1 = (PWM_MODE2 | OCxPE);
TIM2_CCMR2 = (PWM_MODE2 | OCxPE);
TIM2_CCMR3 = (PWM_MODE2 | OCxPE);
AR แจแแแแแแ แแ แ แ แแ แแแขแแแแ แ แแแแกแขแ แแกแแแ, แงแแแแแคแแ แ แแแ แขแแแแ:
#define TIM2_ARRH *(volatile uint8_t *)0x00530F
#define TIM2_ARRL *(volatile uint8_t *)0x005310
TIM2_ARRH = 0;
TIM2_ARRL = 255;
แแแแ แ แขแแแแแ แก แจแแฃแซแแแ แแฎแแแแ แฅแแแแแแแ แแแแแแแ แแแแแแ, แแแกแฌแแ แแแ แกแแแฆแแ แแก แแแกแฌแแ แแ, แแ แแคแแ แ แฃแแแ แจแแแชแแแแแก. แแแแแ แแแแแงแแแแ แกแแฎแจแแ แแก แแแแงแแคแ, แแแแแแแแแ, 256-แแ. แแแแ แ แขแแแแแ แแกแแแแก, แแแแงแแคแ แแแงแแแแแฃแแแ TIM2_PSCR แ แแแกแขแ แจแ แแ แแ แแก แแ แ แกแแแซแแแแ แ:
#define TIM2_PSCR *(volatile uint8_t *)0x00530E
TIM2_PSCR = 8;
แ แฉแแแ แแฎแแแแ แแแกแแแแแแแก แฉแแ แแแ แแ แแแแแ แแแแ แ แขแแแแแ แ. แแแ แแแแ แแ แแแแแแ แแแแแแ แแแฃแแแ แ แแแแกแขแ แแแแ แแแแแฆแแแ/แจแแแแ แแแ แฉแแ แแแ: แแแแแ แแกแแแแขแ แแฃแแแ แแแแแคแแแขแฃแแแ แแ แ, แกแแแ แแ แฎแ. แแฅแแ แจแแแแแซแแแ แแแแแแแ, แ แแ แจแแกแแซแแแแแแแ แกแแแแแแแก แแแแแ แแแแก แจแแชแแแ, แ.แ. แแ แแแชแแแจแ แจแแกแแซแแแแแแ แแงแ PWM แ แแแแแ 1-แแก แแแแแงแแแแแ. แฉแแแ แแฌแแ แ:
#define TIM2_CCER1 *(volatile uint8_t *)0x00530A
#define TIM2_CCER2 *(volatile uint8_t *)0x00530B
#define CC1E (1<<0) // CCER1
#define CC2E (1<<4) // CCER1
#define CC3E (1<<0) // CCER2
TIM2_CCER1 = (CC1E | CC2E);
TIM2_CCER2 = CC3E;
แแ แแแแแก, แฉแแแ แแแฌแงแแแ แขแแแแแ แก TIMx_CR1 แ แแแกแขแ แจแ:
#define TIM2_CR1 *(volatile uint8_t *)0x005300
TIM2_CR1 |= 1;
แแแแแ แแแแฌแแ แแ AnalogWrite(-แแก แแแ แขแแแ แแแแแแแ), แ แแแแแแช แแแแแกแชแแแก แ แแแแฃแ แแแแจแแแแแแแแแก แขแแแแแ แก แจแแแแ แแแแกแแแแก. แ แแแแกแขแ แแแ แแแกแแฎแแแแแฃแแแ แแ แแแแแแแ แแแฃแแแ แ แแแแกแขแ แแแแก แแฆแแแ/แจแแแแ แแแแแแแแแฃแแ แแ แฎแแกแแแแก แแ แแก แแ แ แแแแแแแ: แแแแแแ แ แแแแก 8 แแแขแ TIM2_CCRxL-แจแ แแ แแแฆแแแ แ แแแแก TIM2_CCRxH. แแแแแแแแ แฉแแแ แจแแแฅแแแแแ 8-แแแขแแแแ PWM, แกแแแแแ แแกแแ แฉแแฌแแ แแ แแฎแแแแ แงแแแแแแ แแแแแแแแ แแแแจแแแแแแแแแ แแแขแแแ:
#define TIM2_CCR1L *(volatile uint8_t *)0x005312
#define TIM2_CCR2L *(volatile uint8_t *)0x005314
#define TIM2_CCR3L *(volatile uint8_t *)0x005316
void setRGBled(uint8_t r, uint8_t g, uint8_t b)
{
TIM2_CCR1L = r;
TIM2_CCR2L = g;
TIM2_CCR3L = b;
}
แงแฃแ แแแฆแแแแแแ แแแแแฎแแแแ แจแแแแฉแแแแก, แ แแ แแแแฅแแก แแแแแ แแแคแแฅแขแฃแ แ PWM, แ แแแแแแช แแแ แแฌแแ แแแแแก 100% แจแแแกแแแแก (แแแฅแกแแแแแฃแ แ แแแแจแแแแแแแแ 255, แกแแแแแแ แแแแแ แกแแฃแแแ แแ แแ แขแแแแแ แแก แชแแแแแกแแแแก). LED-แแแแกแแแแก แแแแก แแแแจแแแแแแแ แแ แแฅแแก แแ แงแฃแ แแแฆแแแแแ แแแแแฎแแแแก แฃแแแ แจแแฃแซแแแ แแแแแแชแแแก แ แแแแ แแแแกแฌแแ แแก แแแ.
แแแแ แ แขแแแแแ แแ PWM แแฃแจแแแแก, แแแแแ แแแแแแแแแ แแแ แแแแแ.
แแแ แแแ แขแแแแแ แก แแฅแแก แแฃแกแขแแ แแแแแ แแแขแแแ แแแแแ แ แแแกแขแ แแแจแ (แฃแแ แแแแ แแก แแแขแแแ, แ แแแแแแแช แแแ แฉแ "แ แแแแ แแแ แแแฃแแ" แแแแ แ แขแแแแแ แจแ, แแแ แแแแจแ แแฅแขแแฃแ แแ แแแแแแงแแแแแ แงแแแแ แกแแฎแแก แแแฌแแแแแ แแแแแแแแกแแแแก). แแแแขแแ แกแแแแแ แแกแแ แแแแแชแแแแ แคแฃแ แชแแแจแ แแแแแ แ แแแแกแขแ แแแแก แแแกแแแแ แแแแแก แแแซแแแแ แแ แแแแแก แแแแแ แแแ. แจแแชแแแแแ แกแแฎแจแแ แแก แแแแงแแคแแก แแแแจแแแแแแแ, แ แแแแแ... แแแ แแแ แขแแแแแ แก แกแฃแ แก แแแแฆแแก แแ แ แแ แ, แแ แแแแ แแฃแกแขแ 16-แแแขแแแแ แแแแจแแแแแแแ แแ แ แแแกแขแ แจแ Prescaler แแแฆแแแ ะธ แแแแแแ. แงแแแแแคแแ แก แแแแแแแแ แแ... แแแ แแแแ แขแแแแแ แ แแ แแฃแจแแแแก. แฒ แ แแแฎแแ?
แแ แแแแแแแก แแแแแญแ แ แจแแกแแซแแแแแแแ แแฎแแแแ 1-แแก แขแแแแแ แแก แกแแแแแขแ แแแ แ แแแแกแขแ แแแแก แแแแแ แแแแงแแคแแแแแแก แแแแแฎแแแแแ, แกแแแแช แแแซแแแ แแแก, แ แแแแแแช แแแแ แ แขแแแแแ แก แแ แแฅแแก. แฒแฅ แแฅแแแแ 17.7.30 แจแแกแแแแแแแก แ แแแแกแขแ แแชแแ (TIM1_BKR), แกแแแแช แแ แแก แแก แแแขแ:
แซแแ แแแแแ แแแแแแแแแแ แฉแแ แแแ
#define TIM1_BKR *(volatile uint8_t *)0x00526D
TIM1_BKR = (1<<7);
แแก แงแแแแแคแแ แ แแแ แฌแแฃแแแแฃแแแ แแฎแแ, แแแแ
STM8 Multiplex
แแฃแแขแแแแแฅแกแแ แแแ STM8-แแ
แแแกแแแ แแแแ-แแ แแแฅแขแ แแ แแก แ แแ RGB LED-แแก แแแแแแจแแ แแแ แแแแ แ แขแแแแแ แแแ PWM แ แแแแแจแ แแ แแแ แกแฎแแแแแกแฎแแ แคแแ แแก แฉแแแแแแ. แแแ แแแคแฃแซแแแแฃแแแ LED แแฃแแขแแแแแฅแกแแ แแแแก แแแแชแแคแชแแแแ, แ แแแแแแช แแ แแก แแก, แ แแ แแฃ แแฅแแแ แฉแแ แแแแ แแ แแแแแ แแแแ LED-แแแก แซแแแแแ, แซแแแแแ แกแฌแ แแคแแ, แแแแฉแแแแแแ, แ แแ แแกแแแ แแฃแแแแแแ แฉแแ แแฃแแแ (แฎแแแแแก แแ แกแแแแแ, แแแแฃแแแฃแ แ แแฆแฅแแแก แแแแ แชแแ). แแ แแฎแแ แแแแแแแแ
แแฃแจแแแแแก แแแแแ แแแแ แแกแ แแแแแแงแฃแ แแแ:
- แแแแแแแจแแ แแ แแแ แแแแ RGB LED-แแก แแแแแ;
- แแแแแ แแแ, แแแแแแแแก แกแแญแแ แ แกแแแแแแแแก แแแแแแแแแ;
- แแแแแแแ PWM แชแแแแแก แแแกแ แฃแแแแแก;
- แแแแแแแจแแ แแ แแแแ แ RGB LED-แแก แแแแแ;
- แแแแแ...
แแกแ แแ แ.แจ. แ แ แแฅแแ แฃแแแ, แแแแแแ แแฃแจแแแแแกแแแแก แกแแญแแ แแ แแแแแแก แแแแ แแแแ แแ แจแฃแฅแแแแแแก โแแแแแแโ แแ แแแ แแฃแแแ. แแแ แแแ, แแ แแแแฅแแแก. แแแแแกแแแแ แจแแแแฎแแแแแจแ, แฉแแแ แฃแแแ แแแแฌแแ แแ แแแแ, แ แแแแแแช แแแแแกแชแแแก แแแแจแแแแแแแแแก แแแแ แ แขแแแแแ แแก แกแแ แแ แฎแจแ, แจแแแชแแแแ แแแ UEV แแแฆแฌแแแแกแแก แแ แแแแแแ แแฃแแแ แจแแแชแแแแ แแแแแแแ แแฅแขแแฃแ RGB LED-แก.
แแแแแแแแ LED แแแแแ แแแ แแแขแแแแขแฃแ แแ, แฉแแแ แฃแแแ แจแแแฅแแแแ โแแแแแ แแแฎแกแแแ แแแโ, แกแแแแแแแช แจแแคแแ แฎแแแแก แแแแแฃแจแแแแแแแ แแแแฆแแแก แแแแแชแแแแแก. แแก แแ แแก แแแ แขแแแ แแแกแแแ:
uint8_t colors[8][3];
แแแแแ แแขแฃแแ LED-แแก แคแแ แแก แจแแกแแชแแแแแแ แกแแแแแ แแกแ แแฅแแแแ แแ แแแกแแแจแ แกแแญแแ แ แแแแจแแแแแแแแแแก แฉแแฌแแ แ. แแ แชแแแแแ แแแกแฃแฎแแกแแแแแแแแ แแฅแขแแฃแ แ LED- แแก แ แแแแแแแแแแ
uint8_t cnt;
แแแแฃแฅแกแ
แกแแแแแแแ แแฃแแขแแแแแฅแกแแ แแแแกแแแแก, แฉแแแ แแแญแแ แแแแ, แฃแชแแแฃแ แแ แกแแแแแ แแกแ, CD74HC238 แแแแฃแแขแแแแแฅแกแแ แ. แแแแฃแแขแแแแแฅแกแแ แ - แฉแแแ, แ แแแแแแช แแฎแแ แชแแแแแแก แแแแ แแขแแ แก แแแแ แแขแฃแ แแจแ <<
. แกแแแ แจแแงแแแแแก แแแแแก แแแจแแแแแแ (แแแขแ 0, 1 แแ 2) แฉแแแ แแแซแแแแ แแแก แกแแ แแแขแแแ X แ แแชแฎแแก แแ แกแแแแกแฃแฎแแ แแก แแแฅแขแแฃแ แแแก แแแแแแแแแ แแแแแ แก (1<<X
). แฉแแแแก แแแ แฉแแแแแ แจแแแแขแแแแแ แแแแแแงแแแแแ แแแแแแแ แแแแแแแแก แแแกแแแแแแ. แฉแแแ แแแญแแ แแแแ แแก แฉแแแ แแ แ แแฎแแแแ แแแแ แแแแแขแ แแแแ แแก แแแแแแแแฃแแ แฅแแแซแแกแแแแแแแก แ แแแแแแแแแก แจแแกแแแชแแ แแแแแ, แแ แแแแ แฃแกแแคแ แแฎแแแแแกแแแแก - แแกแ, แ แแ แจแแแแฎแแแแแ แแ แฉแแ แแแ แแแขแ LED-แแแ, แแแแ แ แจแแกแแซแแแแแแแ แแ แแ แแแฌแแแ MK. แฉแแแ แฆแแ แก แแ แแ แแแแ แแ แงแแแแแแแแก แฃแแแ แแแแฎแแแแแแก แแฅแแแแก แกแแฎแแจแ แแแแแชแแแแก แแแแแแแขแจแ.
แฉแแแแ CD74HC238 แแฅแแแแ แแแกแฃแฎแแกแแแแแแแ แซแแแแแก แแแฌแแแแแแแ แกแแกแฃแ แแแแ LED-แแก แแแแแแ. แกแ แฃแแคแแกแแแแ แแฃแแขแแแแแฅแกแจแ แแก แซแแแแแก แแฌแแแแก แกแแแขแก P-MOSFET-แแก แกแแจแฃแแแแแแ, แแแแ แแ แแ แแแแแจแ แแก แจแแกแแซแแแแแแแ แแแ แแแแแ , แ แแแแแ แแแ แแแแฎแแแแแแก 20 mA-แก, แจแแกแแแแแแกแแ แแแกแแแฃแขแฃแ แ แแแฅแกแแแแแฃแ แ แ แแแขแแแแแแ แแแแแชแแแแ แคแฃแ แชแแแจแ. แแแ
H = แแแฆแแแ แซแแแแแก แแแแ, L = แแแแแแ แซแแแแแก แแแแ, X - แแ แแแแแขแแ แแกแแแก
แฉแแแ แแฃแแแแจแแ แแแแแ E2 แแ E1 แแแฌแแก, E3, A0, A1 แแ A3 แฅแแแซแแกแแแแแแก PD5, PC3, PC4 แแ PC5 STM8. แแแแแแแแ แแแแแ แแแชแแแฃแแ แชแฎแ แแแ แจแแแชแแแก แ แแแแ แช แแแแแ, แแกแแแ แแแฆแแ แแแแแแแก, แฉแแแ แแแแแแคแแแฃแ แแ แแแ แแ แฅแแแซแแกแแแแแแก, แ แแแแ แช Push-pull pins.
PWM
แแแแ แ แขแแแแแ แแ PWM แแแแคแแแฃแ แแ แแแฃแแแ แแกแแแ, แ แแแแ แช แฌแแแ แแกแขแแ แแแจแ, แแ แ แแแแกแฎแแแแแแแ:
แแแ แแแ แ แแแจแ, แฉแแแ แฃแแแ แแแแแแฅแขแแฃแ แแ แจแแคแแ แฎแแแ แฆแแแแกแซแแแแแก แแแแแฎแแแแ (UEV), แ แแแแแแช แแแแแแซแแฎแแแก แคแฃแแฅแชแแแก, แ แแแแแแช แแแแแ แแแแก แแฅแขแแฃแ LED-แก. แแก แแแแแแแ แแแขแแก แจแแชแแแแ แแแแแฎแแแแแก แจแแคแแ แฎแแแแก แฉแแ แแแ แ แแแกแขแ แจแ แแแขแงแแแแ แกแแฎแแแแ
แจแแฌแงแแแขแแก แฉแแ แแแแก แ แแแแกแขแ แแชแแ
#define TIM2_IER *(volatile uint8_t *)0x005303
//enable interrupt
TIM2_IER = 1;
แแแแ แ แแแแกแฎแแแแแแ แแแแแแจแแ แแแฃแแแ แแฃแแขแแแแแฅแกแแ แแแแก แคแแแแแแแแแ, แแแ ghosting - แแแแแแแแก แแแ แแแแขแฃแแ แแแแแแแ แแแ. แฉแแแแก แจแแแแฎแแแแแจแ, แแก แจแแแซแแแแ แแแแแฉแแแแก แแแแก แแแแ, แ แแ แขแแแแแ แ, แ แแแแแแแช UEV-แแ แจแแคแแ แฎแแแ แแแแแแฌแแแ, แแแ แซแแแแแก แแแแแจแแแแก, แฎแแแ แจแแคแแ แฎแแแแก แแแแแฃแจแแแแแแแก แแ แแฅแแก แแ แ, แแแแแ แแแก LED, แกแแแแ แขแแแแแ แ แแแแฌแงแแแก แ แแแแแก แแแฌแแ แแก แฅแแแซแแกแแแแแแแ. แแแแก แฌแแแแแฆแแแแ แกแแแ แซแแแแแแแ, แแฅแแแ แแแแแฌแแแ แแแแแแแก แจแแแ แฃแแแแ (0 = แแแฅแกแแแแแฃแ แ แกแแแแจแแแจแ, 255 = แแ แแคแแ แแ แแแแแแแแฃแแ) แแ แแแแแแแ แแแชแแแแ แแฅแกแขแ แแแแแฃแ แ แกแแแฃแจแแ แชแแแแแก แแแแจแแแแแแแแแ. แแแแ. แแแ แฌแแฃแแแแ, แ แแ UEV-แแก แจแแแแแ LED-แแแ แแแแแแแแ แฉแแฅแ แแแ แแ แแ PWM แชแแแแแกแแแแก.
แแแแแ แแแแก แจแแชแแแ:
//set polarity
TIM2_CCER1 |= (CC1P | CC2P);
TIM2_CCER2 |= CC3P;
แแแแ แแแแ r, g แแ b 255-แแ แแแงแแแแแแก แแ แแแแแแฎแกแแแ แแ แแแแ แแแแแงแแแแแแกแแก แแแแ แแแแแ แกแแ.
แฌแงแแแขแก
แจแแคแแ แฎแแแแก แแ แกแ แแแแจแ แแแแแแแ แแแแก, แ แแ แแแ แแแแฃแ แแแ แแแแแจแ แฉแแแ แฌแงแแแขแก แซแแ แแแแแ แแ แแแ แแแแก แจแแกแ แฃแแแแแก แแ แแฌแแแแก แ แแแแ แแแ แ แคแฃแแฅแชแแแก. แจแแคแแ แฎแแแแแ แฎแแแแ แแแ แ แแ แจแแแ แแแแแแแแก แแแแ, แแแ แจแแ แแก แขแแแแแ แ.
แ แแแแกแแช แฉแแแ แแแ แแแแแ แจแแแฅแแแแแ แแ แแแฅแขแ ST Visual Develop-แจแ, แแแ แแ แแแแกแ main.c
แแแแแฆแแ แคแแแฏแแ แ แแแฃแแแแ แคแแแแแ stm8_interrupt_vector.c
, แแแขแแแแขแฃแ แแ แจแแแแก แแ แแแฅแขแจแ. แแ แคแแแแจแ แคแฃแแฅแชแแ แแแแญแแแ แแแแแแฃแ แจแแฌแงแแแขแแก NonHandledInterrupt
. แฉแแแ แฃแแแ แแแแแแแแจแแ แแ แฉแแแแ แคแฃแแฅแชแแ แกแแกแฃแ แแแ แจแแฌแงแแแขแแกแแแ.
แแแแแชแแแแ แคแฃแ แชแแแก แแฅแแก แจแแคแแ แฎแแแแก แแแฅแขแแ แแแแก แชแฎแ แแแ, แกแแแแช แแแแฃแแแแ แฉแแแ แแแญแแ แแแแ:
13 TIM2 แแแแแฎแแแแ/แแแแแแแแ
14 TIM2 แแแแแฆแแแ/แจแแแแ แแแ
แฉแแแ แแแญแแ แแแแ LED-แแก แจแแชแแแ UEV-แแ, แแแแขแแ แแแญแแ แแแแ แจแแฌแงแแแขแ #13.
แจแแกแแแแแแกแแ, แแแ แแแ แ แแแจแ, แคแแแแจแ stm8_interrupt_vector.c
แจแแชแแแแแ แคแฃแแฅแชแแแก แแแแฃแแแกแฎแแแแ แกแแฎแแแ, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ No13 แจแแคแแ แฎแแแแแ (IRQ13) แแฅแแแแแ:
{0x82, TIM2_Overflow}, /* irq13 */
แแแแ แแช, แฉแแแ แแแแแแฌแแแก แคแแแแแก แจแแฅแแแ main.h
แจแแแแแแ แจแแแแแ แกแแ:
#ifndef __MAIN_H
#define __MAIN_H
@far @interrupt void TIM2_Overflow (void);
#endif
แแ แแแแแก, แฉแแฌแแ แแ แแก แคแฃแแฅแชแแ แแฅแแแแกแจแ main.c
:
@far @interrupt void TIM2_Overflow (void)
{
PD_ODR &= ~(1<<5); // ะฒัััะฑะฐะตะผ ะดะตะผัะปััะธะฟะปะตะบัะพั
PC_ODR = (cnt<<3); // ะทะฐะฟะธััะฒะฐะตะผ ะฒ ะดะตะผัะปััะธะฟะปะตะบัะพั ะฝะพะฒะพะต ะทะฝะฐัะตะฝะธะต
PD_ODR |= (1<<5); // ะฒะบะปััะฐะตะผ ะดะตะผัะปััะธะฟะปะตะบัะพั
TIM2_SR1 = 0; // ัะฑัะฐััะฒะฐะตะผ ัะปะฐะณ Update Interrupt Pending
cnt++;
cnt &= 7; // ะดะฒะธะณะฐะตะผ ััะตััะธะบ LED
TIM2_CCR1L = ~colors[cnt][0]; // ะฟะตัะตะดะฐะตะผ ะฒ ะฑััะตั ะธะฝะฒะตััะธัะพะฒะฐะฝะฝัะต ะทะฝะฐัะตะฝะธั
TIM2_CCR2L = ~colors[cnt][1]; // ะดะปั ัะปะตะดัััะตะณะพ ัะธะบะปะฐ ะจะะ
TIM2_CCR3L = ~colors[cnt][2]; //
return;
}
แ แฉแแแ แแฎแแแแ แจแแคแแ แฎแแแแแแก แฉแแ แแแ. แแก แแแแแแแ แแกแแแแแแ แแก แแ แซแแแแแแก แแแแแงแแแแแแ rim
-แจแแ แแแแแฌแแแก แแแกแ แซแแแแ
//enable interrupts
_asm("rim");
แแกแแแแแแ แแก แแแแแ แแ แแ แแ แซแแแแแแ sim
โ แแแจแแแก แฌแงแแแขแแแก. แแกแแแ แฃแแแ แแแแแ แแแ, แกแแแแ แแฎแแแ แแแแจแแแแแแแแแ แแฌแแ แแแ "แแแแแ แแแฎแกแแแ แแแแจแ", แ แแแ แแ แแกแฌแแ แแแแแแขแจแ แแแแแฌแแแฃแแแ แจแแคแแ แฎแแแแ แแ แแแแคแฃแญแแก แแแกแแแ.
แงแแแแ แแแแ -
แแฃ แแแแแแก แแแแแช แแก แกแขแแขแแ แแแแแแแแแแ, แขแงแฃแแแแ แแ แแแแฌแแ แ. แกแแแแแแแแแแ แแแแแฆแแ แแแแแแขแแ แแแก แแ แจแแแแจแแแแแก, แแแชแแแแ แงแแแแแคแแ แแ แแฃแแแกแฃแฎแ.
แฌแงแแ แ: www.habr.com