注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
Megamind的个人空间 https://home.eeworld.com.cn/space-uid-386988.html [收藏] [复制] [分享] [RSS]
日志

uC/OS-II在STR750上的移植

已有 961 次阅读2012-1-10 22:05

這是我們一門課的大作業,目標板是STR750開發板,跟大家分離一下。

 

在uC/OS-II中四个任务,第一个是对AD的采样值进行处理;

第二、第三个任务分别是数码管显示的高位和低位,但注意如果只这样写的话只能显示一个数字,因为两个字共用P0口,第二个任务挂起后,第三个任务的数据马上就会送到P0口,而把第二个任务的数据冲掉,我的解决办法是改os_cpu_c.c文件中的OSTimeTickHook ()函数,该函数是在每次时钟中断,即任务切换时调用,所以我在每次切换时挂起一个,Resume另一个,这样就解决了;

其实也可以把第二、第三个任务合成一个任务,写成这样:

 void Task2(void)
{
  while(1)
  {
      Display(Count1,1);
      OSTimeDlyHMSM(0, 0, 0, 20);
      Display(Count0,0);      
      OSTimeDlyHMSM(0, 0, 0, 20);
  }
}

我是觉得任务太少不太好,还有就是想练习一下前面的那种方法。

第四个任务是LED的闪烁,用来指示任务正在调试。而AD的采样值是中AD中断服务程序ADC_IRQHandler()中读取的,通过BSP_VectSet(ADC_IRQChannel, ADC_IRQHandler)函数把ADC_IRQHandler()的地址传给底层函数,然后就不用我们管了,记得打开该模块的EIC中断。

       任务间的通信是通过全局变量实现的,因为移植消息邮箱没有成功,我怀疑是硬件资源不够用的原因。如果有谁成功的话,请教我一下,谢谢。

 

我的邮箱是:464056226@qq.com,欢迎大家和我讨论。

 

附件是我的源代码,用IAR集成开发环境开发的。

本文含有来自论坛的附件或图片:[Int uCOSII.rar],点击查看原帖附件。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章