{"id":2373,"date":"2023-08-02T17:23:25","date_gmt":"2023-08-02T15:23:25","guid":{"rendered":"https:\/\/msalamon.pl\/?p=2373"},"modified":"2023-08-11T10:52:35","modified_gmt":"2023-08-11T08:52:35","slug":"miganie-dioda-na-stm32-czyli-gpio-output-stm32-na-rejestrach-2","status":"publish","type":"post","link":"https:\/\/msalamon.pl\/miganie-dioda-na-stm32-czyli-gpio-output-stm32-na-rejestrach-2\/","title":{"rendered":"Miganie diod\u0105 na STM32, czyli GPIO Output | STM32 na Rejestrach #2"},"content":{"rendered":"\n

Miganie diod\u0105 na STM32, czyli GPIO Output<\/h1>\n\n\n\n

Ostatnio dowiedzieli\u015bmy si\u0119 jak postawi\u0107 projekt na STM32 pod pisanie na rejestrach. Tym razem poka\u017c\u0119 Ci jak zamiga\u0107 diod\u0105<\/strong> \ud83d\ude0e<\/p>\n\n\n\n

W dzisiejszym wpisie przejdziemy konfiguracj\u0119 GPIO Output oraz nauczymy si\u0119 kontrolowa\u0107 wyj\u015bcie<\/strong> pojedynczego pinu GPIO. Do \u0107wicze\u0144 pos\u0142u\u017cy nam wbudowana dioda LD4 znajduj\u0105ca si\u0119 na NUCLEO-C031C6<\/a>.<\/p>\n\n\n

\n
\"\"<\/a><\/figure><\/div>\n\n\n

Seria STM32 na Rejestrach na YouTube<\/h2>\n\n\n\n

Wpisy te powstaj\u0105 r\u00f3wnolegle do serii na moim YouTube<\/strong> o tej samej tematyce. Je\u015bli wolisz wersj\u0119 video to zapraszam Ci\u0119 w\u0142a\u015bnie tam. Artyku\u0142y te s\u0105 skr\u00f3tem z tego, co pokazuj\u0119 na YouTube.<\/p>\n\n\n\n

Link do Playlisty Youtube<\/strong><\/a><\/p>\n\n\n\n

Konfiguracja GPIO Output w STM32<\/h2>\n\n\n\n

Prace rozpoczynam od pustego projektu, kt\u00f3ry utworzy\u0142em w poprzednim artykule. Najpierw musimy si\u0119 dowiedzie\u0107, na kt\u00f3rym pinie<\/strong> mikrokontrolera znajduje si\u0119 dioda LED na p\u0142ytce NUCLEO-C031C6<\/a>. Naj\u0142atwiej b\u0119dzie tutaj skorzysta\u0107 ze schematu. Schemat znajdziesz na stronie Nucleo w zak\u0142adce CAD Resources<\/em>. Link do naszego schematu<\/a>.<\/p>\n\n\n\n

To, co nas interesuje jest na stronie numer 4 i wygl\u0105da nast\u0119puj\u0105co:<\/p>\n\n\n

\n
\"\"<\/figure><\/div>\n\n\n

Dioda LD4 pod\u0142\u0105czona jest przez MOSFET-N do pinu PA5 na porcie GPIOA.<\/strong> Oznacza to, \u017ce zapalenie diody wymusi podanie wysokiego stanu na bramk\u0119 tranzystora, zgaszenie – stanu niskiego.<\/p>\n\n\n\n

Zegary taktuj\u0105ce peryferium<\/h3>\n\n\n\n

STM32 s\u0105 zbudowane w taki spos\u00f3b, \u017ce do ka\u017cdego z peryferi\u00f3w trzeba oddzielnie doprowadzi\u0107 zegar taktuj\u0105cy. Ka\u017cdy port GPIO z kolei ma oddzielne taktowanie.<\/p>\n\n\n\n

Do kontroli zegar\u00f3w s\u0142u\u017cy blok RCC<\/strong> (Reset and Clock Control) i to w nim musimy w\u0142\u0105czy\u0107 taktowanie<\/strong>. W naszym wypadku dla GPIOA. Szczeg\u00f3\u0142owy spos\u00f3b pracy z dokumentacj\u0105 pokazuj\u0119 na YouTube. Tutaj w artykule b\u0119d\u0119 wkleja\u0142 gotowy kod, kt\u00f3ry nale\u017cy wpisa\u0107, aby uzyska\u0107 efekt.<\/p>\n\n\n\n

Aby w\u0142\u0105czy\u0107 zegar<\/strong> dla GPIOA w STM32C031C6T6 nale\u017cy napisa\u0107<\/p>\n\n\n\n

\/\/ Enable Clock for PORTA\nRCC->IOPENR |= RCC_IOPENR_GPIOAEN;<\/pre>\n\n\n\n

UWAGA!<\/strong> Inne STM32 mog\u0105 mie\u0107 bity w\u0142\u0105czaj\u0105ce zegary GPIO w innych rejestrach RCC. Musisz za ka\u017cdym razem si\u0119 upewnia\u0107 w Reference Manualu!<\/p>\n\n\n\n

Konfiguracja pinu<\/h3>\n\n\n\n

Gdy ju\u017c mamy taktowanie na GPIOA to mo\u017cemy si\u0119 bra\u0107 za jego konfiguracj\u0119. Wcze\u015bniej peryferium to by\u0142o nieaktywne i nic by\u015bmy nie zrobili. Co musimy ustawi\u0107?<\/p>\n\n\n\n

Interesuje nas kilka rejestr\u00f3w:<\/p>\n\n\n\n