forked from ROMEO/obsw
Added C/Rust-Bindings for XGPIO
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "semphr.h"
|
#include "semphr.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
|
#include <xgpiops.h>
|
||||||
|
|
||||||
// TODO namespace the names
|
// TODO namespace the names
|
||||||
|
|
||||||
@ -98,4 +99,36 @@ uint8_t give_mutex(void * handle) {
|
|||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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);
|
||||||
}
|
}
|
@ -46,6 +46,12 @@ extern "C" {
|
|||||||
fn enable_global_threading_c();
|
fn enable_global_threading_c();
|
||||||
fn disable_global_threading_c();
|
fn disable_global_threading_c();
|
||||||
|
|
||||||
|
|
||||||
|
pub fn gpio_setup() -> ();
|
||||||
|
pub fn gpio_write_pin(pin: u32, data: u32) -> (); // TODO: Is u32 compatible to uint32_t?
|
||||||
|
pub fn gpio_read_pin(pin: u32) -> u32;
|
||||||
|
pub fn gpio_toggle_pin(pin: u32) -> ();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn task_delete_self() {
|
pub fn task_delete_self() {
|
||||||
|
Reference in New Issue
Block a user