野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9752|回复: 1

uC/OS 邮箱通信用法?

[复制链接]
发表于 2017-7-18 00:07:01 | 显示全部楼层 |阅读模式
各位好,最近在学习 uC/OS 2.91 的移植,尝试做一个简单的功能,利用按键产生中断,然后再中断里面用 uC/OS 的邮箱传变量到任务去,改变 LED 灯的状态,现在的问题是,邮箱通信不成功,不知道是中断的时候没发送,还是接受不成功。
这个是任务代码,还有邮箱的接收。
  1. static void App_TaskCreate(void *p_arg)
  2. {
  3.         (void)p_arg;
  4.         EXT9_5_LED_MBOX = OSMboxCreate((void *)0);
  5.         OSTaskCreate(Task_KEY_LED,(void *)0,
  6.            &task_key_led_stk[TASK_KEY_LED_STK_SIZE-1], TASK_KEY_LED_PRIO);
  7. }

  8. static void Task_KEY_LED(void *p_arg)
  9. {
  10.         INT8U err;
  11.         unsigned char LED_SW;
  12.         (void)p_arg;
  13.         while(1)
  14.         {
  15.                 LED_SW = *((unsigned char *)OSMboxPend(EXT9_5_LED_MBOX,0,&err));
  16.                 if(LED_SW == 1)
  17.                 {
  18.                         LED1( ON );
  19.                         LED2( OFF);
  20.                         LED3( OFF);
  21.                 }
  22.                 if(LED_SW == 2)
  23.                 {
  24.                         LED1( OFF);
  25.                         LED2( ON);
  26.                         LED3( OFF);
  27.                 }
  28.                 if(LED_SW == 3)
  29.                 {
  30.                         LED1( OFF);
  31.                         LED2( OFF);
  32.                         LED3( ON );
  33.                 }
  34.         }
  35. }
复制代码
这个是中断子程序邮箱的发送代码

  1. void EXTI9_5_IRQHandler(void)
  2. {        
  3.         OS_CPU_SR cpu_sr;
  4.         OS_ENTER_CRITICAL();
  5.         OSIntNesting++;
  6.         OS_EXIT_CRITICAL();
  7.         if(EXTI_GetITStatus(EXTI_Line5) != RESET) //确保是否产生了EXTI Line中断
  8.         {
  9.                 KEY_Count++;
  10.                 if(KEY_Count > 3)
  11.                 {
  12.                         KEY_Count = 1;
  13.                 }
  14.                 OSMboxPost(EXT9_5_LED_MBOX,(void *)&KEY_Count);
  15.                 EXTI_ClearITPendingBit(EXTI_Line5);     //清除中断标志位
  16.         }  
  17. }
复制代码



回复

使用道具 举报

发表于 2017-7-18 08:46:50 | 显示全部楼层
跟ucosIII的消息队列差不多,可以参考我们的例程
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 11:16 , Processed in 0.043662 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表