Compare commits
3 Commits
3fa235d3c2
...
fe0348bd89
| Author | SHA1 | Date | |
|---|---|---|---|
| fe0348bd89 | |||
| 482767064e | |||
| 8cb1ca7701 |
@ -28,7 +28,7 @@ extern "C" {
|
|||||||
#include "gpio.h"
|
#include "gpio.h"
|
||||||
|
|
||||||
static uint8_t LL_led = 0;
|
static uint8_t LL_led = 0;
|
||||||
#define LLSYNC_SWITCH_PIN IO_PORTA_01
|
#define LLSYNC_SWITCH_PIN IO_PORTA_00
|
||||||
static int ble_property_power_switch_set(const char *data, uint16_t len)
|
static int ble_property_power_switch_set(const char *data, uint16_t len)
|
||||||
{
|
{
|
||||||
printf("ble_property_power_switch_set led to %d\n", data[0]);
|
printf("ble_property_power_switch_set led to %d\n", data[0]);
|
||||||
|
|||||||
@ -496,7 +496,7 @@ const struct soft_iic_config soft_iic_cfg[] = {
|
|||||||
.scl = TCFG_SW_I2C0_CLK_PORT, //IIC CLK脚
|
.scl = TCFG_SW_I2C0_CLK_PORT, //IIC CLK脚
|
||||||
.sda = TCFG_SW_I2C0_DAT_PORT, //IIC DAT脚
|
.sda = TCFG_SW_I2C0_DAT_PORT, //IIC DAT脚
|
||||||
.delay = TCFG_SW_I2C0_DELAY_CNT, //软件IIC延时参数,影响通讯时钟频率
|
.delay = TCFG_SW_I2C0_DELAY_CNT, //软件IIC延时参数,影响通讯时钟频率
|
||||||
.io_pu = 1, //是否打开上拉电阻,如果外部电路没有焊接上拉电阻需要置1
|
.io_pu = 0, //是否打开上拉电阻,如果外部电路没有焊接上拉电阻需要置1
|
||||||
},
|
},
|
||||||
#if 0
|
#if 0
|
||||||
//iic1 data
|
//iic1 data
|
||||||
|
|||||||
@ -34,7 +34,7 @@
|
|||||||
/*软件IIC设置*/ //xtell
|
/*软件IIC设置*/ //xtell
|
||||||
#define TCFG_SW_I2C0_CLK_PORT IO_PORTA_05//IO_PORTB_04 //软件IIC CLK脚选择 XTELL
|
#define TCFG_SW_I2C0_CLK_PORT IO_PORTA_05//IO_PORTB_04 //软件IIC CLK脚选择 XTELL
|
||||||
#define TCFG_SW_I2C0_DAT_PORT IO_PORTA_06//IO_PORTB_05 //软件IIC DAT脚选择
|
#define TCFG_SW_I2C0_DAT_PORT IO_PORTA_06//IO_PORTB_05 //软件IIC DAT脚选择
|
||||||
#define TCFG_SW_I2C0_DELAY_CNT 10 //IIC延时参数,影响通讯时钟频率
|
#define TCFG_SW_I2C0_DELAY_CNT 0 //IIC延时参数,影响通讯时钟频率
|
||||||
|
|
||||||
/*硬件IIC端口选择 -- 具体看手册,这里写的不准 -- lmx
|
/*硬件IIC端口选择 -- 具体看手册,这里写的不准 -- lmx
|
||||||
SCL SDA
|
SCL SDA
|
||||||
|
|||||||
@ -94,6 +94,7 @@
|
|||||||
#define REG_VERSION 0x7F
|
#define REG_VERSION 0x7F
|
||||||
|
|
||||||
#define CMD_MASK 0x1F
|
#define CMD_MASK 0x1F
|
||||||
|
// #define CMD_MASK 0x0F
|
||||||
|
|
||||||
#define CMD_IDLE 0x00
|
#define CMD_IDLE 0x00
|
||||||
#define CMD_LPCD 0x01
|
#define CMD_LPCD 0x01
|
||||||
|
|||||||
@ -21,7 +21,7 @@ struct CPU_CARD_STR CPU_CARD;
|
|||||||
static unsigned char FM176XX_TPDU(transmission_struct *tpdu);
|
static unsigned char FM176XX_TPDU(transmission_struct *tpdu);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief CPU卡事件处理函数(示例)。
|
* @brief CPU卡事件处理函数。
|
||||||
* @details
|
* @details
|
||||||
* 1. 发送RATS (Request for Answer to Select) 命令以激活卡片并获取ATS (Answer to Select)。
|
* 1. 发送RATS (Request for Answer to Select) 命令以激活卡片并获取ATS (Answer to Select)。
|
||||||
* 2. 解析ATS,获取卡片能力信息(如FSC, FWI等)。
|
* 2. 解析ATS,获取卡片能力信息(如FSC, FWI等)。
|
||||||
|
|||||||
@ -67,9 +67,9 @@ void Mifare_Clear_Crypto(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Mifare卡事件处理函数(示例)。
|
* @brief Mifare卡事件处理函数。
|
||||||
* @details
|
* @details
|
||||||
* 这是一个示例函数,演示了对Mifare Classic卡进行读写操作的完整流程:
|
* Mifare Classic卡进行读写操作的完整流程:
|
||||||
* 1. 清除加密状态。
|
* 1. 清除加密状态。
|
||||||
* 2. 对指定的扇区(例如扇区1)使用密钥A进行认证。
|
* 2. 对指定的扇区(例如扇区1)使用密钥A进行认证。
|
||||||
* 3. 如果认证成功,则遍历该扇区的数据块(块0到块2)。
|
* 3. 如果认证成功,则遍历该扇区的数据块(块0到块2)。
|
||||||
|
|||||||
@ -19,9 +19,9 @@
|
|||||||
unsigned char PAGE_DATA[16];
|
unsigned char PAGE_DATA[16];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief NTAG卡事件处理函数(示例)。
|
* @brief NTAG卡事件处理函数。
|
||||||
* @details
|
* @details
|
||||||
* 这是一个示例函数,演示了对NTAG系列卡片进行读写操作的流程:
|
* 对NTAG系列卡片进行读写操作的流程:
|
||||||
* 1. 准备要写入的数据(4字节)。
|
* 1. 准备要写入的数据(4字节)。
|
||||||
* 2. 调用 `Write_Page()` 函数将数据写入第8页。
|
* 2. 调用 `Write_Page()` 函数将数据写入第8页。
|
||||||
* 3. 调用 `Read_Page()` 函数从第8页读回数据并打印,以进行验证。
|
* 3. 调用 `Read_Page()` 函数从第8页读回数据并打印,以进行验证。
|
||||||
|
|||||||
@ -230,6 +230,7 @@ unsigned char ReaderV_Initial(void)
|
|||||||
{
|
{
|
||||||
LoadProtocol(RX_TYPEV_26, RX_TYPEV_26);
|
LoadProtocol(RX_TYPEV_26, RX_TYPEV_26);
|
||||||
ModifyReg(REG_RXANA, MASK_RCV_GAIN | MASK_RCV_HPCF, FUN_DISABLE);
|
ModifyReg(REG_RXANA, MASK_RCV_GAIN | MASK_RCV_HPCF, FUN_DISABLE);
|
||||||
|
// ModifyReg(REG_RXANA,BIT3|BIT2|BIT1|BIT0, FUN_DISABLE);
|
||||||
ModifyReg(REG_RXANA, (HPCF_V << 3) | GAIN_V, FUN_ENABLE);
|
ModifyReg(REG_RXANA, (HPCF_V << 3) | GAIN_V, FUN_ENABLE);
|
||||||
SetParity(FUN_DISABLE);
|
SetParity(FUN_DISABLE);
|
||||||
SetReg(REG_TXAMP, AMPLITUDE_V);
|
SetReg(REG_TXAMP, AMPLITUDE_V);
|
||||||
@ -590,7 +591,7 @@ unsigned char ReaderB_Get_SN(struct picc_b_struct *picc_b)
|
|||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
extern void debug_command(u8 index);
|
||||||
/**
|
/**
|
||||||
* @brief 向Type V (ISO15693) 卡片发送Inventory命令。
|
* @brief 向Type V (ISO15693) 卡片发送Inventory命令。
|
||||||
* @param picc_v [out] 指向存储卡片信息的结构体。
|
* @param picc_v [out] 指向存储卡片信息的结构体。
|
||||||
@ -599,8 +600,14 @@ unsigned char ReaderB_Get_SN(struct picc_b_struct *picc_b)
|
|||||||
unsigned char ReaderV_Inventory(struct picc_v_struct *picc_v)
|
unsigned char ReaderV_Inventory(struct picc_v_struct *picc_v)
|
||||||
{
|
{
|
||||||
unsigned char reg_data, i, result; // 新增 result 变量
|
unsigned char reg_data, i, result; // 新增 result 变量
|
||||||
SetCommand(CMD_IDLE);
|
unsigned char command = 0;
|
||||||
|
|
||||||
|
// debug_command(0);
|
||||||
|
|
||||||
|
SetCommand(CMD_IDLE);
|
||||||
|
//对于command,可以在发送第二条指令之前读取一次command寄存器判断是否回到idle再发送第二条,这里直接采用长延迟
|
||||||
|
rfid_delay_ms(100);
|
||||||
|
// debug_command(1);
|
||||||
|
|
||||||
SetReg(REG_TXDATANUM, 0x08);
|
SetReg(REG_TXDATANUM, 0x08);
|
||||||
ModifyReg(REG_FIFOCONTROL, BIT_FIFOFLUSH, FUN_ENABLE);
|
ModifyReg(REG_FIFOCONTROL, BIT_FIFOFLUSH, FUN_ENABLE);
|
||||||
@ -612,7 +619,8 @@ unsigned char ReaderV_Inventory(struct picc_v_struct *picc_v)
|
|||||||
ModifyReg(REG_RXCRCCON, BIT_CRCEN, FUN_ENABLE);
|
ModifyReg(REG_RXCRCCON, BIT_CRCEN, FUN_ENABLE);
|
||||||
|
|
||||||
SetCommand(CMD_TRANSCEIVE);
|
SetCommand(CMD_TRANSCEIVE);
|
||||||
rfid_delay_ms(50);
|
// debug_command(2);
|
||||||
|
rfid_delay_ms(100);
|
||||||
|
|
||||||
GetReg(REG_ERROR, ®_data);
|
GetReg(REG_ERROR, ®_data);
|
||||||
if ((reg_data & 0x0F) != 0){
|
if ((reg_data & 0x0F) != 0){
|
||||||
@ -622,6 +630,7 @@ unsigned char ReaderV_Inventory(struct picc_v_struct *picc_v)
|
|||||||
|
|
||||||
GetReg(REG_FIFOLENGTH, ®_data);
|
GetReg(REG_FIFOLENGTH, ®_data);
|
||||||
if (reg_data != 10){
|
if (reg_data != 10){
|
||||||
|
// debug_command(3);
|
||||||
xlog("FIFO Length is %d, expected 10.\n", reg_data);
|
xlog("FIFO Length is %d, expected 10.\n", reg_data);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,8 +82,9 @@ void TYPE_A_EVENT(char* uid)
|
|||||||
}
|
}
|
||||||
xlog("-> SAK = %02X\r\n", PICC_A.SAK[0]);
|
xlog("-> SAK = %02X\r\n", PICC_A.SAK[0]);
|
||||||
|
|
||||||
// 根据SAK值判断卡片类型
|
// 根据SAK值判断卡片类型,并进行写入要存储的数据,目前客户使用的是mifare的卡
|
||||||
if (PICC_A.SAK[0] == 0x08)
|
#if 0
|
||||||
|
if (PICC_A.SAK[0] == 0x08) //
|
||||||
{
|
{
|
||||||
xlog("************* Mifare CARD ************* \r\n");
|
xlog("************* Mifare CARD ************* \r\n");
|
||||||
result = MIFARE_CARD_EVENT();
|
result = MIFARE_CARD_EVENT();
|
||||||
@ -98,6 +99,7 @@ void TYPE_A_EVENT(char* uid)
|
|||||||
xlog("************* NTAG CARD ************* \r\n");
|
xlog("************* NTAG CARD ************* \r\n");
|
||||||
result = NTAG_EVENT();
|
result = NTAG_EVENT();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
SetCW(FUN_DISABLE); // 关闭RF场
|
SetCW(FUN_DISABLE); // 关闭RF场
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,6 +52,12 @@ unsigned char FM176XX_HardInit(void){
|
|||||||
#else
|
#else
|
||||||
int ret = soft_iic_init(0);
|
int ret = soft_iic_init(0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//PowerDown脚,初始化要确保其是置为0
|
||||||
|
gpio_set_direction(IO_PORTC_04, 0);
|
||||||
|
gpio_write(IO_PORTC_04, 1);
|
||||||
|
mdelay(5);
|
||||||
|
gpio_write(IO_PORTC_04, 0);
|
||||||
xlog("init iic result:%d\n", ret); //返回0成功
|
xlog("init iic result:%d\n", ret); //返回0成功
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,18 +73,18 @@ unsigned char GetReg(unsigned char address, unsigned char *reg_data){
|
|||||||
soft_iic_start(0);
|
soft_iic_start(0);
|
||||||
if (0 == soft_iic_tx_byte(0, FM176_WRITE_ADDR)) {
|
if (0 == soft_iic_tx_byte(0, FM176_WRITE_ADDR)) {
|
||||||
soft_iic_stop(0);
|
soft_iic_stop(0);
|
||||||
xlog("GetReg: 【write】 addr write error\n");
|
xlog("GetReg: 【write】 addr write error:%x\n", FM176_WRITE_ADDR);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
if (0 == soft_iic_tx_byte(0, address)) {
|
if (0 == soft_iic_tx_byte(0, address)) {
|
||||||
soft_iic_stop(0);
|
soft_iic_stop(0);
|
||||||
xlog("GetReg: 【reg】 addr write error\n");
|
xlog("GetReg: 【reg】 addr write error: %x\n", address);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
soft_iic_start(0);
|
soft_iic_start(0);
|
||||||
if (0 == soft_iic_tx_byte(0, FM176_READ_ADDR)) {
|
if (0 == soft_iic_tx_byte(0, FM176_READ_ADDR)) {
|
||||||
soft_iic_stop(0);
|
soft_iic_stop(0);
|
||||||
xlog("GetReg: 【read】 addr read error\n");
|
xlog("GetReg: 【read】 addr read error: %x\n", FM176_READ_ADDR);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
*reg_data = soft_iic_rx_byte(0, 0);
|
*reg_data = soft_iic_rx_byte(0, 0);
|
||||||
@ -99,12 +105,12 @@ unsigned char SetReg(unsigned char address, unsigned char reg_data){
|
|||||||
soft_iic_start(0);
|
soft_iic_start(0);
|
||||||
if (0 == soft_iic_tx_byte(0, FM176_WRITE_ADDR)) {
|
if (0 == soft_iic_tx_byte(0, FM176_WRITE_ADDR)) {
|
||||||
soft_iic_stop(0);
|
soft_iic_stop(0);
|
||||||
xlog("SetReg: 【write】 addr write error\n");
|
xlog("SetReg: 【write】 addr write error: %x \n", FM176_WRITE_ADDR);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
if (0 == soft_iic_tx_byte(0, address)) {
|
if (0 == soft_iic_tx_byte(0, address)) {
|
||||||
soft_iic_stop(0);
|
soft_iic_stop(0);
|
||||||
xlog("SetReg: 【reg】 addr write error\n");
|
xlog("SetReg: 【reg】 addr write error: %x\n", address);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
if (0 == soft_iic_tx_byte(0, reg_data)) {
|
if (0 == soft_iic_tx_byte(0, reg_data)) {
|
||||||
@ -124,6 +130,13 @@ unsigned char SetReg(unsigned char address, unsigned char reg_data){
|
|||||||
*/
|
*/
|
||||||
unsigned char FM176XX_SoftReset(void){
|
unsigned char FM176XX_SoftReset(void){
|
||||||
return SetReg(REG_COMMAND, 0x1F);
|
return SetReg(REG_COMMAND, 0x1F);
|
||||||
|
|
||||||
|
//
|
||||||
|
// gpio_set_direction(IO_PORTC_04, 0);
|
||||||
|
// gpio_write(IO_PORTC_04, 1);
|
||||||
|
// mdelay(5);
|
||||||
|
// gpio_write(IO_PORTC_04, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif INTERFACE_TYPE == 1 //spi
|
#elif INTERFACE_TYPE == 1 //spi
|
||||||
@ -224,3 +237,12 @@ void rfid_delay_ms(unsigned int ms){
|
|||||||
// delay(ms);
|
// delay(ms);
|
||||||
mdelay(ms);
|
mdelay(ms);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void debug_command(u8 index){
|
||||||
|
unsigned char reg_data;
|
||||||
|
unsigned char command = 0;
|
||||||
|
GetReg(REG_ERROR, ®_data);
|
||||||
|
GetReg(REG_COMMAND, &command);
|
||||||
|
xlog("debug %d -- REG_ERROR = 0x%02X. command = 0x%02X\n",index, reg_data, command);
|
||||||
|
}
|
||||||
@ -41,14 +41,14 @@
|
|||||||
// 是否显示 RX (接收) 数据速率
|
// 是否显示 RX (接收) 数据速率
|
||||||
#define SHOW_RX_DATA_RATE 0
|
#define SHOW_RX_DATA_RATE 0
|
||||||
// 是否显示 TX (发送) 数据速率
|
// 是否显示 TX (发送) 数据速率
|
||||||
#define SHOW_TX_DATA_RATE 0
|
#define SHOW_TX_DATA_RATE 1
|
||||||
|
|
||||||
//log显示
|
//log显示
|
||||||
#define client_log 0
|
#define client_log 0
|
||||||
#if client_log == 1
|
#if client_log == 1
|
||||||
/* #define log_info printf */
|
/* #define log_info printf */
|
||||||
#define log_info(x, ...) printf("[LE_CLIENT]" x "\n", ## __VA_ARGS__) // 格式化打印日志信息,添加前缀 "[LE_CLIENT]"
|
#define log_info(x, ...) printf("[LE_CLIENT]" x "\n", ## __VA_ARGS__) // 格式化打印日志信息,添加前缀 "[LE_CLIENT]"
|
||||||
#define log_info_hexdump put_buf // 打印十六进制数据 (假设 put_buf 是一个 hex dump 函数)
|
#define log_info_hexdump put_buf // 打印十六进制数据
|
||||||
#else
|
#else
|
||||||
#define log_info(...) // 如果 LE_DEBUG_PRINT_EN 未定义,则 log_info 无效
|
#define log_info(...) // 如果 LE_DEBUG_PRINT_EN 未定义,则 log_info 无效
|
||||||
#define log_info_hexdump(...) // 如果 LE_DEBUG_PRINT_EN 未定义,则 log_info_hexdump 无效
|
#define log_info_hexdump(...) // 如果 LE_DEBUG_PRINT_EN 未定义,则 log_info_hexdump 无效
|
||||||
@ -60,10 +60,9 @@
|
|||||||
|
|
||||||
// ATT (Attribute Protocol) 协议的本地 MTU (Maximum Transmission Unit) 大小
|
// ATT (Attribute Protocol) 协议的本地 MTU (Maximum Transmission Unit) 大小
|
||||||
// 必须 >= 20
|
// 必须 >= 20
|
||||||
#define ATT_LOCAL_MTU_SIZE (517)
|
#define ATT_LOCAL_MTU_SIZE (21)//(21)//(517)
|
||||||
// ATT 协议发送缓冲区大小
|
// ATT 协议发送缓冲区大小
|
||||||
// (256), (512*10) 都是注释掉的备选值,当前使用 200
|
#define ATT_SEND_CBUF_SIZE (21)//(512 * 100)
|
||||||
#define ATT_SEND_CBUF_SIZE (200)
|
|
||||||
// ATT 协议使用的总 RAM 缓冲区大小,包括控制块、MTU 和发送缓冲区
|
// ATT 协议使用的总 RAM 缓冲区大小,包括控制块、MTU 和发送缓冲区
|
||||||
#define ATT_RAM_BUFSIZE (ATT_CTRL_BLOCK_SIZE + ATT_LOCAL_MTU_SIZE + ATT_SEND_CBUF_SIZE)
|
#define ATT_RAM_BUFSIZE (ATT_CTRL_BLOCK_SIZE + ATT_LOCAL_MTU_SIZE + ATT_SEND_CBUF_SIZE)
|
||||||
// 分配 ATT 协议使用的 RAM 缓冲区,并进行 4 字节对齐
|
// 分配 ATT 协议使用的 RAM 缓冲区,并进行 4 字节对齐
|
||||||
@ -103,9 +102,7 @@ static u8 search_ram_buffer[SEARCH_PROFILE_BUFSIZE] __attribute__((aligned(4)));
|
|||||||
|
|
||||||
// 连接周期 (Connection Interval)
|
// 连接周期 (Connection Interval)
|
||||||
// 单位: 1.25ms
|
// 单位: 1.25ms
|
||||||
// SET_CONN_INTERVAL: 3 (约 3.75ms)。
|
#define SET_CONN_INTERVAL 12 //3
|
||||||
// 16 (约 20ms) 是注释掉的备选值。
|
|
||||||
#define SET_CONN_INTERVAL 3
|
|
||||||
|
|
||||||
// 连接延迟 (Connection Latency)
|
// 连接延迟 (Connection Latency)
|
||||||
// 单位: 连接周期 (conn_interval) 的倍数
|
// 单位: 连接周期 (conn_interval) 的倍数
|
||||||
@ -116,7 +113,7 @@ static u8 search_ram_buffer[SEARCH_PROFILE_BUFSIZE] __attribute__((aligned(4)));
|
|||||||
// 单位: 10ms
|
// 单位: 10ms
|
||||||
// SET_CONN_TIMEOUT: 400 (约 4000ms,即 4 秒)。
|
// SET_CONN_TIMEOUT: 400 (约 4000ms,即 4 秒)。
|
||||||
// 用于检测连接是否断开。如果在此时间内双方没有通信,连接将被视为断开。
|
// 用于检测连接是否断开。如果在此时间内双方没有通信,连接将被视为断开。
|
||||||
#define SET_CONN_TIMEOUT 400
|
#define SET_CONN_TIMEOUT 600 //400
|
||||||
|
|
||||||
// WIRELESS_TOOL_BLE_NAME_EN: 是否使能通过特定蓝牙名称来匹配设备
|
// WIRELESS_TOOL_BLE_NAME_EN: 是否使能通过特定蓝牙名称来匹配设备
|
||||||
#if WIRELESS_TOOL_BLE_NAME_EN
|
#if WIRELESS_TOOL_BLE_NAME_EN
|
||||||
@ -255,6 +252,19 @@ static const target_uuid_t default_search_uuid_table[] = {
|
|||||||
.characteristic_uuid16 = 0xae02, // Characteristic UUID (16-bit)
|
.characteristic_uuid16 = 0xae02, // Characteristic UUID (16-bit)
|
||||||
.opt_type = ATT_PROPERTY_NOTIFY, // 操作类型: 通知
|
.opt_type = ATT_PROPERTY_NOTIFY, // 操作类型: 通知
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// {
|
||||||
|
// .services_uuid16 = 0xae00, // Service UUID (16-bit)
|
||||||
|
// .characteristic_uuid16 = 0xae01, // Characteristic UUID (16-bit)
|
||||||
|
// .opt_type = ATT_PROPERTY_WRITE_WITHOUT_RESPONSE, // 操作类型: 写无响应
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// .services_uuid16 = 0xae00, // Service UUID (16-bit)
|
||||||
|
// .characteristic_uuid16 = 0xae02, // Characteristic UUID (16-bit)
|
||||||
|
// .opt_type = ATT_PROPERTY_NOTIFY, // 操作类型: 通知
|
||||||
|
// },
|
||||||
|
|
||||||
// 示例 2: 查找 128 位的 Service UUID
|
// 示例 2: 查找 128 位的 Service UUID
|
||||||
// PRIMARY_SERVICE, 0000F530-1212-EFDE-1523-785FEABCD123
|
// PRIMARY_SERVICE, 0000F530-1212-EFDE-1523-785FEABCD123
|
||||||
// CHARACTERISTIC, 0000F531-1212-EFDE-1523-785FEABCD123, NOTIFY,
|
// CHARACTERISTIC, 0000F531-1212-EFDE-1523-785FEABCD123, NOTIFY,
|
||||||
@ -304,7 +314,7 @@ static void default_report_data_deal(att_data_report_t *report_data, target_uuid
|
|||||||
|
|
||||||
// 默认要匹配的远程设备名称 1
|
// 默认要匹配的远程设备名称 1
|
||||||
static const u8 test_remoter_name1[] = "X100ABCDE";
|
static const u8 test_remoter_name1[] = "X100ABCDE";
|
||||||
static const u8 test_remoter_name2[] = "X100_FENG";
|
static const u8 test_remoter_name2[] = "X100_FEN";
|
||||||
// static const u8 test_remoter_name2[] = "AC630N_HID567(BLE)"; //备选名称
|
// static const u8 test_remoter_name2[] = "AC630N_HID567(BLE)"; //备选名称
|
||||||
|
|
||||||
// 默认的 Client 写操作使用的 Characteristic Handle
|
// 默认的 Client 写操作使用的 Characteristic Handle
|
||||||
@ -412,13 +422,16 @@ static client_conn_cfg_t *client_config = (void *) &client_conn_config_default ;
|
|||||||
// 结构体: {interval_min, interval_max, latency, timeout}
|
// 结构体: {interval_min, interval_max, latency, timeout}
|
||||||
// 单位: interval: 1.25ms, latency: conn_interval倍数, timeout: 10ms
|
// 单位: interval: 1.25ms, latency: conn_interval倍数, timeout: 10ms
|
||||||
static const struct conn_update_param_t connection_param_table[] = {
|
static const struct conn_update_param_t connection_param_table[] = {
|
||||||
{16, 24, 0, 600}, //
|
// {16, 24, 0, 600}, //
|
||||||
{12, 28, 0, 600}, // (约 3.7ms)
|
// {12, 28, 0, 600}, // (约 3.7ms)
|
||||||
{8, 20, 0, 600}, //
|
// {8, 20, 0, 600}, //
|
||||||
{50, 60, 0, 600}, //
|
// {50, 60, 0, 600}, //
|
||||||
|
{6, 12, 0, 600}, //
|
||||||
|
{8, 16, 0, 600}, // (约 3.7ms)
|
||||||
|
{12,20, 0, 600}, //
|
||||||
};
|
};
|
||||||
// 当前使用的连接参数更新表的索引
|
// 当前使用的连接参数更新表的索引
|
||||||
static u8 send_param_index = 3; // 默认使用索引为 3 的参数
|
static u8 send_param_index = 2;
|
||||||
|
|
||||||
//======================================================================================
|
//======================================================================================
|
||||||
// BLE Client API 函数声明 (内部使用)
|
// BLE Client API 函数声明 (内部使用)
|
||||||
|
|||||||
89
apps/earphone/xtell_remote_control/pwm_test.c
Normal file
89
apps/earphone/xtell_remote_control/pwm_test.c
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
#include "asm/mcpwm.h"
|
||||||
|
#include "asm/gpio.h"
|
||||||
|
#include "task_func.h"
|
||||||
|
#include "./nvs/nvs.h"
|
||||||
|
#include "timer.h"
|
||||||
|
#include "system/includes.h"
|
||||||
|
#include "user_cfg.h"
|
||||||
|
#include "earphone.h" // 宏定义 EARPHONE_STATE_...
|
||||||
|
#include "ble_user.h"
|
||||||
|
#include "le_client_demo.h"
|
||||||
|
#include "le_common.h"
|
||||||
|
#include "./ble_handler/client_handler.h"
|
||||||
|
#include "./RFID/include/rfid_main.h"
|
||||||
|
#include "./RFID/include/READER_REG.h"
|
||||||
|
/*
|
||||||
|
* PWM配置参数:
|
||||||
|
* - 周期: 50ms (20Hz)
|
||||||
|
* - 最小脉宽: 500us (1%占空比)
|
||||||
|
* - 最大脉宽: 2.5ms (5%占空比)
|
||||||
|
* - PWM引脚: PA1 (IO_PORTA_01)
|
||||||
|
*/
|
||||||
|
|
||||||
|
void pwm_test_init(void)
|
||||||
|
{
|
||||||
|
struct pwm_platform_data pwm_data = {0};
|
||||||
|
|
||||||
|
// 配置PWM参数
|
||||||
|
pwm_data.pwm_aligned_mode = pwm_edge_aligned; // 边沿对齐模式
|
||||||
|
pwm_data.pwm_ch_num = pwm_ch0; // 使用PWM通道0
|
||||||
|
pwm_data.frequency = 50; // 20Hz (周期50ms)
|
||||||
|
pwm_data.duty = 100; // 初始占空比1% (500us/50ms = 1%)
|
||||||
|
pwm_data.h_pin = IO_PORTA_01; // PWM输出引脚PA1
|
||||||
|
pwm_data.l_pin = -1; // 不使用互补引脚
|
||||||
|
pwm_data.complementary_en = 0; // 非互补模式
|
||||||
|
|
||||||
|
// 初始化PWM
|
||||||
|
mcpwm_init(&pwm_data);
|
||||||
|
|
||||||
|
// 启用PWM通道
|
||||||
|
mcpwm_open(pwm_ch0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置PWM占空比 (脉宽范围: 500us-2.5ms)
|
||||||
|
void pwm_test_set_pulse_width_us(u32 pulse_width_us)
|
||||||
|
{
|
||||||
|
u16 duty;
|
||||||
|
|
||||||
|
// 限制脉宽范围: 500us - 2500us
|
||||||
|
if (pulse_width_us < 500) {
|
||||||
|
pulse_width_us = 500;
|
||||||
|
} else if (pulse_width_us > 2500) {
|
||||||
|
pulse_width_us = 2500;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算占空比: (脉宽/周期) * 10000
|
||||||
|
// 周期20ms = 20000us
|
||||||
|
duty = (pulse_width_us * 10000) / 20000;
|
||||||
|
|
||||||
|
// 设置占空比
|
||||||
|
mcpwm_set_duty(pwm_ch0, duty);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 测试函数: 从最小脉宽到最大脉宽循环变化
|
||||||
|
void pwm_test_sweep(void)
|
||||||
|
{
|
||||||
|
u32 pulse_width;
|
||||||
|
|
||||||
|
pwm_test_set_pulse_width_us(500);
|
||||||
|
mdelay(1000);
|
||||||
|
pwm_test_set_pulse_width_us(2500);
|
||||||
|
mdelay(50);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 主测试函数
|
||||||
|
void pwm_test_main(void)
|
||||||
|
{
|
||||||
|
// 初始化PWM
|
||||||
|
pwm_test_init();
|
||||||
|
|
||||||
|
// 设置最小脉宽500us
|
||||||
|
pwm_test_set_pulse_width_us(500);
|
||||||
|
|
||||||
|
// 运行脉宽扫描测试
|
||||||
|
while (1) {
|
||||||
|
pwm_test_sweep();
|
||||||
|
os_time_dly(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -298,13 +298,14 @@ void contol_key_task(void){
|
|||||||
ble_data_buff[11] += ble_data_buff[i];
|
ble_data_buff[11] += ble_data_buff[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// u8 test_buff[12] = {0xBE,0xBB,0x09,0x01,0x50,0x50,0x50,0x50,0x01,0x01,0x50,0x15};
|
||||||
g_send_data_to_ble_server(ble_data_buff, sizeof(ble_data_buff));
|
g_send_data_to_ble_server(ble_data_buff, sizeof(ble_data_buff));
|
||||||
/*
|
/*
|
||||||
1000
|
1000
|
||||||
700
|
700
|
||||||
500
|
500
|
||||||
*/
|
*/
|
||||||
os_time_dly(60); //10ms为单位
|
os_time_dly(10); //10ms为单位
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,17 +448,18 @@ void test_task(void){
|
|||||||
|
|
||||||
#if TEST_FUNCTION == 1
|
#if TEST_FUNCTION == 1
|
||||||
unsigned char reg_data = 0;
|
unsigned char reg_data = 0;
|
||||||
|
unsigned char command = 0;
|
||||||
FM176XX_HardInit();
|
FM176XX_HardInit();
|
||||||
rfid_delay_ms(5); // 硬件初始化后增加一个短暂延时,确保芯片稳定
|
rfid_delay_ms(5); // 硬件初始化后增加一个短暂延时,确保芯片稳定
|
||||||
int result = FM176XX_SoftReset();
|
int result = FM176XX_SoftReset();
|
||||||
if (result != SUCCESS)
|
// if (result != SUCCESS)
|
||||||
{
|
// {
|
||||||
rc_log("FM176XX HardReset FAIL\r\n");
|
// rc_log("FM176XX HardReset FAIL\r\n");
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
rc_log("FM176XX HardReset SUCCESS\r\n");
|
// rc_log("FM176XX HardReset SUCCESS\r\n");
|
||||||
}
|
// }
|
||||||
|
|
||||||
rfid_delay_ms(10); // 复位后延时
|
rfid_delay_ms(10); // 复位后延时
|
||||||
|
|
||||||
@ -474,9 +476,8 @@ void test_task(void){
|
|||||||
while(1){
|
while(1){
|
||||||
u8 uid[UID_LENGTH] = {0};
|
u8 uid[UID_LENGTH] = {0};
|
||||||
//读id卡
|
//读id卡
|
||||||
TYPE_V_EVENT((char *)uid);
|
// TYPE_V_EVENT((char *)uid);
|
||||||
// TYPE_A_EVENT((char *)uid);
|
TYPE_A_EVENT((char *)uid);
|
||||||
|
|
||||||
os_time_dly(500);
|
os_time_dly(500);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -485,6 +486,8 @@ void test_func_main(void){
|
|||||||
#if TEST_FUNCTION == 1
|
#if TEST_FUNCTION == 1
|
||||||
|
|
||||||
os_task_create(test_task, NULL, 1, 1024, 128, "rfid_test");
|
os_task_create(test_task, NULL, 1, 1024, 128, "rfid_test");
|
||||||
|
extern void pwm_test_main(void);
|
||||||
|
// os_task_create(pwm_test_main, NULL, 1, 1024, 128, "pwm_test"); //pwm测试
|
||||||
// os_task_create(contol_key_task, NULL, 1, 2048, 128, control_key_task_name);
|
// os_task_create(contol_key_task, NULL, 1, 2048, 128, control_key_task_name);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -113,7 +113,7 @@ int lp_vad_mic_data_init(struct vad_mic_platform_data *mic_data)
|
|||||||
if (vbg_trim != 0xf) {
|
if (vbg_trim != 0xf) {
|
||||||
data->power_data.acm_select = get_vad_vbg_trim();
|
data->power_data.acm_select = get_vad_vbg_trim();
|
||||||
}
|
}
|
||||||
lp_vad_mic_in_enable(mic_data);
|
// lp_vad_mic_in_enable(mic_data); //xtell mic
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -10,7 +10,7 @@ copy ..\..\ota.bin .
|
|||||||
copy ..\..\anc_coeff.bin .
|
copy ..\..\anc_coeff.bin .
|
||||||
copy ..\..\anc_gains.bin .
|
copy ..\..\anc_gains.bin .
|
||||||
|
|
||||||
..\..\isd_download.exe ..\..\isd_config.ini -tonorflash -dev br28 -boot 0x120000 -div8 -wait 300 -uboot ..\..\uboot.boot -app ..\..\app.bin -res ..\..\cfg_tool.bin tone.cfg p11_code.bin ..\..\eq_cfg_hw.bin -uboot_compress -format all
|
..\..\isd_download.exe ..\..\isd_config.ini -tonorflash -dev br28 -boot 0x120000 -div8 -wait 300 -uboot ..\..\uboot.boot -app ..\..\app.bin -res ..\..\cfg_tool.bin tone.cfg p11_code.bin ..\..\eq_cfg_hw.bin -uboot_compress -format all -key 646-AC690X-7603.key
|
||||||
|
|
||||||
@REM..\..\isd_download.exe ..\..\isd_config.ini -tonorflash -dev br34 -boot 0x20000 -div8 -wait 300 -uboot ..\..\uboot.boot -app ..\..\app.bin ..\..\cfg_tool.bin -res tone.cfg kws_command.bin p11_code.bin -uboot_compress
|
@REM..\..\isd_download.exe ..\..\isd_config.ini -tonorflash -dev br34 -boot 0x20000 -div8 -wait 300 -uboot ..\..\uboot.boot -app ..\..\app.bin ..\..\cfg_tool.bin -res tone.cfg kws_command.bin p11_code.bin -uboot_compress
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -4664,10 +4664,6 @@ objs/cpu/br28/smart_voice/vad_mic.c.o
|
|||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,free,l
|
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,free,l
|
||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,lp_vad_mic_test,pl
|
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,lp_vad_mic_test,pl
|
||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,vad_disable,pl
|
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,vad_disable,pl
|
||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,gpio_set_direction,l
|
|
||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,gpio_set_die,l
|
|
||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,gpio_set_pull_up,l
|
|
||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,gpio_set_pull_down,l
|
|
||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,__local_irq_disable,l
|
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,__local_irq_disable,l
|
||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,__local_irq_enable,l
|
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,__local_irq_enable,l
|
||||||
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,lp_vad,pl
|
-r=objs/cpu/br28/smart_voice/vad_mic.c.o,lp_vad,pl
|
||||||
@ -5211,6 +5207,7 @@ objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o
|
|||||||
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,put_buf,l
|
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,put_buf,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,user_client_init,l
|
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,user_client_init,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,user_client_set_search_complete,l
|
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,user_client_set_search_complete,l
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,sys_timer_add,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,puts,l
|
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,puts,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,client_user_target,pl
|
-r=objs/apps/earphone/xtell_remote_control/ble_handler/client_handler.c.o,client_user_target,pl
|
||||||
objs/apps/earphone/xtell_remote_control/ble_handler/example/example.c.o
|
objs/apps/earphone/xtell_remote_control/ble_handler/example/example.c.o
|
||||||
@ -5227,6 +5224,16 @@ objs/apps/earphone/xtell_remote_control/nvs/nvs.c.o
|
|||||||
-r=objs/apps/earphone/xtell_remote_control/nvs/nvs.c.o,nvs_test_factory_info,pl
|
-r=objs/apps/earphone/xtell_remote_control/nvs/nvs.c.o,nvs_test_factory_info,pl
|
||||||
-r=objs/apps/earphone/xtell_remote_control/nvs/nvs.c.o,os_time_dly,l
|
-r=objs/apps/earphone/xtell_remote_control/nvs/nvs.c.o,os_time_dly,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/nvs/nvs.c.o,puts,l
|
-r=objs/apps/earphone/xtell_remote_control/nvs/nvs.c.o,puts,l
|
||||||
|
objs/apps/earphone/xtell_remote_control/pwm_test.c.o
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/pwm_test.c.o,pwm_test_init,pl
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/pwm_test.c.o,mcpwm_init,l
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/pwm_test.c.o,mcpwm_open,l
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/pwm_test.c.o,pwm_test_set_pulse_width_us,pl
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/pwm_test.c.o,mcpwm_set_duty,l
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/pwm_test.c.o,pwm_test_sweep,pl
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/pwm_test.c.o,mdelay,l
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/pwm_test.c.o,pwm_test_main,pl
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/pwm_test.c.o,os_time_dly,l
|
||||||
objs/apps/earphone/xtell_remote_control/RFID/reader/CPU_CARD.c.o
|
objs/apps/earphone/xtell_remote_control/RFID/reader/CPU_CARD.c.o
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/reader/CPU_CARD.c.o,CPU_CARD_EVENT,pl
|
-r=objs/apps/earphone/xtell_remote_control/RFID/reader/CPU_CARD.c.o,CPU_CARD_EVENT,pl
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/reader/CPU_CARD.c.o,CPU_Rats,pl
|
-r=objs/apps/earphone/xtell_remote_control/RFID/reader/CPU_CARD.c.o,CPU_Rats,pl
|
||||||
@ -5350,6 +5357,9 @@ objs/apps/earphone/xtell_remote_control/RFID/rfid_event.c.o
|
|||||||
objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o
|
objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,FM176XX_HardInit,pl
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,FM176XX_HardInit,pl
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,soft_iic_init,l
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,soft_iic_init,l
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,gpio_set_direction,l
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,gpio_write,l
|
||||||
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,mdelay,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,printf,l
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,printf,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,GetReg,pl
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,GetReg,pl
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,soft_iic_start,l
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,soft_iic_start,l
|
||||||
@ -5359,7 +5369,7 @@ objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o
|
|||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,SetReg,pl
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,SetReg,pl
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,FM176XX_SoftReset,pl
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,FM176XX_SoftReset,pl
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,rfid_delay_ms,pl
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,rfid_delay_ms,pl
|
||||||
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,mdelay,l
|
-r=objs/apps/earphone/xtell_remote_control/RFID/rfid_hal.c.o,debug_command,pl
|
||||||
objs/apps/earphone/xtell_remote_control/task_func.c.o
|
objs/apps/earphone/xtell_remote_control/task_func.c.o
|
||||||
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,rc_rfid_callback_handler,pl
|
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,rc_rfid_callback_handler,pl
|
||||||
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,TYPE_A_EVENT,l
|
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,TYPE_A_EVENT,l
|
||||||
@ -5399,7 +5409,6 @@ objs/apps/earphone/xtell_remote_control/task_func.c.o
|
|||||||
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,rfid_delay_ms,l
|
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,rfid_delay_ms,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,FM176XX_SoftReset,l
|
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,FM176XX_SoftReset,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,GetReg,l
|
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,GetReg,l
|
||||||
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,TYPE_V_EVENT,l
|
|
||||||
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,test_func_main,pl
|
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,test_func_main,pl
|
||||||
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,puts,l
|
-r=objs/apps/earphone/xtell_remote_control/task_func.c.o,puts,l
|
||||||
objs/apps/earphone/xtell_remote_control/xtell_app_main.c.o
|
objs/apps/earphone/xtell_remote_control/xtell_app_main.c.o
|
||||||
|
|||||||
Reference in New Issue
Block a user