GW3323 OS使用记录
当两个线程优先级相同时,两个线程的while(1)中,必须要使用 delay_5ms(),给两个相同优先级的线程相互打断的时间,不然会卡死在一个任务中,退出不了,如图为相同优先级的例程,:https://alidocs.dingtalk.com/core/api/resources/img/5eecdaf48460cde538b3ffb2a461a4b76cd2765f1144c52e91ff1ac8adf83e6bd31a09ccfd9c229465a117e9692870647a928f062610a7cdc06e418267feb22231ecf560d2c715853ae413e808b978c60dd4c2e62e4ff99c149565b860957ab4?tmpCode=7beee294-9e5f-4fec-8cdb-b3ab54808e68
https://alidocs.dingtalk.com/core/api/resources/img/5eecdaf48460cde538b3ffb2a461a4b76cd2765f1144c52e91ff1ac8adf83e6bd31a09ccfd9c229465a117e969287064a3832625dea8a645bc2322503ed253c8882d292dab217c7483b99f66391884a355909bf94f69efbb62a74c4c60796216?tmpCode=7beee294-9e5f-4fec-8cdb-b3ab54808e68
https://alidocs.dingtalk.com/core/api/resources/img/5eecdaf48460cde538b3ffb2a461a4b76cd2765f1144c52e91ff1ac8adf83e6bd31a09ccfd9c229465a117e9692870644c63518a22c252789774008195b47aa5a1ad325a85589178cb0f1458499560756982fd5ca5a84b35f39f100446eb8627?tmpCode=7beee294-9e5f-4fec-8cdb-b3ab54808e68
当两个线程一个为高优先级,一个为低优先级时,高优先级的的delay_5ms()的时间,为低优先级程序运行的时间,如低优先级没运行完,也会被高优先级的任务打断,故需在高优先级处留够足够多的时间,如图,高优先级留50ms的时间给低优先级:
https://alidocs.dingtalk.com/core/api/resources/img/5eecdaf48460cde538b3ffb2a461a4b76cd2765f1144c52e91ff1ac8adf83e6bd31a09ccfd9c229465a117e969287064201df797cc7e149a2a3a17c9e4b4aca3d2c19ba36f8e5ef11b6636321605ffec9c3a8cf8a28860eaa5f44275aa76f220?tmpCode=7beee294-9e5f-4fec-8cdb-b3ab54808e68
https://alidocs.dingtalk.com/core/api/resources/img/5eecdaf48460cde538b3ffb2a461a4b76cd2765f1144c52e91ff1ac8adf83e6bd31a09ccfd9c229465a117e969287064801cafdc9aaf1762a0db6efad073cd703a6c3a1c199300b3f9c42ce5d3506b44f92596139ea2cc76a900dfd662445084?tmpCode=7beee294-9e5f-4fec-8cdb-b3ab54808e68
https://alidocs.dingtalk.com/core/api/resources/img/5eecdaf48460cde538b3ffb2a461a4b76cd2765f1144c52e91ff1ac8adf83e6bd31a09ccfd9c229465a117e9692870641daebbd2621c49dda2608a964435e454f9bafe666d0cc4cc7bb9d910a1fd8d6aa89af5c9d33d4928db36240b59277002?tmpCode=7beee294-9e5f-4fec-8cdb-b3ab54808e68
主函数任务优先级为12,故,此时程序也可跑到主函数中,usb的枚举与数据传输都没问题,只是会慢很多https://alidocs.dingtalk.com/core/api/resources/img/5eecdaf48460cde538b3ffb2a461a4b76cd2765f1144c52e91ff1ac8adf83e6bd31a09ccfd9c229465a117e969287064593c6cd47f25038f5ee52b9fbdc063b340f677c65e8617c1f572040c7b33aac9c4d60bdbf021d4eba900dfd662445084?tmpCode=7beee294-9e5f-4fec-8cdb-b3ab54808e68
重要的一点:如果要在线程中更改蓝牙的相关东西,那么线程的优先级不能比蓝牙的优先级高
确实,线程同步和优先级管理在多任务系统中非常重要。你分享的这些经验对于避免死锁和确保任务公平执行非常有帮助。
有图吗 ?我刷不出来啊 !!!
页:
[1]