⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 max7349.c

📁 MAX7349控制程序
💻 C
字号:
#include "..\..\includes.h"

#if CFG_I2C_MAX7349_EN > 0

//------------------------------------------------------------
// MAX7349初始化函数,主要是根据用户配置的值进行初始化
//------------------------------------------------------------
extern void MAX7349_Init(void)
{
      INT8U reg_value;

      // 写去抖寄存器,注意:将去抖寄存器的高3位设置为0,全部禁用GPO端口
      reg_value = 0x1F&MAX7349_KEY_DEBOUNCE_TIME;
      I2C_WriteMultiBytes( I2C_MAX7349_KEYSCAN_CONTROLLER, MAX7349_DEBOUNCE_REG, &reg_value, 1 );

      // 写中断寄存器,设置键盘扫描频率
      reg_value = MAX7349_KEY_SCAN_FREQ;
      I2C_WriteMultiBytes( I2C_MAX7349_KEYSCAN_CONTROLLER, MAX7349_INTERRUPT_REG, &reg_value, 1 );

      // 写自动重复寄存器,设置自动重复延迟和自动重复频率
      reg_value = 0x80 | (MAX7349_KEY_AUTOREPEAT_RATE<<4) | MAX7349_KEY_AUTOREPEAT_DELAY;
      I2C_WriteMultiBytes( I2C_MAX7349_KEYSCAN_CONTROLLER, MAX7349_AUTOREPEAT_REG, &reg_value, 1 );
}



//------------------------------------------------------------
// MAX7349键盘扫描,该函数应该由外中断程序触发调用
// 
// 如果有键按下,函数返回TRUE,用参数key返回按键的扫描码
// 如果没有键按下,函数返回FALSE,参数key的值无定义
//------------------------------------------------------------
extern INT8U MAX7349_KeyScan( INT8U *key )
{
      INT8U reg_value;
      
      // 读取中断寄存器
      I2C_ReadMultiBytes( I2C_MAX7349_KEYSCAN_CONTROLLER, MAX7349_INTERRUPT_REG, &reg_value, 1 );
      
      // 判断是否是按键事件触发的中断
      if( (reg_value&0xA0) == 0xA0 )
      {
            // 读取按键FIFO寄存器
            I2C_ReadMultiBytes( I2C_MAX7349_KEYSCAN_CONTROLLER, MAX7349_KEYS_FIFO_REG, &reg_value, 1 );   
            
            *key = reg_value;
            
            return 1;
      }
      
      return 0;
}


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -