152 lines
3.1 KiB
C
152 lines
3.1 KiB
C
/**
|
|
* @file HwA_gpio.h
|
|
* @author Flagchip
|
|
* @brief GPIO hardware access layer
|
|
* @version 2.0.0
|
|
* @date 2024-08-20
|
|
*
|
|
* SDK Version: 2.6.0
|
|
*
|
|
|
|
* @copyright Copyright (c) 2020-2024 Flagchip Semiconductors Co., Ltd.
|
|
*
|
|
* @details
|
|
*/
|
|
/* ********************************************************************************
|
|
* Revision History:
|
|
*
|
|
* Version Date Initials CR# Descriptions
|
|
* --------- ---------- ------------ ---------- ---------------
|
|
* 0.1.0 2023-12-15 Flagchip071 N/A First version for FC7300
|
|
* 2.0.0 2024-10-12 Flagchip071 N/A Change version and release
|
|
******************************************************************************** */
|
|
|
|
#ifndef _HWA_GPIO_H_
|
|
#define _HWA_GPIO_H_
|
|
|
|
#include "device_header.h"
|
|
|
|
#if GPIO_INSTANCE_COUNT > 0U
|
|
|
|
/**
|
|
* @defgroup HwA_gpio HwA_gpio
|
|
* @ingroup module_driver_gpio
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief Set port output to 1
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @param u32Pins Pin numbers
|
|
*/
|
|
LOCAL_INLINE void GPIO_HWA_SetPortOutput(GPIO_Type *pGpio, uint32_t u32Pins)
|
|
{
|
|
pGpio->PSOR = u32Pins;
|
|
}
|
|
|
|
/**
|
|
* @brief Set port output to 0
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @param u32Pins Pin numbers
|
|
*/
|
|
LOCAL_INLINE void GPIO_HWA_ClearPortOutput(GPIO_Type *pGpio, uint32_t u32Pins)
|
|
{
|
|
pGpio->PCOR = u32Pins;
|
|
}
|
|
|
|
/**
|
|
* @brief Toggle port output
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @param u32Pins Pin numbers
|
|
*/
|
|
LOCAL_INLINE void GPIO_HWA_TogglePort(GPIO_Type *pGpio, uint32_t u32Pins)
|
|
{
|
|
pGpio->PTOR = u32Pins;
|
|
}
|
|
|
|
/**
|
|
* @brief Set port direction Input
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @param u32Pins Pin numbers
|
|
*/
|
|
LOCAL_INLINE void GPIO_HWA_SetPortDirectionInput(GPIO_Type *pGpio, uint32_t u32Pins)
|
|
{
|
|
pGpio->PDDR &= (~u32Pins);
|
|
}
|
|
|
|
/**
|
|
* @brief Set port direction output
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @param u32Pins Pin numbers
|
|
*/
|
|
LOCAL_INLINE void GPIO_HWA_SetPortDirectionOutput(GPIO_Type *pGpio, uint32_t u32Pins)
|
|
{
|
|
pGpio->PDDR |= u32Pins;
|
|
}
|
|
|
|
/**
|
|
* @brief Read port data input, this register indicate data on pad.
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @return PDIR register value
|
|
*/
|
|
LOCAL_INLINE uint32_t GPIO_HWA_ReadPortDataInput(GPIO_Type *pGpio)
|
|
{
|
|
return pGpio->PDIR;
|
|
}
|
|
|
|
/**
|
|
* @brief Set pin output to 1
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @param u8Pin Pin number
|
|
*/
|
|
LOCAL_INLINE void GPIO_HWA_SetPinOutput(GPIO_Type *pGpio, uint8_t u8Pin)
|
|
{
|
|
pGpio->PSOR = (uint32_t)1 << u8Pin;
|
|
}
|
|
|
|
/**
|
|
* @brief Set pin output to 0
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @param u8Pin Pin number
|
|
*/
|
|
LOCAL_INLINE void GPIO_HWA_ClearPinOutput(GPIO_Type *pGpio, uint8_t u8Pin)
|
|
{
|
|
pGpio->PCOR = (uint32_t)1 << u8Pin;
|
|
}
|
|
|
|
/**
|
|
* @brief Set pin direction
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @param u8Pin Pin number
|
|
*/
|
|
LOCAL_INLINE void GPIO_HWA_SetPinDirection(GPIO_Type *pGpio, uint8_t u8Pin)
|
|
{
|
|
pGpio->PDDR |= (uint32_t)1 << u8Pin;
|
|
}
|
|
|
|
/**
|
|
* @brief Clear pin direction
|
|
*
|
|
* @param pGpio Gpio instance
|
|
* @param u8Pin Pin number
|
|
*/
|
|
LOCAL_INLINE void GPIO_HWA_ClearPinDirection(GPIO_Type *pGpio, uint8_t u8Pin)
|
|
{
|
|
pGpio->PDDR &= ~((uint32_t)1 << u8Pin);
|
|
}
|
|
|
|
/** @}*/
|
|
|
|
#endif
|
|
|
|
#endif /* #ifndef _HWA_GPIO_H_ */
|