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