添加一些关于midi播放的项目
This commit is contained in:
@@ -0,0 +1,252 @@
|
||||
/**************************************************************************!
|
||||
* 技术讨论:QQ群 123763203
|
||||
* 官网 :www.navota.com
|
||||
*
|
||||
* @file kbi.c
|
||||
* @brief 键盘中断(KBI)函数库
|
||||
* @author Navota
|
||||
* @date 2017-1-1
|
||||
****************************************************************************/
|
||||
#include "common.h"
|
||||
#include "kbi.h"
|
||||
|
||||
/****************************************************************************!
|
||||
* @ 存放KBI回调函数接口
|
||||
****************************************************************************/
|
||||
KBI_CallbackType KBI_Callback[KBI_MAX_NO] = {(KBI_CallbackType)NULL};
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 初始化KBI模块.
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
* @param[in] pConfig 指向KBI配置结构体
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @see KBI_DeInit.
|
||||
*
|
||||
*****************************************************************************/
|
||||
void KBI_Init(KBI_Type *pKBI, KBI_ConfigType *pConfig)
|
||||
{
|
||||
#if defined(CPU_NV32)
|
||||
uint16_t i;
|
||||
uint8_t sc = 0;
|
||||
uint8_t u8Port;
|
||||
uint8_t u8PinPos;
|
||||
uint16_t u16PinMapping[KBI_MAX_NO][8] =
|
||||
{
|
||||
{
|
||||
0, 1, 2, 3, 8, 9, 10, 11 /* KBI0中断输入引脚在GPIOA寄存器中的位置*/
|
||||
},
|
||||
{
|
||||
24, 25, 26, 27, 28, 29, 30, 31 /*KBI1中断输入引脚在GPIOA寄存器中的位置*/
|
||||
}
|
||||
};
|
||||
#elif defined(CPU_NV32M3)
|
||||
uint16_t i;
|
||||
uint8_t sc = 0;
|
||||
uint8_t u8Port;
|
||||
uint8_t u8PinPos;
|
||||
uint16_t u16PinMapping[KBI_MAX_NO][8] =
|
||||
{
|
||||
{
|
||||
0, 1, 2, 3, 8, 9, 10, 11 /* KBI0中断输入引脚在GPIOA寄存器中的位置*/
|
||||
},
|
||||
{
|
||||
20, 21, 16, 17, 18, 19, 12, 13 /* KBI1中断输入引脚在GPIOA寄存器中的位置*/
|
||||
}
|
||||
};
|
||||
#elif defined(CPU_NV32M4)
|
||||
uint32_t i;
|
||||
uint32_t sc = 0;
|
||||
uint32_t u8Port;
|
||||
uint32_t u8PinPos;
|
||||
|
||||
uint32_t u16PinMapping[KBI_MAX_NO][KBI_MAX_PINS_PER_PORT] =
|
||||
{
|
||||
{/* KBI0P0~KBI0P31 中断输入引脚在GPIOA寄存器中的位置 */
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
|
||||
},
|
||||
{/* KBI1P0~KBI1P31中断输入引脚在GPIOA寄存器中的位置 */
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
if(KBI0 == pKBI)
|
||||
{
|
||||
SIM->SCGC |= SIM_SCGC_KBI0_MASK; /* 使能KBI0模块的总线时钟 */
|
||||
u8Port = 0;
|
||||
}
|
||||
else if (KBI1 == pKBI)
|
||||
{
|
||||
SIM->SCGC |= SIM_SCGC_KBI1_MASK; /* 使能KBI1模块的总线时钟 */
|
||||
u8Port = 1;
|
||||
}
|
||||
|
||||
/*设定KBI中断检测模式*/
|
||||
sc = pConfig->sBits.bMode;
|
||||
pKBI->SC = sc;
|
||||
|
||||
/* 配置KBI中断输入引脚 */
|
||||
for (i = 0; i < KBI_MAX_PINS_PER_PORT; i++)
|
||||
{
|
||||
if(pConfig->sPin[i].bEn)
|
||||
{
|
||||
pKBI->PE |= (1<<i); /* 使能I/O引脚为KBI中断输入引脚*/
|
||||
pKBI->ES = (pKBI->ES & ~(1<<i)) | (pConfig->sPin[i].bEdge << i);
|
||||
u8PinPos = u16PinMapping[u8Port][i];
|
||||
ASSERT(!(u8PinPos & 0x80));
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
FGPIOA->PIDR &= ~(1<<u8PinPos); /* 使能GPIO输入*/
|
||||
FGPIOA->PDDR &= ~(1<<u8PinPos); /* 引脚配置为通用输入 */
|
||||
PORT->PUEL |= (1<<u8PinPos); /* 使能内部上拉*/
|
||||
#elif defined(CPU_NV32M4)
|
||||
if (u8Port == 0) /* KBI0 */
|
||||
{
|
||||
FGPIOA->PIDR &= ~(1<<u8PinPos); /* 使能GPIO输入*/
|
||||
FGPIOA->PDDR &= ~(1<<u8PinPos); /* 引脚配置为通用输入 */
|
||||
PORT->PUE0 |= (1<<u8PinPos); /* 使能内部上拉*/
|
||||
}
|
||||
else if (u8Port == 1) /* KBI1 */
|
||||
{
|
||||
FGPIOB->PIDR &= ~(1<<u8PinPos); /* 使能GPIO输入*/
|
||||
FGPIOB->PDDR &= ~(1<<u8PinPos); /* 引脚配置为通用输入 */
|
||||
PORT->PUE1 |= (1<<u8PinPos); /* 使能内部上拉*/
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(CPU_NV32M4)
|
||||
/*Reset KBI_SP register*/
|
||||
sc = pConfig->sBits.bRstKbsp<<KBI_SC_RSTKBSP_SHIFT;
|
||||
pKBI->SC |= sc;
|
||||
|
||||
/*Real KBI_SP register enable*/
|
||||
sc = pConfig->sBits.bKbspEn<<KBI_SC_KBSPEN_SHIFT;
|
||||
pKBI->SC |= sc;
|
||||
#endif
|
||||
|
||||
/*清除中断标志位*/
|
||||
pKBI->SC = sc;
|
||||
|
||||
/* 使能KBI中断 */
|
||||
if(pConfig->sBits.bIntEn)
|
||||
{
|
||||
pKBI->SC |= KBI_SC_KBIE_MASK;
|
||||
|
||||
if(KBI0 == pKBI)
|
||||
{
|
||||
NVIC_EnableIRQ(KBI0_IRQn);
|
||||
}
|
||||
else
|
||||
{
|
||||
NVIC_EnableIRQ(KBI1_IRQn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 设置KBI回调函数,通过中断服务函数调用
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
* @param[in] pfnCallback 指向回调函数.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @ Pass/ Fail criteria: none.
|
||||
*
|
||||
*****************************************************************************/
|
||||
void KBI_SetCallback(KBI_Type *pKBI, KBI_CallbackType pfnCallback)
|
||||
{
|
||||
if(KBI0 == pKBI)
|
||||
{
|
||||
KBI_Callback[0] = pfnCallback;
|
||||
}
|
||||
else
|
||||
{
|
||||
KBI_Callback[1] = pfnCallback;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 复位KBI模块.
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @see KBI_Init.
|
||||
*
|
||||
*****************************************************************************/
|
||||
void KBI_DeInit(KBI_Type *pKBI)
|
||||
{
|
||||
if(KBI0 == pKBI)
|
||||
{
|
||||
NVIC_DisableIRQ(KBI0_IRQn);
|
||||
}
|
||||
else
|
||||
{
|
||||
NVIC_DisableIRQ(KBI1_IRQn);
|
||||
}
|
||||
|
||||
pKBI->PE = 0;
|
||||
pKBI->SC = 0;
|
||||
pKBI->ES = 0;
|
||||
|
||||
if(KBI0 == pKBI)
|
||||
{
|
||||
SIM->SCGC &= ~SIM_SCGC_KBI0_MASK; /* 禁用KBI0模块总线时钟 */
|
||||
}
|
||||
else
|
||||
{
|
||||
SIM->SCGC &= ~SIM_SCGC_KBI1_MASK; /* 禁用KBI1模块总线时钟 */
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief KBI0模块中断服务函数.
|
||||
*
|
||||
* @param none.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
void KBI0_Isr(void)
|
||||
{
|
||||
KBI0->SC |= KBI_SC_KBACK_MASK; /*清除中断标志位 */
|
||||
|
||||
if(KBI_Callback[0])
|
||||
{
|
||||
KBI_Callback[0]();
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief KBI1模块中断服务函数
|
||||
*
|
||||
* @param none.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
void KBI1_Isr(void)
|
||||
{
|
||||
KBI1->SC |= KBI_SC_KBACK_MASK; /*清除中断标志位*/
|
||||
|
||||
if(KBI_Callback[1])
|
||||
{
|
||||
KBI_Callback[1]();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,372 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* @brief KBI 驱动头文件.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _KBI_H_
|
||||
#define _KBI_H_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "common.h"
|
||||
/********************************************************!
|
||||
*
|
||||
* @brief KBI模块中断输入信号检测模式选择
|
||||
*
|
||||
***********************************************************/
|
||||
typedef enum
|
||||
{
|
||||
KBI_MODE_EDGE_ONLY = 0, /*!< 选择 边沿检测 */
|
||||
KBI_MODE_EDGE_LEVEL /*!< 选择 边沿和电平检测*/
|
||||
}KBI_ModeType;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
KBI_FALLING_EDGE_LOW_LEVEL = 0, /*!< 选择 下降沿或低电平 */
|
||||
KBI_RISING_EDGE_HIGH_LEVEL /*!< 选择 上升沿或高电平 */
|
||||
}KBI_EdgeType;
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* 定义KBI模块个数和中断输入引脚个数
|
||||
*
|
||||
*******************************************************************************/
|
||||
#define KBI_MAX_NO 2 /*!< KBI模块个数 */
|
||||
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
#define KBI_MAX_PINS_PER_PORT 8 /*!< KBI中断输入引脚个数 */
|
||||
#elif defined(CPU_NV32M4)
|
||||
#define KBI_MAX_PINS_PER_PORT 32 /*!< KBI中断输入引脚个数 */
|
||||
#endif
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* KBI回调函数声明
|
||||
******************************************************************************/
|
||||
typedef void (*KBI_CallbackType)(void);
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* KBI引脚配置结构体
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t bEdge : 1; /*!< 边沿/电平选择为*/
|
||||
uint8_t bEn : 1; /*!< 引脚使能位*/
|
||||
uint8_t bRsvd : 6; /*!< 保留 */
|
||||
} KBI_PinConfigType;
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* KBI配置结构体
|
||||
*
|
||||
*******************************************************************************/
|
||||
/*!
|
||||
* @brief KBI状态和控制寄存器结构体.
|
||||
*
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
struct
|
||||
{
|
||||
uint8_t bMode : 1; /*!< 选择KBI检测模式 */
|
||||
uint8_t bIntEn : 1; /*!< 使能KBI中断位 */
|
||||
uint8_t bRsvd : 6; /*!< 保留 */
|
||||
} sBits;
|
||||
#elif defined(CPU_NV32M4)
|
||||
struct
|
||||
{
|
||||
uint32_t bMode : 1; /*!< 选择KBI检测模式 */
|
||||
uint32_t bIntEn : 1; /*!< 使能KBI中断位 */
|
||||
uint32_t bRsvd2 : 2; /*!< 保留 */
|
||||
uint32_t bKbspEn : 1; /*!<Real KBI_SP register enable*/
|
||||
uint32_t bRstKbsp: 1; /*!<Reset KBI_SP register*/
|
||||
uint32_t bRsvd26 : 26; /*!< reserved */
|
||||
} sBits;
|
||||
#endif
|
||||
KBI_PinConfigType sPin[KBI_MAX_PINS_PER_PORT];
|
||||
} KBI_ConfigType, *KBI_ConfigTypePtr;
|
||||
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 设置仅下降沿检测.
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
* @param[in] PinMasks KBI中断输入引脚号.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @see KBI_DetectRisingEdge.
|
||||
*
|
||||
*****************************************************************************/
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
__STATIC_INLINE void KBI_DetectFallingEdge(KBI_Type *pKBI, uint8_t PinMasks)
|
||||
#elif defined(CPU_NV32M4)
|
||||
__STATIC_INLINE void KBI_DetectFallingEdge(KBI_Type *pKBI, uint32_t PinMasks)
|
||||
#endif
|
||||
{
|
||||
pKBI->SC &= ~KBI_SC_KBMOD_MASK;
|
||||
pKBI->ES &= ~(PinMasks);
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 设置仅高电平检测
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
* @param[in] PinMasks KBI中断输入引脚号.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @see KBI_DetectFallingEdge.
|
||||
*
|
||||
*****************************************************************************/
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
__STATIC_INLINE void KBI_DetectRisingEdge(KBI_Type *pKBI, uint8_t PinMasks)
|
||||
#elif defined(CPU_NV32M4)
|
||||
__STATIC_INLINE void KBI_DetectRisingEdge(KBI_Type *pKBI, uint32_t PinMasks)
|
||||
#endif
|
||||
{
|
||||
pKBI->SC &= ~KBI_SC_KBMOD_MASK;
|
||||
pKBI->ES |= (PinMasks);
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 设置上升沿和高电平检测
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
* @param[in] PinMasks KBI中断输入引脚号.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @see KBI_DetectFallingEdgeLowLevel.
|
||||
*
|
||||
*****************************************************************************/
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
__STATIC_INLINE void KBI_DetectRisingEdgeHighLevel(KBI_Type *pKBI, uint8_t PinMasks)
|
||||
#elif defined(CPU_NV32M4)
|
||||
__STATIC_INLINE void KBI_DetectRisingEdgeHighLevel(KBI_Type *pKBI, uint32_t PinMasks)
|
||||
#endif
|
||||
{
|
||||
pKBI->SC |= KBI_SC_KBMOD_MASK;
|
||||
pKBI->ES |= (PinMasks);
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 设置下降沿和低电平检测
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
* @param[in] PinMasks KBI中断输入引脚号.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @ Pass/ Fail criteria: none.
|
||||
*
|
||||
* @see KBI_DetectRisingEdgeHighLevel.
|
||||
*
|
||||
*****************************************************************************/
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
__STATIC_INLINE void KBI_DetectFallingEdgeLowLevel(KBI_Type *pKBI, uint8_t PinMasks)
|
||||
#elif defined(CPU_NV32M4)
|
||||
__STATIC_INLINE void KBI_DetectFallingEdgeLowLevel(KBI_Type *pKBI, uint32_t PinMasks)
|
||||
#endif
|
||||
{
|
||||
pKBI->SC |= KBI_SC_KBMOD_MASK;
|
||||
pKBI->ES &= ~(PinMasks);
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 使能KBI中断输入引脚
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块..
|
||||
* @param[in] PinMasks KBI中断输入引脚号.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @see KBI_Disable.
|
||||
*
|
||||
*****************************************************************************/
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
__STATIC_INLINE void KBI_Enable(KBI_Type *pKBI, uint8_t PinMasks)
|
||||
#elif defined(CPU_NV32M4)
|
||||
__STATIC_INLINE void KBI_Enable(KBI_Type *pKBI, uint32_t PinMasks)
|
||||
#endif
|
||||
{
|
||||
pKBI->PE |= (PinMasks);
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 禁用KBI中断输入引脚.
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块..
|
||||
* @param[in] PinMasks KBI中断输入引脚号.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @see KBI_Enable.
|
||||
*
|
||||
*****************************************************************************/
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
__STATIC_INLINE void KBI_Disable(KBI_Type *pKBI, uint8_t PinMasks)
|
||||
#elif defined(CPU_NV32M4)
|
||||
__STATIC_INLINE void KBI_Disable(KBI_Type *pKBI, uint32_t PinMasks)
|
||||
#endif
|
||||
{
|
||||
pKBI->PE &= ~(PinMasks);
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 使能KBI中断
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块..
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
*
|
||||
* @see KBI_DisableInt.
|
||||
*
|
||||
*****************************************************************************/
|
||||
__STATIC_INLINE void KBI_EnableInt(KBI_Type *pKBI)
|
||||
{
|
||||
pKBI->SC |= KBI_SC_KBIE_MASK;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 禁用KBI中断
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
*
|
||||
* @see KBI_EnableInt.
|
||||
*
|
||||
*****************************************************************************/
|
||||
__STATIC_INLINE void KBI_DisableInt(KBI_Type *pKBI)
|
||||
{
|
||||
pKBI->SC &= ~KBI_SC_KBIE_MASK;
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 获取中断标志位
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
*
|
||||
* @return uint8_t.
|
||||
*
|
||||
* @see KBI_ClrFlags.
|
||||
*
|
||||
*****************************************************************************/
|
||||
#if defined(CPU_NV32)|| defined(CPU_NV32M3)
|
||||
__STATIC_INLINE uint8_t KBI_GetFlags(KBI_Type *pKBI)
|
||||
#elif defined(CPU_NV32M4)
|
||||
__STATIC_INLINE uint32_t KBI_GetFlags(KBI_Type *pKBI)
|
||||
#endif
|
||||
{
|
||||
return (pKBI->SC & KBI_SC_KBF_MASK);
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief 清除中断标志位.
|
||||
*
|
||||
* @param[in] pKBI 指向KBI模块.
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
*
|
||||
* @see KBI_GetFlags.
|
||||
*
|
||||
*****************************************************************************/
|
||||
__STATIC_INLINE void KBI_ClrFlags(KBI_Type *pKBI)
|
||||
{
|
||||
pKBI->SC |= KBI_SC_KBACK_MASK;
|
||||
}
|
||||
|
||||
#if defined(CPU_NV32M4)
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief Real KBI_SP register enable.
|
||||
*
|
||||
* @param[in] pKBI pointer to KBI module
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @ Pass/ Fail criteria: none
|
||||
*
|
||||
* @see The real ETMe value of Keyboard source pin to be read.
|
||||
*
|
||||
*****************************************************************************/
|
||||
__STATIC_INLINE void KBI_SPEnable(KBI_Type *pKBI)
|
||||
{
|
||||
pKBI->SC |= KBI_SC_KBSPEN_MASK;
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief Get KBI source pin register fields.
|
||||
*
|
||||
* @param[in] pKBI pointer to KBI module.
|
||||
*
|
||||
* @return uint32_t.
|
||||
*
|
||||
* @ Pass/ Fail criteria: none.
|
||||
*
|
||||
* @see KBI_GetSP.
|
||||
*
|
||||
*****************************************************************************/
|
||||
__STATIC_INLINE uint32_t KBI_GetSP(KBI_Type *pKBI)
|
||||
{
|
||||
return (pKBI->SP & KBI_SP_SP_MASK);
|
||||
}
|
||||
|
||||
/*****************************************************************************//*!
|
||||
*
|
||||
* @brief Reset KBI_SP register.
|
||||
*
|
||||
* @param[in] pKBI pointer to KBI module
|
||||
*
|
||||
* @return none.
|
||||
*
|
||||
* @ Pass/ Fail criteria: none
|
||||
*
|
||||
* @see KBI_RstSP.
|
||||
*
|
||||
*****************************************************************************/
|
||||
__STATIC_INLINE void KBI_RstSP(KBI_Type *pKBI)
|
||||
{
|
||||
pKBI->SC |= KBI_SC_RSTKBSP_MASK;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* Global functions
|
||||
******************************************************************************/
|
||||
|
||||
void KBI_Init(KBI_Type *pKBI, KBI_ConfigType *pConfig);
|
||||
void KBI_SetCallback(KBI_Type *pKBI, KBI_CallbackType pfnCallback);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user