RTX5 | 消息队列04 - (实战技巧)串口中断回调函数ISR同步线程

本文介绍了如何在STM32项目中利用消息队列进行线程同步,特别是串口中断与线程的协同工作。通过消息队列,中断回调函数快速发送消息,触发线程从阻塞态切换到运行态,从而高效处理串口数据。实验目的是使用串口助手发送字符同步线程A。提供了相关代码示例和调试方法。
摘要由CSDN通过智能技术生成

一、前言

在实际的项目上,消息队列主要用于线程同步。所谓线程同步就是一个线程或者ISR中断往某个消息队列发送一个消息后,触发调度器将另外一个线程(等待这个消息队列的线程)马上从阻塞态切换至运行态,读取消息与解析消息。线程标志组与事件标志组也可以用于线程同步,但是它们传递的消息只能是一个uint32的变量,所以传递的内容非常有限。
UART中断与CAN中断等ISR,我都会用消息队列同步一个线程来处理消息队列里的消息。这样做的好处是中断回调函数里的代码量少,执行时间短,符合“快进快出”的原则。借助消息队列的同步功能,读取与处理的线程会尽快执行。
在这里插入图片描述
Note:
通过消息队列,将ISR函数与线程同步运行是精通RTOS的必修课,务必掌握!

STM32工程:
链接:https://pan.baidu.com/s/1h4dPUhRAxZJw9fXSrGwrzQ
提取码:k2jk

二、实验目的

  1. 使用串口助手发送字符同步线程A。(一般情况下,线程A处于阻塞态。一直等待,直到串口中断回调函数ISR向消息队列发送字符时,才进行运行态。)

三、API

3.2、osMessageQueueGet

在这里插入图片描述

四、代码

4.1、main.h

在这里插入图片描述

4.2、stm32f1xx.it.c

板子上的UART转USB芯片连接USART1。
在这里插入图片描述

4.3、main.c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、Event Recorder调试

5.1、使用串口助手发送字符给单片机

在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wallace Zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值