[demo程序] NV32F101 KBI中断实验程序示例

[复制链接]
 楼主| Bruing 发表于 2018-8-28 17:54 | 显示全部楼层 |阅读模式
  1. /**********************************************************************
  2. *
  3. * 实验名称:KBI键盘中断实验
  4. * 实验平台:NV32开发板
  5. * 板载芯片:NV32F101FL64E
  6. * 实验效果:初始化KBI模块,选择中断输入引脚,和检测模式,按下按键触发KBI
  7. *           中断切换LED状态
  8. *                                         
  9. ************************************************************************/

  10. #include "common.h"
  11. #include "ics.h"
  12. #include "rtc.h"
  13. #include "uart.h"
  14. #include "kbi.h"
  15. #include "sysinit.h"

  16. int main (void);
  17. void KBI0_Task(void);
  18. void KBI1_Task(void);

  19. /********************************************************************/
  20. int main (void)
  21. {
  22.     uint8_t         u8Ch,i;
  23.           ICS_ConfigType  sICSConfig;
  24.     KBI_ConfigType  sKBIConfig;
  25.   
  26.     /*系统初始化*/
  27.           sysinit();
  28.           printf("\nRunning the KBI_demo project.\r\n");
  29.     LED1_Init();
  30.     LED2_Init();

  31.           PORT->IOFLT = 0xe4960000; //KBI0、KBI1输入滤波
  32.        
  33.           printf("\nin FEE mode now.\r\n");
  34.     UART_WaitTxComplete(TERM_PORT);   
  35.    
  36.     /* 时钟模式由FEE模式切换到FEI模式 */
  37.     sICSConfig.u32ClkFreq = 32;
  38.     ICS_SwitchMode(FEE,FEI, &sICSConfig);


  39.     OSC_Enable();
  40.    
  41.      /* 禁用KBI中断输入引脚*/
  42.    for (i = 0; i < KBI_MAX_PINS_PER_PORT; i++)
  43.    {
  44.      sKBIConfig.sPin[i].bEn         = 0;
  45.    }
  46.    
  47.     sKBIConfig.sBits.bMode   = 0;   /*!< 选择  边沿检测  */   
  48.     sKBIConfig.sPin[0].bEdge = KBI_FALLING_EDGE_LOW_LEVEL; /*!< 选择 下降沿或低电平检测 */
  49.     sKBIConfig.sBits.bIntEn  = 1; //使能KBI中断
  50.     sKBIConfig.sPin[0].bEn   = 1; //使能KBI中断输入引脚
  51.    
  52.     KBI_Init(KBI0, &sKBIConfig); //初始化KBI0
  53.     KBI_Init(KBI1, &sKBIConfig); //初始化KBI1
  54.     KBI_SetCallback(KBI0, &KBI0_Task); //设置回调函数
  55.     KBI_SetCallback(KBI1, &KBI1_Task);
  56.    
  57.    
  58.         while(1)
  59.         {     
  60.         u8Ch = UART_GetChar(TERM_PORT);
  61.         UART_PutChar(TERM_PORT, u8Ch);
  62.         }

  63. }

  64. /*****************************************************************************//*!
  65. *
  66. * [url=home.php?mod=space&uid=247401]@brief[/url] KBI0回调函数
  67. *        
  68. * @param  none.
  69. *
  70. * [url=home.php?mod=space&uid=266161]@return[/url] none
  71. *
  72. *****************************************************************************/

  73. void KBI0_Task(void)
  74. {
  75.     LED1_Toggle();
  76.    
  77.     printf("KBI0 routinue.\r\n");
  78. }

  79. /*****************************************************************************//*!
  80. *
  81. * @brief KBI1回调函数.
  82. *        
  83. * @param  none.
  84. *
  85. * @return none.
  86. *
  87. *****************************************************************************/

  88. void KBI1_Task(void)
  89. {
  90.     LED2_Toggle();
  91.    
  92.     printf("KBI1 routinue.\r\n");
  93. }
  94. /********************************************************************/


您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

308

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

71

主题

308

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部