forked from ROMEO/obsw
61 lines
1.3 KiB
C
61 lines
1.3 KiB
C
|
|
#include <xgpiops.h>
|
|
#include <stdint.h>
|
|
|
|
/************************************************************/
|
|
/* GPIO SETUP AND USAGE */
|
|
/************************************************************/
|
|
|
|
|
|
if(TargetIsLinux)
|
|
|
|
XGpioPs gpio;
|
|
void gpio_setup() {
|
|
}
|
|
|
|
|
|
void gpio_write_pin(uint32_t pin, uint32_t data) {
|
|
}
|
|
|
|
uint32_t gpio_read_pin(uint32_t pin) {
|
|
return 1;
|
|
}
|
|
|
|
void gpio_toggle_pin(uint32_t pin) {
|
|
}
|
|
endif()
|
|
|
|
if(TargetIsZedboard TRUE)
|
|
|
|
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);
|
|
}
|
|
|
|
|
|
endif() |