原创 UC/OS-II学习笔记--STM32移植(2)

2014-6-30 01:07 3403 17 22 分类: MCU/ 嵌入式 文集: OS

 

 

3.4  修改os_cpu_a.asm

将原来的 RSEG CODE:CODE:NOROOT(2)

  改成:

AREA |.text|, CODE, READONLY, ALIGN=2         ;AREA |.text| 选择段 |.text|。

                                                      ;CODE表示代码段,READONLY表示只读(缺省)

                                                      ;ALIGN=2表示4字节对齐。若ALIGN=n,这2^n对齐

THUMB                                         ;Thumb 代码

REQUIRE8                                      ;指定当前文件要求堆栈八字节对齐

PRESERVE8                                     ;令指定当前文件保持堆栈八字节对齐

 

3.5  修改os_dbg.c

由于编译器不同,使用keil时,需要把

#define  OS_COMPILER_OPT  __root

改成:

#define  OS_COMPILER_OPT  //__root

 

3.6  修改启动文件startup_stm32f10x_hd.s

由于我们是使用STM32自带的启动文件,所以需要在这里面设置OS_CPU的嘀嗒定时器中断向量,

因此把PendSV_Handler全部换成OS_CPU_PendSVHandler,一共就三处需要更换的;

 

步骤4  编写通用的必要文件

4.1 编写includes.h

    新建头文件,添加在user文件夹里,然后写入以下代码,所以用户的外设驱动头文件都应该被包含在这里面

#ifndef __INCLUDES_H

#define __INCLUDES_H

 

#include "stm32f10x.h"

#include "stm32f10x_rcc.h"

 

#include "uCOS_II.h"

#include "BSP.h"                //与开发板相关的函数

#include "app.h"

#include "led.h"

 

#endif

 

4.2   编写外设驱动文件 BSP.c 及头文件BSP.h

     BSP.c 至少应该包含两个函数

   1  void BSP_Init(void)

 {

    SystemInit();      /*stystem config as 72MHz*/

LED_GPIO_Config(); /*LED GPIO configuration */

 }

   2   void SysTick_init(void)

{

   SysTick_Config(SystemCoreClock/OS_TICKS_PER_SEC);

   /*初始化并使能SysTick定时器*/

}

 

头文件BSP.h

#ifndef __BSP_H

#define __BSP_H

 

void SysTick_init(void);

void BSP_Init(void);

 

#endif

 

 

4.3  修改stm32f10x_it.c

1)添加头文件:#include "includes.h"

2)注释掉原来的头文件://#include "stm32f10x_it.h"

3)在定时中断服务函数里加入以下代码:

void SysTick_Handler(void)

{

    OSIntEnter();

    OSTimeTick();

    OSIntExit();

}

 

 

4.4 编写app_cfg.h 来设置任务优先级和堆栈大小

#ifndef __APP_CFG_H__

#define __APP_CFG_H__

 

/***************设置任务优先级******************/

#define STARTUP_TASK_PRIO    4

 

/**********设置栈大小(单位为OS_STK)************/

#define STARTUP_TASK_STK_SIZE 80

#endif

 

4.5 编写app.c app.h 创建用户任务

 

4.6 编写main.c 主函数

#include "includes.h"

static OS_STK startup_task_stk[STARTUP_TASK_STK_SIZE]; //定义栈

int main(void)

{        

 BSP_Init();

 OSInit();

 OSTaskCreate(Task_LED,(void*)0,

 &startup_task_stk[STARTUP_TASK_STK_SIZE-1],STARTUP_TASK_PRIO);

 

 OSStart();

 return 0;

}

 

更详细的基于STM32的UC/OS移植,请看附件的野火教程。

文章评论5条评论)

登录后参与讨论

345002072_353389109 2013-1-23 11:58

谢谢

用户377235 2013-1-23 08:11

不错的笔记

用户1672521 2013-1-9 13:39

谢谢

345002072_353389109 2013-1-6 21:37

谢谢博主的鼓励,只是最近在忙做老师吩咐的示波器,还要看英文论文,压力山大啊。实在没有多少时间写博文连载,我尽量更新连载的。

用户403664 2013-1-5 14:35

期待博主的连载啊!
相关推荐阅读
啊左不是蜗牛 2015-01-28 09:21
【博客大赛】那样的人生,看不穿
         昨晚11点跟PM姐姐聊天,问她今晚要不要加班,她回:刚刚开发哥哥陪她出来打的。。。我以为我十点半从实验室回去已经够晚了。。我脸红了。        我问她为什么不早点回去...
啊左不是蜗牛 2015-01-13 19:41
【智能手机】三个观点说说国产手机未来
在此篇文章之前还有一个各大手机品牌的总结,请点击查看。 智能手机之论英雄出处      谈手机之前换个角度,类比一下PC领域。 PC领域毛利最高的时候,国产PC一直混在低端。随着时代发...
啊左不是蜗牛 2015-01-09 17:56
【智能手机】论英雄出处
我认为,如果你不知道对手的底细,那么你就很难战胜对手。知己知彼,百战百胜。所以,我简单地说说我对这几家手机品牌的看法。个人之见,欢迎讨论。   苹果: 1976年成立,在乔布斯这样的天...
啊左不是蜗牛 2014-11-19 13:48
【博客大赛】蜗牛求职记之华为篇
1、前言说明          蜗牛是电赛出身,本科做硬件嵌入式,画板子和写C程序,然后研究生阶段是转战android,但是由于项目涉及到硬件,导师项目众多,小伙伴少,于是我也负责部分st...
啊左不是蜗牛 2014-08-16 14:38
以另一种位图的思想来解决一道OJ题目
前言: 以前所接触到的位图的思想都是以1位的形式去存储某个数出现的次数是1次还是0次。常见的例子不外乎在《编程珠玑》上的开篇例子里,1千万个数的排序统计,用1.25M的内存空间就可以达到遍历一...
啊左不是蜗牛 2014-08-15 11:57
Android 笔记之 listview 性能优化
列表显示需要三个元素, (1)listview 视图,用来显示列表的View ; (2)适配器,用来把数据映射到listView上面的 (3)数据,具体将被映射的数据,包括字符串,图片...
我要评论
5
17
关闭 站长推荐上一条 /2 下一条