PSoC 4 Peripheral Driver Library - Alpha

General Description

Functions

__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptStatus (const GPIO_PRT_Type *base, uint32_t pinNum)
 Returns the current unmasked interrupt state of the pin. More...
 
__STATIC_INLINE void Cy_GPIO_ClearInterrupt (GPIO_PRT_Type *base, uint32_t pinNum)
 Clears the triggered pin interrupt. More...
 
__STATIC_INLINE void Cy_GPIO_SetInterruptEdge (GPIO_PRT_Type *base, uint32_t pinNum, uint32_t value)
 Configures the type of edge that will trigger a pin interrupt. More...
 
__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptEdge (const GPIO_PRT_Type *base, uint32_t pinNum)
 Returns the current pin interrupt edge type. More...
 
__STATIC_INLINE void Cy_GPIO_SetFilter (GPIO_PRT_Type *base, uint32_t value)
 Configures which pin on the port connects to the port-specific glitch filter. More...
 
__STATIC_INLINE uint32_t Cy_GPIO_GetFilter (const GPIO_PRT_Type *base)
 Returns which pin is currently configured to connect to the port-specific glitch filter. More...
 
__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause (void)
 Returns the interrupt status for ports 0 to 31. More...
 

Function Documentation

◆ Cy_GPIO_GetInterruptStatus()

__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptStatus ( const GPIO_PRT_Type base,
uint32_t  pinNum 
)

Returns the current unmasked interrupt state of the pin.

The core processor's NVIC is triggered by the masked interrupt bits. This function allows reading the unmasked interrupt state. Whether the bit positions actually trigger the interrupt are defined by the interrupt mask bits.

Parameters
basePointer to the pin's port register base address
pinNumPosition of the pin bit-field within the port register Bit position 8 is the routed pin through the port glitch filter.
Returns
0 = Pin interrupt condition not detected 1 = Pin interrupt condition detected
Function Usage
/* Scenario: Clear stale (unmasked) port interrupts before reconfiguration */
if(1UL == Cy_GPIO_GetInterruptStatus(P0_3_PORT, P0_3_NUM))
{
/* Clear the P0.3 interrupt */
Cy_GPIO_ClearInterrupt(P0_3_PORT, P0_3_NUM);
}

◆ Cy_GPIO_ClearInterrupt()

__STATIC_INLINE void Cy_GPIO_ClearInterrupt ( GPIO_PRT_Type base,
uint32_t  pinNum 
)

Clears the triggered pin interrupt.

Parameters
basePointer to the pin's port register base address
pinNumPosition of the pin bit-field within the port register Bit position 8 is the routed pin through the port glitch filter.
Function Usage
/* Scenario: Inside the interrupt service routine of port 0 interrupt */
/* Clear the P0.3 interrupt */
Cy_GPIO_ClearInterrupt(P0_3_PORT, P0_3_NUM);

◆ Cy_GPIO_SetInterruptEdge()

__STATIC_INLINE void Cy_GPIO_SetInterruptEdge ( GPIO_PRT_Type base,
uint32_t  pinNum,
uint32_t  value 
)

Configures the type of edge that will trigger a pin interrupt.

Parameters
basePointer to the pin's port register base address
pinNumPosition of the pin bit-field within the port register. Bit position 8 is the routed pin through the port glitch filter.
valuePin interrupt mode. Options are detailed in Interrupt trigger type macros
Note
This function modifies a port register in a read-modify-write operation. It is not thread safe as the resource is shared among multiple pins on a port.
Function Usage
/* Scenario: Update the port interrupt trigger type to falling edge */
/* Get the interrupt edge setting of P0.3 */
if(CY_GPIO_INTR_RISING == Cy_GPIO_GetInterruptEdge(P0_3_PORT, P0_3_NUM))
{
/* Set the interrupt trigger type to falling edge for P0.3 */
}

◆ Cy_GPIO_GetInterruptEdge()

__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptEdge ( const GPIO_PRT_Type base,
uint32_t  pinNum 
)

Returns the current pin interrupt edge type.

Parameters
basePointer to the pin's port register base address
pinNumPosition of the pin bit-field within the port register. Bit position 8 is the routed pin through the port glitch filter.
Returns
Pin interrupt mode. Options are detailed in Interrupt trigger type macros
Function Usage
/* Scenario: Update the port interrupt trigger type to falling edge */
/* Get the interrupt edge setting of P0.3 */
if(CY_GPIO_INTR_RISING == Cy_GPIO_GetInterruptEdge(P0_3_PORT, P0_3_NUM))
{
/* Set the interrupt trigger type to falling edge for P0.3 */
}

◆ Cy_GPIO_SetFilter()

__STATIC_INLINE void Cy_GPIO_SetFilter ( GPIO_PRT_Type base,
uint32_t  value 
)

Configures which pin on the port connects to the port-specific glitch filter.

Each port contains a single 50ns glitch filter. Any of the pins on the port can be routed to this filter such that the input signal is filtered before reaching the edge-detect interrupt circuitry. The state of the filtered pin can also be read by calling the Cy_GPIO_Read() function.

Parameters
basePointer to the pin's port register base address
valueThe number of the port pin to route to the port filter (0...7)
Note
This function modifies a port register in a read-modify-write operation. It is not thread safe as the resource is shared among multiple pins on a port.
The filtered pin does not have an associated HSIOM connection. Therefore it cannot be routed directly to other peripherals in hardware.
Function Usage
/* Scenario: Utilize the glitch filter for input signal on P0.3 */
/* Get the source of the port 0 glitch filter */
if(P0_3_NUM != Cy_GPIO_GetFilter(P0_3_PORT))
{
/* Set the port 0 glitch filter source to be P0.3 */
Cy_GPIO_SetFilter(P0_3_PORT, P0_3_NUM);
}

◆ Cy_GPIO_GetFilter()

__STATIC_INLINE uint32_t Cy_GPIO_GetFilter ( const GPIO_PRT_Type base)

Returns which pin is currently configured to connect to the port-specific glitch filter.

Each port contains a single 50ns glitch filter. Any of the pins on the port can be routed to this filter such that the input signal is filtered before reaching the edge-detect interrupt circuitry. The state of the filtered pin can also be read by calling the Cy_GPIO_Read() function.

Parameters
basePointer to the pin's port register base address
Returns
The number of the port pin routed to the port filter (0...7)
Function Usage
/* Scenario: Utilize the glitch filter for input signal on P0.3 */
/* Get the source of the port 0 glitch filter */
if(P0_3_NUM != Cy_GPIO_GetFilter(P0_3_PORT))
{
/* Set the port 0 glitch filter source to be P0.3 */
Cy_GPIO_SetFilter(P0_3_PORT, P0_3_NUM);
}

◆ Cy_GPIO_GetInterruptCause()

__STATIC_INLINE uint32_t Cy_GPIO_GetInterruptCause ( void  )

Returns the interrupt status for ports 0 to 31.

Returns
0 = Interrupt not detected on port 1 = Interrupt detected on port
Function Usage
/* Scenario: Inside the interrupt service routine of "all port" interrupt */
#define PORT0_INTR_MASK 0x00000001UL
uint32_t intrSrc = Cy_GPIO_GetInterruptCause();
/* Check if the interrupt was from port 0 */
if(PORT0_INTR_MASK == (intrSrc & PORT0_INTR_MASK))
{
/* Clear the P0.3 interrupt */
Cy_GPIO_ClearInterrupt(P0_3_PORT, P0_3_NUM);
}