obsw/mission/gpio_rust_helper.c
2024-06-14 13:26:52 +02:00

37 lines
1.0 KiB
C

#include <xgpiops.h>
#include <stdint.h>
/************************************************************/
/* GPIO SETUP AND USAGE */
/************************************************************/
XGpioPs gpio;
void gpio_setup() {
XGpioPs_Config config;
config.DeviceId = 4; // chosen by fair dice throw
config.BaseAddr = XPS_GPIO_BASEADDR;
s32 returncode = XGpioPs_CfgInitialize(&gpio, &config, XPS_GPIO_BASEADDR);
//printf("Configured XGPIO");
XGpioPs_SetDirection(&gpio, 0, (1 << 7));
XGpioPs_SetOutputEnable(&gpio, 0, (1 << 7));
XGpioPs_WritePin(&gpio, 7, 1);
//printf("Blinking is initialized");
XGpioPs_WritePin(&gpio, 7, 0);
//printf("Value written once");
}
void gpio_write_pin(uint32_t pin, uint32_t data) {
XGpioPs_WritePin(&gpio, pin, data);
}
uint32_t gpio_read_pin(uint32_t pin) {
return XGpioPs_ReadPin(&gpio, pin);
}
void gpio_toggle_pin(uint32_t pin) {
static int pinvalue = 1;
pinvalue = pinvalue ^ 1;
XGpioPs_WritePin(&gpio, pin, pinvalue);
}