vs2015或vs2017 调试 异常 CLR 无法从 COM 上下文 0x622b440 转换为 COM 上下文 0x622b5b0,这种状态已持续 60 秒。

本文介绍在使用VS2015或VS2017进行调试时遇到的CLR无法完成COM上下文转换的问题,并提供了解决该问题的具体步骤。

vs2015或vs2017在调试,读写大量数据的时候,出现如下异常:

CLR 无法从 COM 上下文 0x622b440 转换为 COM 上下文 0x622b5b0,这种状态已持续 60
秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows
消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如
CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。

这里写图片描述
解决方式:

  1. vs菜单栏->调试->异常->取消ContextSwitchDeadlock 前面的勾。如图:
    这里写图片描述
    这里写图片描述

2.vs2017或vs2015菜单栏->调试->窗口->异常设置->Managed Debug Assistants里 去掉ContextSwitchDeadlock前面的勾。
如图:
这里写图片描述
这里写图片描述

/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 1319: 10-30 13:37:03.636 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 1320: 10-30 13:37:03.636 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1321: 10-30 13:37:03.637 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1322: 10-30 13:37:03.637 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1325: 10-30 13:37:03.637 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1326: 10-30 13:37:03.638 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1327: 10-30 13:37:03.638 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1333: 10-30 13:37:03.735 24401 64053 I C02B82/com.ss.hm.ugc.aweme/AudioLogUtils: [IncSoundData][[104741]NormalRenderer] channel: 2, L=6710, R=6710, counts: 900 行 1351: 10-30 13:37:03.935 2422 2422 I C01560/wifi_manager_service/WifiNetStats: total/6574/125369/60/72,com.ss.hm.ugc.aweme/6574/124953/60/64,unknown:1024/0/416/0/8 行 1354: 10-30 13:37:03.968 24401 64103 W C01719/com.ss.hm.ugc.aweme/ffrt: 6641:~WorkerThread:72 to exit, qos[3] 行 1359: 10-30 13:37:04.204 24401 24694 E C015B0/com.ss.hm.ugc.aweme/NETSTACK: [epoll_multi_driver.cpp:78] epoll wait event 0 err: 11 行 1384: 10-30 13:37:04.678 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 1386: 10-30 13:37:04.678 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 1388: 10-30 13:37:04.679 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1391: 10-30 13:37:04.679 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1392: 10-30 13:37:04.679 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1394: 10-30 13:37:04.680 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1395: 10-30 13:37:04.680 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1397: 10-30 13:37:04.680 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1401: 10-30 13:37:04.719 24401 64019 I A00000/com.ss.hm.ugc.aweme/mdl2: [0x5bcaccee00,MDLProtocolHandler.cpp:423,read] [task-3129] after read: got: 0, ret: 0, expected size: 32768, error: 0, pos: 282749, filesize: 2441753, lastD: 1761802610166 行 1444: 10-30 13:37:05.716 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 1446: 10-30 13:37:05.716 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 1448: 10-30 13:37:05.717 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1451: 10-30 13:37:05.717 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1452: 10-30 13:37:05.717 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1454: 10-30 13:37:05.718 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1455: 10-30 13:37:05.718 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1457: 10-30 13:37:05.718 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1460: 10-30 13:37:05.735 24401 64053 I C02B82/com.ss.hm.ugc.aweme/AudioLogUtils: [IncSoundData][[104741]NormalRenderer] channel: 2, L=1697, R=1975, counts: 1000 行 1490: 10-30 13:37:06.727 24401 64019 I A00000/com.ss.hm.ugc.aweme/mdl2: [0x5bcaccee00,MDLProtocolHandler.cpp:423,read] [task-3129] after read: got: 0, ret: 0, expected size: 32768, error: 0, pos: 282749, filesize: 2441753, lastD: 1761802610166 行 1498: 10-30 13:37:06.757 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 1499: 10-30 13:37:06.757 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 1500: 10-30 13:37:06.757 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1503: 10-30 13:37:06.758 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1504: 10-30 13:37:06.758 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1506: 10-30 13:37:06.759 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1507: 10-30 13:37:06.759 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1508: 10-30 13:37:06.759 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1552: 10-30 13:37:07.615 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.529s] Epoch #1362: Started. Time since last GC 9981363 microseconds. 行 1553: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: live bytes after one gc: 4354216 bytes 行 1554: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Root set: 84 thread local references, 181 stack references, 944 global references, 303 stable references. In total 1512 roots. 行 1555: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Mark: 68953 objects. 行 1556: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Sweep extra objects: swept 1 objects, kept 417 objects 行 1557: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Sweep: swept 8215 objects, kept 68931 objects 行 1558: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Heap memory usage: before 10698752 bytes, after 10764288 bytes 行 1559: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Time to pause #1: 32 microseconds. 行 1560: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Mutators pause time #1: 691 microseconds. 行 1561: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Time to pause #2: 3 microseconds. 行 1562: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Mutators pause time #2: 118 microseconds. 行 1563: 10-30 13:37:07.637 24401 24725 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#24725][65523.552s] Epoch #1362: Finished. Total GC epoch time is 22543 microseconds. 行 1564: 10-30 13:37:07.637 24401 63939 E A09998/com.ss.hm.ugc.aweme/Konan: [INFO][gc][tid#63939][65523.552s] Epoch #1362: Finalization is done in 263 microseconds after epoch end. 行 1566: 10-30 13:37:07.652 24401 24401 I A00001/com.ss.hm.ugc.aweme/HeliosApiHook: HeliosApiHook preInvoke id: 110002, className: connection, methodName: getDefaultNetSync, thisOrClass: undefined, parameters: 行 1567: 10-30 13:37:07.653 24401 4051 E C015B0/com.ss.hm.ugc.aweme/NETSTACK: [epoll_multi_driver.cpp:78] epoll wait event 0 err: 4 行 1568: 10-30 13:37:07.677 24401 24677 I C03F01/com.ss.hm.ugc.aweme/NAPI: [(:459)(NotifyShrink)] taskpool:: the system now is under low memory 行 1578: 10-30 13:37:07.801 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 1579: 10-30 13:37:07.801 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 1580: 10-30 13:37:07.802 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1583: 10-30 13:37:07.802 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1584: 10-30 13:37:07.803 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1587: 10-30 13:37:07.803 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1588: 10-30 13:37:07.803 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1589: 10-30 13:37:07.803 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1623: 10-30 13:37:08.736 24401 64019 I A00000/com.ss.hm.ugc.aweme/mdl2: [0x5bcaccee00,MDLProtocolHandler.cpp:423,read] [task-3129] after read: got: 0, ret: 0, expected size: 32768, error: 0, pos: 282749, filesize: 2441753, lastD: 1761802610166 行 1639: 10-30 13:37:08.837 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 1640: 10-30 13:37:08.837 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 1642: 10-30 13:37:08.838 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1645: 10-30 13:37:08.838 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1646: 10-30 13:37:08.838 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1647: 10-30 13:37:08.839 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1648: 10-30 13:37:08.839 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1649: 10-30 13:37:08.839 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1665: 10-30 13:37:09.107 24401 24401 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: GetMinorsProtectionInfo:322# begin GetMinorsProtectionInfo 行 1666: 10-30 13:37:09.108 24401 24401 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: BuildEventKey:97# buildEventKey, transId: transId_17618026291073502963455 ,beginTime: 1761802629108, requestType: 29 行 1667: 10-30 13:37:09.108 24401 24401 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: GetMinorsProtectionInfo:345# end GetMinorsProtectionInfo 行 1668: 10-30 13:37:09.108 24401 62260 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: ExecuteRequestCB:197# begin ExecuteRequestCB 行 1669: 10-30 13:37:09.108 24401 62260 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: ExecuteRequestCB:214# end ExecuteRequestCB 行 1683: 10-30 13:37:09.118 1468 2104 I C05320/huawei_id_svc/HWID_SA_055: GetClientId Bundle Name: com.ss.hm.ugc.aweme, clientId: 110185183(83) 行 1684: 10-30 13:37:09.120 1468 2104 I C05320/huawei_id_svc/HWID_SA_055: GetClientId Bundle Name: com.ss.hm.ugc.aweme(33) 行 1686: 10-30 13:37:09.128 1468 2104 I C05320/huawei_id_svc/HWID_SA_055: GetVersionName Bundle Name: com.ss.hm.ugc.aweme, versionName: 36.4.0(162) 行 1689: 10-30 13:37:09.134 1468 2104 I C05320/huawei_id_svc/HWID_SA_055: GetClientId Bundle Name: com.ss.hm.ugc.aweme(33) 行 1691: 10-30 13:37:09.139 1468 2104 I C05320/huawei_id_svc/HWID_SA_055: GetClientId Bundle Name: com.ss.hm.ugc.aweme, clientId: 110185183(83) 行 1696: 10-30 13:37:09.141 24401 3765 I C05320/com.ss.hm.ugc.aweme/HWID_INNERKITS_055: HuaweiIDInnerKitsCallbackStub::OnRemoteRequest enter 行 1698: 10-30 13:37:09.141 24401 3765 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: OnResult:47# begin OnResult 行 1699: 10-30 13:37:09.141 24401 3765 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: OnResult:75# end OnResult 行 1701: 10-30 13:37:09.141 24401 24401 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: ExecuteRequestCompletedWork:13# begin ExecuteRequestCompletedWork 行 1702: 10-30 13:37:09.141 24401 24401 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: WriteEndEvent:119# hiAppEvent WriteEndEvent: : {"api_name":"getMinorsProtectionInfo","app_id":"","begin_time":1761802629108,"end_time":1761802629141,"error_code":0,"result":0,"sdk_name":"AccountKit","trans_id":"transId_17618026291073502 ... 行 1704: 10-30 13:37:09.142 24401 61542 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: operator():133# hiAppEvent WriteEndEvent 行 1708: 10-30 13:37:09.142 24401 24401 I C05320/com.ss.hm.ugc.aweme/huaweiId_framewrok_base: ExecuteRequestCompletedWork:34# end ExecuteRequestCompletedWork 行 1713: 10-30 13:37:09.152 24401 61540 I C04707/com.ss.hm.ugc.aweme/HaAppEvent: OnEvent(api_diagnostic, 0, api_exec_end) 行 1714: 10-30 13:37:09.153 24401 61540 I C04707/com.ss.hm.ugc.aweme/HaAppEvent: OnEvent(api_diagnostic, 0, api_exec_end) 行 1716: 10-30 13:37:09.204 24401 24694 E C015B0/com.ss.hm.ugc.aweme/NETSTACK: [epoll_multi_driver.cpp:78] epoll wait event 0 err: 11 行 1814: 10-30 13:37:09.789 24401 24401 I A00000/com.ss.hm.ugc.aweme/KPerf: [compose_perf]:event:kmp_compose_memory_info, params:{"scene":"SlidesIndicator","epoch":1362,"duration":22.54375,"pause_time":0.659375,"second_pause_time":0.115104,"mark_count":68953,"root_thread_local_ref_count":84,"root_stack_ref_count":181,"root_globa ... 行 1822: 10-30 13:37:09.877 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 1823: 10-30 13:37:09.877 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 1826: 10-30 13:37:09.877 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1827: 10-30 13:37:09.878 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1828: 10-30 13:37:09.878 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1831: 10-30 13:37:09.878 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1832: 10-30 13:37:09.878 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1834: 10-30 13:37:09.879 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1846: 10-30 13:37:09.965 24401 64119 W C01719/com.ss.hm.ugc.aweme/ffrt: 6642:~WorkerThread:72 to exit, qos[3] 行 1862: 10-30 13:37:10.745 24401 64019 I A00000/com.ss.hm.ugc.aweme/mdl2: [0x5bcaccee00,MDLProtocolHandler.cpp:423,read] [task-3129] after read: got: 0, ret: 0, expected size: 32768, error: 0, pos: 282749, filesize: 2441753, lastD: 1761802610166 行 1877: 10-30 13:37:10.916 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 1878: 10-30 13:37:10.916 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 1882: 10-30 13:37:10.916 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1883: 10-30 13:37:10.917 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1884: 10-30 13:37:10.917 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1887: 10-30 13:37:10.917 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1888: 10-30 13:37:10.917 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1890: 10-30 13:37:10.917 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1924: 10-30 13:37:11.712 24401 24625 W C01719/com.ss.hm.ugc.aweme/ffrt: 6643:RecordPollerInfo:323 3:40491; 行 1937: 10-30 13:37:11.956 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 1939: 10-30 13:37:11.956 24401 3765 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 1940: 10-30 13:37:11.957 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1941: 10-30 13:37:11.958 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1942: 10-30 13:37:11.958 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1946: 10-30 13:37:11.959 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1947: 10-30 13:37:11.959 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 1948: 10-30 13:37:11.959 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 1972: 10-30 13:37:12.654 24401 4051 E C015B0/com.ss.hm.ugc.aweme/NETSTACK: [epoll_multi_driver.cpp:78] epoll wait event 0 err: 4 行 1980: 10-30 13:37:12.752 24401 64019 I A00000/com.ss.hm.ugc.aweme/mdl2: [0x5bcaccee00,MDLProtocolHandler.cpp:423,read] [task-3129] after read: got: 0, ret: 0, expected size: 32768, error: 0, pos: 282749, filesize: 2441753, lastD: 1761802610166 行 1999: 10-30 13:37:12.918 2422 2422 I C01560/wifi_manager_service/WifiNetStats: total/1052/1555/12/15,com.ss.hm.ugc.aweme/1052/1555/12/15 行 2018: 10-30 13:37:13.004 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 2019: 10-30 13:37:13.004 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 2020: 10-30 13:37:13.005 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 2030: 10-30 13:37:13.005 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 2031: 10-30 13:37:13.006 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 2035: 10-30 13:37:13.006 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 2036: 10-30 13:37:13.006 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2 行 2037: 10-30 13:37:13.006 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Release unref refCount: 1 行 2120: 10-30 13:37:14.037 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]NetQuaCallbackStub::OnReceived, code[0] 行 2121: 10-30 13:37:14.037 24401 64014 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]CmdNetworkQoSChanged stub 行 2122: 10-30 13:37:14.037 24401 24401 I C015B5/com.ss.hm.ugc.aweme/netmanager_enhanced: [core]Get the event loop refCount: 2
最新发布
11-14
/*================================================================================ NC P63 红 P64 CS P65 绿 P62 VDD 蓝 P61 GND 触摸 P60 主频:8M/4T TKCOM = P65 P60做触摸按键 短按切换模式:白-红-绿-蓝-黄-粉红-七彩慢闪,循环 长按触摸按键:3开关机 ,开机白灯 ================================================================================ */ #include "XC8PT8500.H" #include "XJ_DEFINE.H" #include "XC8PT8500_TOUCH_LIB.H" #include "XC8PT8500_TOUCH_LIB_CFG.H" //================================================================================ volatile __at(0x10) unsigned char A_BUFF; //中断ACC保护RAM volatile __at(0x11) unsigned char R3_BUFF; //中断STATUS保护RAM volatile __at(0x12) unsigned char Reg_1MS_Count; //1ms计数RAM volatile __at(0x13) unsigned char Reg_10MS_Count; //10ms计数RAM volatile __at(0x14) unsigned char R_GOTOLOWPOWERMODE_COUNT; //超时低功耗计数RAM //=============================================================================== // IO 端口定义 #define red PORT6_4 #define green PORT6_2 #define blue PORT6_1 // 按键所用 unsigned int Reg_Key1Cnt; unsigned char Reg_Key1check; unsigned char Reg_Key1_10MS; unsigned char Reg_Led_Mode; unsigned char Reg_Duty; unsigned char LED_Duty; unsigned char red_duty,green_duty,blue_duty; unsigned int qicai_time; // 七彩周期时间 unsigned char light_count; // 调取亮度 unsigned char led_count; // 调取LED unsigned char qicai_number; // 七彩次数 unsigned char qicai_on_off; // 七彩顺闪开关 unsigned char Key1_Long_time; unsigned char Reg_Led_Mode_check; __at(0x15) ob8 Reg_Bit1; #define Bit_1MS Reg_Bit1.b0 #define Bit_10MS Reg_Bit1.b1 //============================================================= //按键使用 #define bit_key1_press Reg_Bit1.b2 //key1按键按下标志位 #define Bit_Flag Reg_Bit1.b3 #define bit_Key1_Long Reg_Bit1.b4 //长按标志位 #define Bit_Inc_Dec Reg_Bit1.b5 //==================================================================== //以下不可修改,若未使能串口调试,则释放该地址RAM #if TKLib_UartDebugSwitch == 1 unsigned char R_UART_TX_BUF; unsigned char R_UART_TX_CNT; unsigned char R_UART_TX_DELAY; #endif //==================================================================== #if (TKLib_OPENED_TK_AMOUNT == 1) extern unsigned char RTkGBuff0[6]; #endif #if (TKLib_OPENED_TK_AMOUNT == 2) extern unsigned char RTkGBuff0[6]; extern unsigned char RTkGBuff1[6]; #endif #if (TKLib_OPENED_TK_AMOUNT == 3) extern unsigned char RTkGBuff0[6]; extern unsigned char RTkGBuff1[6]; extern unsigned char RTkGBuff2[6]; #endif #if (TKLib_OPENED_TK_AMOUNT == 4) extern unsigned char RTkGBuff0[6]; extern unsigned char RTkGBuff1[6]; extern unsigned char RTkGBuff2[6]; extern unsigned char RTkGBuff3[6]; #endif #if TKLib_TouchLowerPower extern unsigned char RTkLPGBuff0[4]; #endif //================================================================================ void CLR_RAM(void); void IO_Init(void); void TCC_Init(void); void TK_BASETIMER(void); void WDT_WakeUp_Handle(void); void file_irRec(void); void T1_Init(void); void file_Key1Scan(void); void file_Key1Scan_Long(void); void file_LED_Charge(void); //================================================================================ //初始化RAM:10H~5FH //================================================================================ void CLR_RAM() { for(RSR=0x90;RSR<0xDF;RSR++) //清零 BANK0 RAM {IAR = 0;} IAR = 0; } //================================================================================ //端口初始化 //================================================================================ void IO_Init(void) { PORT6 = 0x00; //P6口输出低 P6CR = 0x00; // P6DCR= 0xfd; } //================================================================================ //TC0初始化 //================================================================================ void TCC_Init(void) { WDE = 0X00; CONT = 0x00; //TCC 2分频 TCC = 156; //1/2 * 2 * (256-156) = 100us 公式:1/IRC频率 * 预分频 * (256-初值) ISR = 0xfe; //清TC0中断标志位 IMR = 0x01; //使能TCC } //================================================================================ //TC1初始化 //================================================================================ void T1_Init(void) { /* PWMCON = 0x88; //pwm=1/8*2(分频)*4clock*100=100us PRD = 100; // ISR = 0x00; //清TC0中断标志位 IMR = 0x09; //使能TCC */ } //================================================================================ //中断服务程序 //================================================================================ void int_isr(void) __interrupt { __asm__("org 0x08"); PUSH(_A_BUFF,_R3_BUFF); //中断入栈保护 //============================================================================ if(TCIF == 1) //判断TCIF是否为0 { TCC += 156; //1/2 * 2 * (256-156) = 100us 公式:1/IRC频率 * 预分频 * (256-初值) ISR = 0xfe; //清TC0中断标志位 if(++Reg_1MS_Count >= 10) { Reg_1MS_Count = 0; Bit_1MS = 1; } if(Reg_Led_Mode>0) { switch(Reg_Led_Mode) { case 1:red = 1;green = 1;blue = 1;break; //白色 case 2:red = 1;green = 0;blue = 0;break; //红 case 3:red = 0;green = 1;blue = 0;break; //绿 case 4:red = 0;green = 0;blue = 1;break; //蓝 case 5:red = 1;green = 1;blue = 0;break; //黄 case 6:red_duty = 10;green_duty = 2;blue_duty = 2;break; // 粉红 // case 7:red_duty = 1;green_duty = 1;blue_duty = 1;break; // 七彩 } if(Reg_Led_Mode==6) { if(LED_Duty<10) LED_Duty++; else LED_Duty = 1; if(LED_Duty<=red_duty) red = 1; else red = 0; if(LED_Duty<=green_duty) green = 1; else green = 0; if(LED_Duty<=blue_duty) blue = 1; else blue = 0; } if(Reg_Led_Mode==7) { if(qicai_time>LED_light[light_count]) { red = red_light[led_count]; green = green_light[led_count]; blue = blue_light[led_count]; } else { red = red_light[led_count+1]; green = green_light[led_count+1]; blue = blue_light[led_count+1]; } if(qicai_time<50) qicai_time++; else { qicai_time = 1; qicai_number++; if(qicai_number>=8) { qicai_number = 0; light_count++; if(light_count>=50) { light_count = 0; led_count++; if(led_count>=3) led_count = 0; } } } } } else { red = 0; green = 0; blue = 0; } } if(T1IF == 1) //判断T1IF是否为1,pwm周期中断 { ISR = 0xf7; //ISR的bit3:T1IF清零 } if(TKIF == 1) //判断TkIF是否为0 { ISR = 0x0f; //清标志 } ISR = 0x19; //清标志 //=============================================== ============================= POP(_A_BUFF,_R3_BUFF); //中断出栈保护恢复 } //================================================================================ //MAIN主程序 //================================================================================ void main() { IO_Init(); CLR_RAM(); TkInit(); //[仿真时单步执行该语句较慢,可用Step Over执行] TCC_Init(); T1_Init(); EI(); //打开总中断 LED_Duty = 0; qicai_time = 0; light_count = 0; led_count = 0; qicai_number = 0; qicai_on_off = 0; Key1_Long_time = 0; Reg_Key1Cnt = 0; Reg_Key1check = 0; Reg_Led_Mode = 0; // Reg_Duty = 188; Bit_Inc_Dec=0; // Reg_Led_Mode = 7; //调试闪法 while(1) { CWDT(); TkScanAndSignalHandle(); //触摸主函数扫描,主循环间隔时间不宜过长,否则影响触摸响应时间 if(Bit_OneScanDone) //判断一轮是否转换结束 { Bit_OneScanDone = 0; #if TKLib_UartDebugSwitch == 1 //串口使能 TK_UartDebug(); #endif if(RKeyOnFlg == 0) //触摸按键全部松开 { if(Bit_10MS) { Bit_10MS = 0; #if TKLib_TouchLowerPower if(--R_GOTOLOWPOWERMODE_COUNT == 0) //触摸按键松开超过设定时间,允许进入触摸低功耗模式 { R_GOTOLOWPOWERMODE_COUNT = T_GOTOLOWPOWERMODE_C_Init_DF; Bit_LowPowerModeReset = 0; //0:进入低功耗前会先复位参考 ; 1:直接进入低功耗 (不容易进低功耗则可考虑置1) Bit_LowPowerModeRun = 1; //允许进入触摸低功耗模式 } #endif } } else { #if TKLib_TouchLowerPower R_GOTOLOWPOWERMODE_COUNT = T_GOTOLOWPOWERMODE_C_Init_DF; #endif } #if TKLib_TouchLowerPower if(Bit_LowPowerModeRun) { if((Reg_Led_Mode==0)&&(F_TK0_On==0)&&(Reg_Key1Cnt==0)&&(Reg_Key1check==0)) //额外睡眠条件 { //============================================================================================ //下面可加进入低功耗模式前其它需要处理的操作 //(触摸相关的TkLowPowerMode()会自行处理WDT 与 CPU 工作模式 用户不需要处理) //如低功耗模式下端口处理,外设模块等 //端口唤醒配置详情参考规格书功能demo //============================================================================================ TkLowPowerMode(); //进入触摸低功耗模式 //============================================================================================ //下面可加退出低功耗模式后,其它需要恢复的操作 // Reg_Key1Cnt = 1; } //============================================================================================ } #endif ScanContinue(); //重置检测 } if(Bit_1MS) { Bit_1MS = 0; TK_BASETIMER(); if(++Reg_10MS_Count >= 10) { Reg_10MS_Count = 0; Bit_10MS = 1; file_Key1Scan(); //10ms一次,触摸按键短按滤波3次 ,长按是90次*10ms = 900ms } } } } //================================================================================ //功能:校准和长按时钟 //说明:触摸库需要的时基,不可删除,但可以调整位置,即只需要产生下列时基即可 //================================================================================ void TK_BASETIMER(void) { if(++RTK_CaliBaseTime_Cnt >= TKLib_CaliBaseTime) { RTK_CaliBaseTime_Cnt = 0; RTkCBTFlag = TKLib_TK_EN_MASK; if(++RTK_LongKeyBaseTime_Cnt >= TKLib_LongKeyBaseTime) { RTK_LongKeyBaseTime_Cnt = 0; RTkLBTFlag = TKLib_TK_EN_MASK; } } } //================================================================================ //功能:此程序是在触摸低功耗模式下,需要处理的操作,如有需要可增加操作程序 //说明:如有外部按键需退出触摸低功耗模式,可在此处增加相关程序确定是否需要退出触摸低功耗模式 // 可根据需求,判断系统是否需要强制唤醒(清Bit_LowPowerModeRun,强制唤醒系统) //================================================================================ void WDT_WakeUp_Handle(void) { #if TKLib_TouchLowerPower //为降低休眠的功耗,程序采用分组采样法,将所有需要唤醒的口最多分为两组去检测,能够有效降低功耗。 //当一组采样口大于1时,其采样数据不可作为单通道的数据,所以休眠时的数据跟正常工作时的数据是分开的, //如果进休眠时的环境值跟唤醒时的环境值相差比较大,那么就会出现唤醒后触摸释放不掉的问题。 //如果每组采样都只有一个通道时,采样的值可用作正常工作的值,可以通过下面的指令在休眠状态下更新正常工作的环境值。 // RTkGBuff0[0] = RTkLPGBuff0[0]; //只有一个按键时使用 // RTkGBuff0[1] = RTkLPGBuff0[1]; //只有一个按键时使用 // RTkGBuff0[2] = RTkLPGBuff0[0]; //只有一个按键时使用 // RTkGBuff0[3] = RTkLPGBuff0[1]; //只有一个按键时使用 // RTkGBuff1[5] = RTkLPGBuff0[2]; //有两个通道时使用 // RTkGBuff1[4] = RTkLPGBuff0[3]; //有两个通道时使用 // RTkGBuff1[3] = RTkLPGBuff0[2]; //有两个通道时使用 // RTkGBuff1[2] = RTkLPGBuff0[3]; //有两个通道时使用 //TKLib_TKLPGroup0_MASK,TKLib_TKLPGroup1_MASK使能唤醒脚也要按照顺序来, //比如TKLib_TKLPGroup0_MASK = 0x01;TKLib_TKLPGroup1_MASK = 0x02;是对的。 //比如TKLib_TKLPGroup0_MASK = 0x02;TKLib_TKLPGroup1_MASK = 0x01;是错的。 //注意:以上程序仅限于唤醒通道<=2时使用,并且每组检测只能检测一个通道。 //如果需要唤醒的口大于2时,不能使用上面的方法去更新环境值,我们可以利用外界唤醒变化缓慢的特性,间隔一段时间清Bit_LowPowerModeRun退出休眠去更新环境值。 //Bit_LowPowerModeRun = 0; //可根据需求,判断系统是否需要强制唤醒(清Bit_LowPowerModeRun,强制唤醒系统) #endif } //================================================================================ //功能:按键短按检测程序 //说明: //================================================================================ void file_Key1Scan(void) { if(F_TK0_On&&Reg_Key1check==0) //按下标志位为1 { if(++Reg_Key1Cnt>=300) { if(Reg_Led_Mode==0) { Reg_Led_Mode = 1; red = 1; green = 1; blue = 1; } else { red = 0; green = 0; blue = 0; LED_Duty = 0; qicai_time = 0; light_count = 0; led_count = 0; qicai_number = 0; qicai_on_off = 0; Reg_Led_Mode = 0; } // file_LED_Charge(); // LED输出放在定时器里面 Reg_Key1Cnt = 0; Reg_Key1check = 3; } } else { if(!F_TK0_On) //按下标志为0,释放判断 { if(Reg_Key1Cnt>=3&&Reg_Key1Cnt<300&&Reg_Led_Mode>0) { if(Reg_Led_Mode<2) Reg_Led_Mode++; else Reg_Led_Mode = 0; LED_Duty = 0; qicai_time = 0; light_count = 0; led_count = 0; qicai_number = 0; qicai_on_off = 0; // file_LED_Charge(); // LED输出放在定时器里面 Reg_Key1Cnt = 0; Reg_Key1check = 3; } if(Reg_Key1check>0) Reg_Key1check--; Reg_Key1Cnt = 0; } } } //================================================================================ //功能:按键长按检测程序 //说明: //================================================================================ void file_Key1Scan_Long(void) { if(bit_Key1_Long) //已经确认是长按 { //执行渐变程序 if(Bit_Inc_Dec) //为1时执行渐亮 { if(Reg_Duty<188) { Reg_Duty++; file_LED_Charge(); } } else //为0时执行渐暗 { if(Reg_Duty>6) { Reg_Duty--; file_LED_Charge(); } } } } //================================================================================ //功能:led输出子程序 //说明: //================================================================================ void file_LED_Charge(void) //正输出 { if(Reg_Led_Mode==0) //关机 { red = 0; green = 0; blue = 0; } if(Reg_Led_Mode==1) //白色 { red = 1; green = 1; blue = 1; } }改一下代码短触摸一次P61亮,短触摸第二次P61灭进入睡眠,其他功能都不要
07-30
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值