13 Dec 11:13
mati
/*
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
uint8_t get_nwd (uint8_t a, uint8_t b)
{
while(b!=0)
{
uint8_t remainder = a%b;
a = b;
b = remainder;
}
return a;
}
int main(void)
{
uint8_t x = 1;
uint8_t y = 1;
uint8_t nww = 0;
uint8_t nwd = 1;
uint8_t remainder = 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 gpio
//
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOB);
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOE);
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOG);
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOH);
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOJ);
//outputs
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PINS_ALL);
GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PINS_ALL);
GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PINS_ALL);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PINS_ALL);
GPIOPinTypeGPIOOutput(GPIO_PORTG_BASE, GPIO_PINS_ALL);
//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)
{
x++;
}
if(GPIOPinRead(GPIO_PORTJ_BASE,GPIO_PIN_5) == GPIO_PIN_5)
{
y++;
}
nwd = get_nwd(x, y);
nww = (x*y)/nwd;
remainder = x - y;
GPIOPinWrite (GPIO_PORTE_BASE, 0xFF, nww);
GPIOPinWrite (GPIO_PORTF_BASE, 0xFF, nwd);
GPIOPinWrite (GPIO_PORTG_BASE, 0xFF, remainder);
GPIOPinWrite (GPIO_PORTA_BASE, 0xFF, x);
GPIOPinWrite (GPIO_PORTB_BASE, 0xFF, y);
SysCtlDelay(SysCtlClockGet() / 2);
}
return 0;
}