Back to posts Edit this post
Copy content

20 Dec 09:52

a
/* main.c */ #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 NWD(uint8_t a, uint8_t e){ uint8_t pom = 0; while(e!=0){ pom = e; e=a%e; a=pom; } return a; } int NWW (uint8_t a, uint8_t e){ return a*e/NWD(a,e); } int main(void) { uint8_t a = 0; uint8_t e = 0; uint8_t g = 0; uint8_t nd = 0; uint8_t nw = 0; // // 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, GPIOC // SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOA); SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOE); SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOJ); SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOG); SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOH); SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOF); // // Set all GPIOA and GPIOC pins as outputs // 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); // // Set all GPIOJ pins as inputs // GPIOPinTypeGPIOInput(GPIO_PORTH_BASE, GPIO_PINS_ALL); GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PINS_ALL); for (;;) { if (GPIOPinRead(GPIO_PORTH_BASE, GPIO_PIN_5) == GPIO_PIN_5){ a++; } if (GPIOPinRead(GPIO_PORTJ_BASE,GPIO_PIN_5) == GPIO_PIN_5){ e++; } g = a - e; if (a != 0 && e != 0){ nd = NWD(a, e); nw = NWW(a, e); } GPIOPinWrite (GPIO_PORTB_BASE, 0xFF, nd); GPIOPinWrite (GPIO_PORTF_BASE, 0xFF, nw); // // Check button press and write data to port // // // Show some patterns on LEDs // GPIOPinWrite (GPIO_PORTA_BASE, 0xFF, a); GPIOPinWrite (GPIO_PORTE_BASE, 0xFF, e); GPIOPinWrite (GPIO_PORTG_BASE, 0xFF, g); // // Delay for a while so changes can be visible // SysCtlDelay(SysCtlClockGet() / 2); } return 0; }

No files