首页 > 编程知识 正文

领克01车头标志,标致5008

时间:2023-05-05 22:35:05 阅读:162498 作者:741

文章目录一、前言二、实验目的三、API3.1、osThreadFlagsSet3.2、osThreadFlagsWait四、代码4.1、main.h4.2、main.c五、Event Recorder调试5

一.前言

与“事件标志组”(Event Flags )类似,“线程标志组”(Thread Flags )用于线程(ISR )和线程之间的通信)同步。 线程和事件标志之间的区别在于,事件标志与线程没有直接关系,因此必须创建事件标志,然后才能使用。 线程标志是线程的一部分,在创建线程的同时会创建线程标志。

以下是公式的说明:

线程标志组API函数摘要:

STM32项目:

链接: https://pan.Baidu.com/s/10 uqntro9nutqnh0nwvhpea

抽屉代码: 60p1

二.长按实验目的KEY1键,将线程标志(0x02U )发送至Test_Flags_App线程,实现LED_App线程同步Test_Flags_App线程。

长按键KEY2向Test_Flags_App线程发送线程标志(0x01U ),以实现LED_App线程同步Test_Flags_App线程。

三. API 3.1、osThreadFlagsSet /*使用案例*/osthreadid _ test _ flags _ thread,0x02U ); Test_Flags线程的flag1*/osthreadflagsset (threadid _ test _ flags _ thread,0x01U ); Test_Flags线程的flag0*/osthreadflagsset (threadid _ test _ flags _ thread,0x08U ); Test_Flags线程的flag3 */

3.2、osthreadflagswaitvoidthread _ a (void * argument ) {uint32_t flags; while(1) (等待/*线程标志的flag0或flag1设置) ((/flags=osthreadflagswait )0x000003u、/* flag0、flag1)/osflagss */flags=osthreadflagswait (0x 000000 fu,/* flag0、flag1、flag2、flag3 /*线程标志的flag0、flag1、flag2、flag3被设置*/flags=osthreadflagswait (0x 000000 fu,/* flag0,flag1,flag2,flag3)

四.代码4.1,main.h

4.2、主. c

五.事件记录器调试5.1、长按键KEY1和长按键KEY2

5.2、线程同步的效果LED线程每500ms运行一次,当继续按下键时,Test_Flags线程与LED线程同步,每500ms运行一次。

5.3、将线程同步的地方扩大到LED线程的优先级是osPriorityLow,Test_Flags线程的优先级是osPriorityBelowNormal,Test_Flag线程的优先级要高许多。 当LED线程向Test_Flags线程发送线程标志时,调度程序启动,调度程序将执行权限传递给Test_Flags线程,LED线程暂时变为阻塞状态,Test_Flags的执行完成

再做一次测试,将LED线程与Test_Flags线程的优先级互换,即LED线程的优先级是osPriorityBelowNormal,Test_Flags线程的优先级是osPriorityLow

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。