移植好的IAR520_STM32_uCOS-II V2.86代码

发布: 2008-11-17 11:18 | 作者: Tomato | 来源: StmFans思蜕盟 OPELC 自由电子联盟

,等版主加

IAR_STM32_uCOS-II V2.86.rar
(2008-11-17 11:22:13, Size: 1.98 MB, Downloads: 1060)

littleworm (2008-11-17 11:51:53)
下载来看看那  谢谢 tomato 的分享
也准备搞一下ucos呢  呵呵
littleworm (2008-11-17 12:27:13)
问一下 一个电脑上 能 同时装 IAR442  和 IAR520 么??????

看了一下楼主的共享 工程共啥的都有 呵呵
不过还没用过 IAR520 电脑上也没装 暂时玩不了 呵呵
所以 打算把520也装上 嘿嘿
Tomato (2008-11-17 12:45:16)
我电脑上装了3个版本的IAR ARM, IARARM4.42KS-32K,IARARM4.42-EVL,IARARM5.20-EVL

他们互不影响,都很好用

IARARM5.20 在C编译器处理方式上做了改进,是为了和GCC和 RealView 接轨,把参数传递和数据段处理做了改进,更简单明白了,,这是为了在GCC和 RealView 下可以互相移植

而IARARM4.42编译器好像是IAR独特的处理方式,与5.0以上的编译器项目不兼容,而且不可以自动转换
littleworm (2008-11-17 12:52:41)
哦 好的 娃哈哈哈
谢谢 Tomato  
那我下午把520给装了 呵呵
在STM32上跑ucos 应该很爽 呵呵
不过还没玩过呢
不懂的地方 还望 Tomato  多多指教哈
m7w (2008-11-17 13:11:10)
加分!加分!

谢谢 番茄!
jasonjee (2008-11-17 13:11:23)
很不错,顶一下
aleyn (2008-11-17 13:25:08)
支持移值,还有,能不能请 番茄 加上简单的说明? 谢谢
c51avr (2008-11-18 11:28:51)
好呀!希望楼主写写心得
Tomato (2008-11-18 15:41:26)
本想好好写写,可是又不知道写什么,因为确实不难,写多了也是啰嗦基础东西,但是书上比我讲的清楚多了

其实移植uCOS很简单,就是改动改动OS_CPU_A.ASM和中断

OS_CPU_A.ASM我已经注释很清楚了,不理解和不懂的可以和我交流,我就是番茄

向量表就动了2行,14,15号中断
  SVCHandler,                               // 11
  DebugMonitor,                             // 12
  0,                                        // 13 保留
  OS_CPU_PendSVHandler,                     // 14 PendSV 用于系统调度
  OS_CPU_SysTickHandler,                    // 15 系统Tick
  WWDG_IRQHandler,                          // 16
  PVD_IRQHandler,                           // 17
  TAMPER_IRQHandler,                        // 18

OS_CPU_PendSVHandler是汇编的,在OS_CPU_A.ASM里面

Tick处理也就几句话。。。

void  OS_CPU_SysTickHandler (void)
{
    OS_CPU_SR  cpu_sr;


    OS_ENTER_CRITICAL();
    OSIntNesting++;
    OS_EXIT_CRITICAL();

    OSTimeTick();

    OSIntExit();
}
其实也没什么的,不理解和不懂就问我吧,那样我反而知道怎么讲了重点了
littleworm (2008-11-18 15:54:50)
代码可以跑  呵呵 里面的四个闪烁LED的进程也跑起来了
不过我的灯还没亮 不知道楼主的灯亮起来了没
呵呵 没搞过ucos  见笑了


未命名.jpg

littleworm (2008-11-18 16:00:03)

QUOTE:

原帖由 Tomato 于 2008-11-18 15:41 发表
本想好好写写,可是又不知道写什么,因为确实不难,写多了也是啰嗦基础东西,但是书上比我讲的清楚多了

其实移植uCOS很简单,就是改动改动OS_CPU_A.ASM和中断

OS_CPU_A.ASM我已经注释很清楚了,不理解和不懂的可以和我交流,我就 ...
呵呵 先谢谢了

我在APP_TaskStart修改了时钟设置

        // 打开控制端口时钟   
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOD, &GPIO_InitStructure);

然后 每个点LED灯的程序也修改了的

static void Task1_LED1(void *pdata)
{
    pdata = pdata;
    while(1)
    {
        GPIO_ResetBits(GPIOD, GPIO_Pin_2);
        OSTimeDly(OS_TICKS_PER_SEC * 2);
        GPIO_SetBits(GPIOD, GPIO_Pin_2);
        OSTimeDly(OS_TICKS_PER_SEC * 2);
    }
}

调试也运行到进程里面了 就是不亮 是不是哪里的时钟初始化没搞对啊 呵呵 谢谢Tomato 指教
Tomato (2008-11-18 17:56:32)
首先看看任务是不是被切换过


List.JPG



如果任务被切换过,说明只是硬件LED驱动问题
littleworm (2008-11-18 17:58:43)
好的 我现在就跑一段时间看看
littleworm (2008-11-18 19:13:33)
搞定了  四个LED啊 一闪一闪亮晶晶啊
呵呵 谢谢番茄大哥的指导教诲
STM32 (2008-11-18 19:18:28)
恭喜恭喜

请问原来是什么原因引起任务没跑起来导致LED没闪呀闪的?
Tomato (2008-11-19 00:11:58)
我也想知道,原来为什么不闪动
littleworm (2008-11-19 10:03:36)

QUOTE:

原帖由 Tomato 于 2008-11-19 00:11 发表
我也想知道,原来为什么不闪动
呵呵 不是代码的问题 是JLINK的问题 我没设置好JLINK  造成JLink在调试的时候一死一活的
单步调试一下 就要N秒钟 估计是这个因素 导致STM32系统的时钟出错 所以 代码执行也有问题了
估计的 呵呵
yyjslna (2008-11-20 20:59:31)
要多看些!
yayongzhang (2008-11-26 12:56:56)
不错,要多看些,多学习些!
c51avr (2008-11-27 15:02:43)
请问楼主,这个移植程序你现在在使用吗?