PG13 i PG14 za pomocą buttona, który mamy do dyspozycji. Jak wiadomo z
user manuala button ten jest na pinie PA0. Skonfigurujemy sobie go w taki sposób
aby przy wciśnięciu i zwolnieniu stany naszych dwóch diod się zmieniały.
Oczywiście w kodzie zmieściłem stosowne komentarze co pomoże w zrozumieniu
kodu. Kod jest modyfikacją kodu do mrugania diodami z poprzedniej lekcji.
#include "main.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_rcc.h" void Delay(volatile uint32_t nCount); void Diody_Init(void); void Button_Init(void); int main(void) { SystemInit(); Diody_Init(); Button_Init(); while(1) { if(GPIOA->IDR & 0x0001) //sprawdzanie IDR (input data register) { GPIOG->ODR |= GPIO_Pin_13; // zapalenie diody GPIOG->ODR &=~ GPIO_Pin_14; // zapalenie diody } else { GPIOG->ODR &=~ GPIO_Pin_13; // zgaszenie diody GPIOG->ODR |= GPIO_Pin_14; // zgaszenie diody } } } void Diody_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; // włączenie zegara RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE); //ustawienie zegara // ustawienie pinów portu G GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOG, &GPIO_InitStructure); } void Button_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; //ustawienie zegara RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //ustawienie user buttona na Pinie PA0 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //ustawienie pinu PA0 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //button jako wejcie GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//ustawienie prędkoci GPIO GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //ustawienie pinu w trybie push/pull GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //włączenie rezystora pulldown GPIO_Init(GPIOA, &GPIO_InitStructure); //przekazanie parametró do funkcji inicjalizacyjnej } void Delay(volatile uint32_t nCount) { // funkcja opóźniająca while(nCount--) { } }Cały projekt jest do pobrania w poprzedniej lekcji z mruganiem diodami, więc stamtąd można sobie go pobrać i stosownie pozmieniać odpowiednie linie kodu. Przyjemnej zabawy:)
Brak komentarzy:
Prześlij komentarz