mirror of
https://github.com/Fishwaldo/bl_mcu_sdk.git
synced 2025-07-07 13:28:48 +00:00
[fix][keyscan] fix keyscan default clk setting and array index warning
This commit is contained in:
parent
ca5416824b
commit
411776be3f
7 changed files with 24 additions and 8 deletions
|
@ -73,7 +73,7 @@
|
||||||
#define BSP_CAM_CLOCK_DIV 3
|
#define BSP_CAM_CLOCK_DIV 3
|
||||||
#endif
|
#endif
|
||||||
#if defined(BSP_USING_QDEC) || defined(BSP_USING_KEYSCAN)
|
#if defined(BSP_USING_QDEC) || defined(BSP_USING_KEYSCAN)
|
||||||
#define BSP_QDEC_KEYSCAN_CLOCK_SOURCE ROOT_CLOCK_SOURCE_XCLK
|
#define BSP_QDEC_KEYSCAN_CLOCK_SOURCE ROOT_CLOCK_SOURCE_32K_CLK
|
||||||
#define BSP_QDEC_KEYSCAN_CLOCK_DIV 0
|
#define BSP_QDEC_KEYSCAN_CLOCK_DIV 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
#define BSP_CAM_CLOCK_DIV 3
|
#define BSP_CAM_CLOCK_DIV 3
|
||||||
#endif
|
#endif
|
||||||
#if defined(BSP_USING_QDEC) || defined(BSP_USING_KEYSCAN)
|
#if defined(BSP_USING_QDEC) || defined(BSP_USING_KEYSCAN)
|
||||||
#define BSP_QDEC_KEYSCAN_CLOCK_SOURCE ROOT_CLOCK_SOURCE_XCLK
|
#define BSP_QDEC_KEYSCAN_CLOCK_SOURCE ROOT_CLOCK_SOURCE_32K_CLK
|
||||||
#define BSP_QDEC_KEYSCAN_CLOCK_DIV 0
|
#define BSP_QDEC_KEYSCAN_CLOCK_DIV 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -24,14 +24,16 @@
|
||||||
#include "kys_reg.h"
|
#include "kys_reg.h"
|
||||||
#include "bl702_glb.h"
|
#include "bl702_glb.h"
|
||||||
|
|
||||||
|
#ifdef BSP_USING_KEYSCAN
|
||||||
|
static void KeyScan_IRQ(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
static keyscan_device_t keyscan_device[KEYSCAN_MAX_INDEX] = {
|
static keyscan_device_t keyscan_device[KEYSCAN_MAX_INDEX] = {
|
||||||
#ifdef BSP_USING_KEYSCAN
|
#ifdef BSP_USING_KEYSCAN
|
||||||
KEYSCAN_CONFIG
|
KEYSCAN_CONFIG
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static void KeyScan_IRQ(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
*
|
*
|
||||||
|
@ -79,7 +81,9 @@ int keyscan_control(struct device *dev, int cmd, void *args)
|
||||||
{
|
{
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case DEVICE_CTRL_SET_INT /* constant-expression */:
|
case DEVICE_CTRL_SET_INT /* constant-expression */:
|
||||||
|
#ifdef BSP_USING_KEYSCAN
|
||||||
Interrupt_Handler_Register(KYS_IRQn, KeyScan_IRQ);
|
Interrupt_Handler_Register(KYS_IRQn, KeyScan_IRQ);
|
||||||
|
#endif
|
||||||
BL_WR_REG(KYS_BASE, KYS_KS_INT_EN, 1);
|
BL_WR_REG(KYS_BASE, KYS_KS_INT_EN, 1);
|
||||||
NVIC_EnableIRQ(KYS_IRQn);
|
NVIC_EnableIRQ(KYS_IRQn);
|
||||||
break;
|
break;
|
||||||
|
@ -144,11 +148,13 @@ int keyscan_register(enum keyscan_index_type index, const char *name)
|
||||||
return device_register(dev, name, 0);
|
return device_register(dev, name, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(BSP_USING_KEYSCAN)
|
||||||
static void KeyScan_IRQ(void)
|
static void KeyScan_IRQ(void)
|
||||||
{
|
{
|
||||||
if (keyscan_device[0].parent.callback) {
|
if (keyscan_device[KEYSCAN_INDEX].parent.callback) {
|
||||||
keyscan_device[0].parent.callback(&keyscan_device[0].parent, (void *)(BL_RD_REG(KYS_BASE, KYS_KEYCODE_VALUE)), 0, KEYSCAN_EVENT_TRIG);
|
keyscan_device[KEYSCAN_INDEX].parent.callback(&keyscan_device[KEYSCAN_INDEX].parent, (void *)(BL_RD_REG(KYS_BASE, KYS_KEYCODE_VALUE)), 0, KEYSCAN_EVENT_TRIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
BL_WR_REG(KYS_BASE, KYS_KEYCODE_CLR, 0xf);
|
BL_WR_REG(KYS_BASE, KYS_KEYCODE_CLR, 0xf);
|
||||||
}
|
}
|
||||||
|
#endif
|
|
@ -42,7 +42,7 @@ int main(void)
|
||||||
if (keyscan) {
|
if (keyscan) {
|
||||||
KEYSCAN_DEV(keyscan)->col_num = COL_NUM_4;
|
KEYSCAN_DEV(keyscan)->col_num = COL_NUM_4;
|
||||||
KEYSCAN_DEV(keyscan)->row_num = ROW_NUM_4;
|
KEYSCAN_DEV(keyscan)->row_num = ROW_NUM_4;
|
||||||
device_open(keyscan, 0); //current scan latency is 32M/1/8 = 4Khz
|
device_open(keyscan, 0); //current scan latency is 32K/1/8 = 4Khz
|
||||||
device_set_callback(keyscan, keyscan_irq_callback);
|
device_set_callback(keyscan, keyscan_irq_callback);
|
||||||
device_control(keyscan, DEVICE_CTRL_SET_INT, NULL);
|
device_control(keyscan, DEVICE_CTRL_SET_INT, NULL);
|
||||||
device_control(keyscan, DEVICE_CTRL_RESUME, NULL);
|
device_control(keyscan, DEVICE_CTRL_RESUME, NULL);
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
**board/bl706_iot/clock_config.h** 中,
|
||||||
|
|
||||||
|
**BSP_QDEC_KEYSCAN_CLOCK_SOURCE** 设置成 **ROOT_CLOCK_SOURCE_32K_CLK**
|
||||||
|
**BSP_QDEC_KEYSCAN_CLOCK_DIV** 设置成 **0**
|
||||||
|
|
||||||
**board/bl706_iot/pinmux_config.h** 中, 以下宏设置成 **GPIO_FUN_KEY_SCAN_ROW**
|
**board/bl706_iot/pinmux_config.h** 中, 以下宏设置成 **GPIO_FUN_KEY_SCAN_ROW**
|
||||||
|
|
||||||
- **CONFIG_GPIO16_FUNC**
|
- **CONFIG_GPIO16_FUNC**
|
||||||
|
|
|
@ -33,7 +33,7 @@ int main(void)
|
||||||
if (keyscan) {
|
if (keyscan) {
|
||||||
KEYSCAN_DEV(keyscan)->col_num = COL_NUM_4;
|
KEYSCAN_DEV(keyscan)->col_num = COL_NUM_4;
|
||||||
KEYSCAN_DEV(keyscan)->row_num = ROW_NUM_4;
|
KEYSCAN_DEV(keyscan)->row_num = ROW_NUM_4;
|
||||||
device_open(keyscan, 0); //current scan latency is 32M/1/8 = 4Khz
|
device_open(keyscan, 0); //current scan latency is 32K/1/8 = 4Khz
|
||||||
device_control(keyscan, DEVICE_CTRL_RESUME, NULL);
|
device_control(keyscan, DEVICE_CTRL_RESUME, NULL);
|
||||||
MSG("keyscan found\n");
|
MSG("keyscan found\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
**board/bl706_iot/clock_config.h** 中,
|
||||||
|
|
||||||
|
**BSP_QDEC_KEYSCAN_CLOCK_SOURCE** 设置成 **ROOT_CLOCK_SOURCE_32K_CLK**
|
||||||
|
**BSP_QDEC_KEYSCAN_CLOCK_DIV** 设置成 **0**
|
||||||
|
|
||||||
**board/bl706_iot/pinmux_config.h** 中, 以下宏设置成 **GPIO_FUN_KEY_SCAN_ROW**
|
**board/bl706_iot/pinmux_config.h** 中, 以下宏设置成 **GPIO_FUN_KEY_SCAN_ROW**
|
||||||
|
|
||||||
- **CONFIG_GPIO16_FUNC**
|
- **CONFIG_GPIO16_FUNC**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue