06 Dec 11:14
1:1 chat nie dziala
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_gpio.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/rom.h"
#define GPIO_PINS_ALL GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
int main(void)
{
uint8_t countH = 0; // Liczba naciśnięć przycisku na porcie H
uint8_t countJ = 0; // Liczba naciśnięć przycisku na porcie J
uint8_t difference = 0; // Różnica liczby naciśnięć (countH - countJ)
// Set the clocking to run directly from the crystal.
ROM_SysCtlClockSet(SYSCTL_SYSDIV_20 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);
// Enable GPIOA, GPIOJ, GPIOE, GPIOG
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
// Set all GPIOA, GPIOE, and GPIOG pins as outputs
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PINS_ALL);
GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PINS_ALL);
GPIOPinTypeGPIOOutput(GPIO_PORTG_BASE, GPIO_PINS_ALL);
// Set GPIOJ pins as inputs for buttons
GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PIN_6 | GPIO_PIN_7);
for (;;)
{
// Check button press on port J7 (increment countJ)
if (GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_7) == 0) // Button pressed
{
countJ++;
while (GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_7) == 0); // Wait for button release
}
// Check button press on port J6 (increment countH)
if (GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_6) == 0) // Button pressed
{
countH++;
while (GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_6) == 0); // Wait for button release
}
// Calculate the difference between countH and countJ
difference = countH - countJ;
// Show the countH and countJ on LEDs connected to ports A and E
GPIOPinWrite(GPIO_PORTA_BASE, 0xFF, countH); // Display countH on port A
GPIOPinWrite(GPIO_PORTE_BASE, 0xFF, countJ); // Display countJ on port E
// Show the difference on LEDs connected to port G
GPIOPinWrite(GPIO_PORTG_BASE, 0xFF, difference); // Display difference on port G
// Delay for a while so changes can be visible
SysCtlDelay(SysCtlClockGet() / 2);
}
return 0;
}