打印
[demo程序]

NV32F101 KBI中断实验程序示例

[复制链接]
1205|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Bruing|  楼主 | 2018-8-28 17:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**********************************************************************
*
* 实验名称: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");
}
/********************************************************************/


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

308

帖子

1

粉丝