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;
}