/**********************************************************************
*
* 实验名称:KBI键盘中断实验
* 实验平台:NV32开发板
* 板载芯片:NV32F101FL64E
* 实验效果:初始化KBI模块,选择中断输入引脚,和检测模式,按下按键触发KBI
* 中断切换LED状态
*
************************************************************************/
#include "common.h"
#include "ics.h"
#include "rtc.h"
#include "uart.h"
#include "kbi.h"
#include "sysinit.h"
int main (void);
void KBI0_Task(void);
void KBI1_Task(void);
/********************************************************************/
int main (void)
{
uint8_t u8Ch,i;
ICS_ConfigType sICSConfig;
KBI_ConfigType sKBIConfig;
/*系统初始化*/
sysinit();
printf("\nRunning the KBI_demo project.\r\n");
LED1_Init();
LED2_Init();
PORT->IOFLT = 0xe4960000; //KBI0、KBI1输入滤波
printf("\nin FEE mode now.\r\n");
UART_WaitTxComplete(TERM_PORT);
/* 时钟模式由FEE模式切换到FEI模式 */
sICSConfig.u32ClkFreq = 32;
ICS_SwitchMode(FEE,FEI, &sICSConfig);
OSC_Enable();
/* 禁用KBI中断输入引脚*/
for (i = 0; i < KBI_MAX_PINS_PER_PORT; i++)
{
sKBIConfig.sPin[i].bEn = 0;
}
sKBIConfig.sBits.bMode = 0; /*!< 选择 边沿检测 */
sKBIConfig.sPin[0].bEdge = KBI_FALLING_EDGE_LOW_LEVEL; /*!< 选择 下降沿或低电平检测 */
sKBIConfig.sBits.bIntEn = 1; //使能KBI中断
sKBIConfig.sPin[0].bEn = 1; //使能KBI中断输入引脚
KBI_Init(KBI0, &sKBIConfig); //初始化KBI0
KBI_Init(KBI1, &sKBIConfig); //初始化KBI1
KBI_SetCallback(KBI0, &KBI0_Task); //设置回调函数
KBI_SetCallback(KBI1, &KBI1_Task);
while(1)
{
u8Ch = UART_GetChar(TERM_PORT);
UART_PutChar(TERM_PORT, u8Ch);
}
}
/*****************************************************************************//*!
*
* [url=home.php?mod=space&uid=247401]@brief[/url] KBI0回调函数
*
* @param none.
*
* [url=home.php?mod=space&uid=266161]@return[/url] none
*
*****************************************************************************/
void KBI0_Task(void)
{
LED1_Toggle();
printf("KBI0 routinue.\r\n");
}
/*****************************************************************************//*!
*
* @brief KBI1回调函数.
*
* @param none.
*
* @return none.
*
*****************************************************************************/
void KBI1_Task(void)
{
LED2_Toggle();
printf("KBI1 routinue.\r\n");
}
/********************************************************************/
|