当两个线程优先级相同时,两个线程的while(1)中,必须要使用 delay_5ms(),给两个相同优先级的线程相互打断的时间,不然会卡死在一个任务中,退出不了,如图为相同优先级的例程,:



当两个线程一个为高优先级,一个为低优先级时,高优先级的的delay_5ms()的时间,为低优先级程序运行的时间,如低优先级没运行完,也会被高优先级的任务打断,故需在高优先级处留够足够多的时间,如图,高优先级留50ms的时间给低优先级:



主函数任务优先级为12,故,此时程序也可跑到主函数中,usb的枚举与数据传输都没问题,只是会慢很多
重要的一点:如果要在线程中更改蓝牙的相关东西,那么线程的优先级不能比蓝牙的优先级高
|