当前位置:首页 > STM32CubeMX+FreeRTOS学习[5] 邮箱队列(Lu)
Step10.添加代码。
参考官方的Mail例程,添加应用代码。下载STM32CubeF1的支持包stm32cubef1 V1.4.0.zip解压,Mail例程路径为STM32Cube_FW_F1_V1.4.0\\Projects\\STM3210E_EVAL\\Applications\\FreeRTOS\\FreeRTOS_Mail。
在main.c文件中,自定义一个邮箱结构体,和一个osMailQId变量(实际上是一个指针)。
在main文件的/* USER CODE BEGIN 2 */和/* USER CODE END 2 */两个宏之间,创建邮箱队列,队列深度为15。
在main.c文件中,找到前面配置添加的两个任务函数,并在其中分别添加代码。 MailProducerTask的功能是,发送1次消息到邮箱队列,间隔一秒后发送1次,再间隔一秒发送1次,然后等待2秒。
MailConsumerTask的功能的,等待邮箱消息,然后根据消息的内容控制LED0和LED1闪烁次数。
Step11.编译下载运行。现象是,LED闪2次,一秒后闪3次,再过一秒闪4次,再等三秒,LED闪2次…如此循环。
程序分析: 和消息队列相比,邮箱队列的效率更高。因为消息队列传递消息时,是把消息的内容拷贝到队列存储空间中,而邮箱队列只传递消息的指针。所以,使用邮箱队列过程中,要保证邮件的内容是有效的,且发送至邮箱队列后到邮件被提取之前,不应该被修改。
S.D.Lu 于 深圳 2016年8月
共分享92篇相关文档