Back to posts Edit this post
Copy content

13 Dec 11:11

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) uint8_t nwd(uint8_t a, uint8_t b) { while (b != 0) { uint8_t temp = b; b = a % b; a = temp; } return a; } uint8_t nww(uint8_t a, uint8_t b) { return (a * b) / nwd(a, b); } int main(void) { uint8_t a = 0; uint8_t e = 0; uint8_t g = 0; uint8_t nwd_result = 0; uint8_t nww_result = 0; ROM_SysCtlClockSet(SYSCTL_SYSDIV_20 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ); // Wlaczenie GPIO SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH); // Ustawienie wyjsc GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PINS_ALL); GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PINS_ALL); GPIOPinTypeGPIOOutput(GPIO_PORTG_BASE, GPIO_PINS_ALL); GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PINS_ALL); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PINS_ALL); // Ustawienie wejsc GPIOPinTypeGPIOInput(GPIO_PORTH_BASE, GPIO_PINS_ALL); GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PINS_ALL); for (;;) { if (GPIOPinRead(GPIO_PORTH_BASE, GPIO_PIN_7)) { a++; while (GPIOPinRead(GPIO_PORTH_BASE, GPIO_PINS_ALL)); } if (GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PINS_ALL)) { e++; while (GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PINS_ALL)); } g = a - e; //NWD i NWW if (a != 0 && e != 0) { nwd_result = nwd(a, e); nww_result = nww(a, e); } // Zapisanie wyników do portów LED GPIOPinWrite(GPIO_PORTA_BASE, 0xFF, a); GPIOPinWrite(GPIO_PORTE_BASE, 0xFF, e); GPIOPinWrite(GPIO_PORTG_BASE, 0xFF, g); // Wyświetlanie wyników NWD i NWW GPIOPinWrite(GPIO_PORTB_BASE, 0xFF, nwd_result); GPIOPinWrite(GPIO_PORTF_BASE, 0xFF, nww_result); // Opóźnienie SysCtlDelay(SysCtlClockGet() / 2); } return 0; }

No files