你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

uC/OS 邮箱通信用法?

[复制链接]
mylovedream 提问时间:2017-7-16 16:27 /
各位好,最近在学习 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. }
复制代码


收藏 评论1 发布时间:2017-7-16 16:27

举报

1个回答
MrJiu 回答时间:2017-7-17 09:55:37
不太熟悉UCOS,只用FreeRTOS

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版