📄 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, ®_value, 1 );
// 写中断寄存器,设置键盘扫描频率
reg_value = MAX7349_KEY_SCAN_FREQ;
I2C_WriteMultiBytes( I2C_MAX7349_KEYSCAN_CONTROLLER, MAX7349_INTERRUPT_REG, ®_value, 1 );
// 写自动重复寄存器,设置自动重复延迟和自动重复频率
reg_value = 0x80 | (MAX7349_KEY_AUTOREPEAT_RATE<<4) | MAX7349_KEY_AUTOREPEAT_DELAY;
I2C_WriteMultiBytes( I2C_MAX7349_KEYSCAN_CONTROLLER, MAX7349_AUTOREPEAT_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, ®_value, 1 );
// 判断是否是按键事件触发的中断
if( (reg_value&0xA0) == 0xA0 )
{
// 读取按键FIFO寄存器
I2C_ReadMultiBytes( I2C_MAX7349_KEYSCAN_CONTROLLER, MAX7349_KEYS_FIFO_REG, ®_value, 1 );
*key = reg_value;
return 1;
}
return 0;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -