void Lpcd_IRQ_Event(void) { unsigned char irq; Lpcd_Set_Mode(DISABLE); //NPD = 1,FM17622退出休眠模式 Uart_Send_Msg("-> LPCD Detceted!\r\n"); GetReg_Ext(JREG_LPCDIRQ, &irq);//读取LPCD中断标志 SetReg_Ext(JREG_LPCDIRQ, irq);//CLEAR LPCD IRQ Uart_Send_Msg("IRQ = ");Uart_Send_Hex(&irq,1);Uart_Send_Msg("\r\n"); if(irq & 0x08) { Uart_Send_Msg("-> LPCD IRQ RFDET SET!\r\n"); } if(irq & 0x04) { Uart_Send_Msg("-> LPCD IRQ RXCHANGE SET!\r\n");//LPCD中断标志 Lpcd_Get_ADC_Value();//用于LPCD功能调试 } if(irq & 0x02) { Uart_Send_Msg("-> LPCD IRQ ATQAREC SET!\r\n"); } if((irq & 0x08) ||(irq & 0x04)||(irq & 0x02)) { Lpcd_Card_Event();//卡片操作处理流程 Lpcd_Init_Register();//LPCD初始化 Lpcd_Set_Mode(ENABLE);//返回LPCD模式 } return; } 这个函数的作用是什么
时间: 2024-04-20 13:23:39 浏览: 279
这个函数的作用是处理LPCD中断事件。具体实现步骤如下:
1. 将LPCD模式设置为DISABLE,即将NPD置为1,使FM17622退出休眠模式。
2. 通过串口发送消息,表示检测到LPCD。
3. 通过调用GetReg_Ext函数读取LPCD中断标志,并将其存储在irq变量中。
4. 通过调用SetReg_Ext函数清除LPCD中断标志。
5. 通过串口发送消息,将irq的十六进制值输出。
6. 如果irq中的第4位(0x08)被设置,则通过串口发送消息表示LPCD IRQ RFDET已设置。
7. 如果irq中的第3位(0x04)被设置,则通过串口发送消息表示LPCD IRQ RXCHANGE已设置,并调用Lpcd_Get_ADC_Value函数进行LPCD功能调试。
8. 如果irq中的第2位(0x02)被设置,则通过串口发送消息表示LPCD IRQ ATQAREC已设置。
9. 如果irq中的第4位、第3位或第2位任意一位被设置,即存在任意一种中断情况,则依次执行Lpcd_Card_Event函数进行卡片操作处理流程、Lpcd_Init_Register函数进行LPCD初始化,并将LPCD模式设置为ENABLE,使之返回LPCD模式。
总结起来,这个函数的作用是处理LPCD中断事件,并根据不同的中断情况进行相应处理操作。
相关问题
void Lpcd_Get_ADC_Value(void) { unsigned char reg,reg1; unsigned char lpcd_delta1,lpcd_delta2; { GetReg_Ext(JREG_LPCDDELTA_HI, ®); GetReg_Ext(JREG_LPCDDELTA_LO, ®1); lpcd_delta1 = (reg<<6) + reg1; lpcd_delta2 = ((reg<<6)>>8); Uart_Send_Msg("-> LPCD Delta is:");Uart_Send_Hex(&lpcd_delta2, 1);Uart_Send_Hex(&lpcd_delta1, 1);Uart_Send_Msg("\r\n"); } return; } 这个函数的作用是什么
这个函数的作用是获取LPCD Delta的值,并通过串口发送消息将其输出。具体实现步骤如下:
1. 通过调用GetReg_Ext函数获取JREG_LPCDDELTA_HI和JREG_LPCDDELTA_LO寄存器的值,存储在reg和reg1变量中。
2. 将reg左移6位并与reg1进行相加,得到lpcd_delta1的值。
3. 将reg左移6位并右移8位,得到lpcd_delta2的值。
4. 通过串口发送消息,将lpcd_delta2和lpcd_delta1的十六进制值以及附加信息输出。
总结起来,这个函数的作用是获取LPCD Delta的值并将其通过串口发送出来,以便进行进一步的处理或显示。
ESP32C3, esp-idf 4.3.5,编译报错。FAILED: wifi_softAP.elf cmd.exe /C "cd . && D:\Espressif\tools\riscv32-esp-elf\esp-2021r2-patch3-8.4.0\riscv32-esp-elf\bin\riscv32-esp-elf-g++.exe -march=rv32imc -nostartfiles -march=rv32imc --specs=nosys.specs @CMakeFiles\wifi_softAP.elf.rsp -o wifi_softAP.elf && cd ." d:/espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld.exe: esp-idf/main/libmain.a(softap_example_main.c.obj): in function `ch623_task': d:\espressif\frameworks\esp-idf-v4.3.5\examples\wifi\esp32_config_wifi\build/../main/softap_example_main.c:164: undefined reference to `CH623_Init' d:/espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld.exe: d:\espressif\frameworks\esp-idf-v4.3.5\examples\wifi\esp32_config_wifi\build/../main/softap_example_main.c:166: undefined reference to `pcd_lpcd_start' d:/espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld.exe: d:\espressif\frameworks\esp-idf-v4.3.5\examples\wifi\esp32_config_wifi\build/../main/softap_example_main.c:168: undefined reference to `pcd_lpcd_application' d:/espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld.exe: d:\espressif\frameworks\esp-idf-v4.3.5\examples\wifi\esp32_config_wifi\build/../main/softap_example_main.c:171: undefined reference to `pcd_lpcd_start' collect2.exe: error: ld returned 1 exit status ninja: build stopped: subcommand failed. ninja failed with exit code 1
根据报错信息,这是因为链接器无法找到函数 CH623_Init、pcd_lpcd_start 和 pcd_lpcd_application 的定义,导致链接失败。请确认是否正确引入了相关的头文件和库文件,并且这些函数是否在库文件中被定义了。如果确保没有问题,请检查是否在 CMakeLists.txt 中正确地添加了这些库的引用,以及是否将这些库添加到了链接器的链接列表中。
阅读全文