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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版