OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [sw/] [lib/] [source/] [neorv32_gpio.c] - Diff between revs 12 and 23

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 12 Rev 23
Line 62... Line 62...
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Set single pin of GPIO's output port.
 * Set single pin of GPIO's output port.
 *
 *
 * @param[in] pin Pin number to be set (0..15).
 * @param[in] pin Output pin number to be set (0..31).
 **************************************************************************/
 **************************************************************************/
void neorv32_gpio_pin_set(uint8_t pin) {
void neorv32_gpio_pin_set(uint8_t pin) {
 
 
  pin &= 0x0f;
  pin &= 0x1f;
  GPIO_OUTPUT = GPIO_OUTPUT | (uint16_t)(1 << pin);
  GPIO_OUTPUT = GPIO_OUTPUT | (uint32_t)(1 << pin);
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Clear single pin of GPIO's output port.
 * Clear single pin of GPIO's output port.
 *
 *
 * @param[in] pin Pin number to be cleared (0..15).
 * @param[in] pin Output pin number to be cleared (0..31).
 **************************************************************************/
 **************************************************************************/
void neorv32_gpio_pin_clr(uint8_t pin) {
void neorv32_gpio_pin_clr(uint8_t pin) {
 
 
  pin &= 0x0f;
  pin &= 0x1f;
  GPIO_OUTPUT = GPIO_OUTPUT & ~((uint16_t)(1 << pin));
  GPIO_OUTPUT = GPIO_OUTPUT & ~((uint32_t)(1 << pin));
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Toggle single pin of GPIO's output port.
 * Toggle single pin of GPIO's output port.
 *
 *
 * @param[in] pin Pin number to be toggled (0..15).
 * @param[in] pin Output pin number to be toggled (0..31).
 **************************************************************************/
 **************************************************************************/
void neorv32_gpio_pin_toggle(uint8_t pin) {
void neorv32_gpio_pin_toggle(uint8_t pin) {
 
 
  pin &= 0x0f;
  pin &= 0x1f;
  GPIO_OUTPUT = GPIO_OUTPUT ^ (uint16_t)(1 << pin);
  GPIO_OUTPUT = GPIO_OUTPUT ^ (uint32_t)(1 << pin);
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Get single pin of GPIO's input port.
 * Get single pin of GPIO's input port.
 *
 *
 * @param[in] pin Pin to be read (0..15).
 * @param[in] pin Input pin to be read (0..31).
 * @return uint16_t: =0 if pin is low, !=0 if pin is high.
 * @return uint32_t: =0 if pin is low, !=0 if pin is high.
 **************************************************************************/
 **************************************************************************/
uint16_t neorv32_gpio_pin_get(uint8_t pin) {
uint32_t neorv32_gpio_pin_get(uint8_t pin) {
 
 
  pin &= 0x0f;
  pin &= 0x1f;
  return GPIO_INPUT & (uint16_t)(1 << pin);
  return GPIO_INPUT & (uint32_t)(1 << pin);
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Set complete GPIO output port.
 * Set complete GPIO output port.
 *
 *
 * @param[in] port_data New port value.
 * @param[in] port_data New output port value (32-bit).
 **************************************************************************/
 **************************************************************************/
void neorv32_gpio_port_set(uint16_t port_data) {
void neorv32_gpio_port_set(uint32_t port_data) {
 
 
  GPIO_OUTPUT = port_data;
  GPIO_OUTPUT = port_data;
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Get complete GPIO input port.
 * Get complete GPIO input port.
 *
 *
 * @return Current input port state.
 * @return Current input port state (32-bit).
 **************************************************************************/
 **************************************************************************/
uint16_t neorv32_gpio_port_get(void) {
uint32_t neorv32_gpio_port_get(void) {
 
 
  return GPIO_INPUT;
  return GPIO_INPUT;
}
}
 
 
 No newline at end of file
 No newline at end of file
 
 
 
/**********************************************************************//**
 
 * Configure pin-change IRQ mask for input pins.
 
 *
 
 * @note The pin-change IRQ will trigger on any transition (rising and falling edge) for any enabled input pin.
 
 *
 
 * @param[in] pin_en Mask to select which input pins can cause a pin-change IRQ (32-bit), 1 = pin enabled.
 
 **************************************************************************/
 
void neorv32_gpio_pin_change_config(uint32_t pin_sel) {
 
 
 
  GPIO_INPUT = pin_sel;
 
}
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.