移植ucosII到STM32F103ZE(六)

发布者:技术旅人最新更新时间:2015-10-23 来源: eefocus关键字:移植  ucosII  STM32F103ZE 手机看文章 扫描二维码
随时随地手机看文章
一、        例程测试:
1.      编写includes.h文件
#ifndef  __INCLUDES_H__ 
#define  __INCLUDES_H__ 
 
//#include     
//#include     
//#include     
//#include     
//#include     
 
#include     
#include     
 
#include    "ucos_ii.h" 
 
#include     
#include     
 
//#include   
 
#endif
 
2.      编写Bsp.h和Bsp.c文件
Bsp.h文件,板级驱动文件。
#ifndef  __BSP_H  
#define  __BSP_H  
 
#define  GPIO_PORT_LED         GPIOF  //根据自己板子情况修改 
#define  RCC_GPIO_PORT_LED    RCC_APB2Periph_GPIOF  //根据自己板子情况修改 
#define  GPIO_Pin_led1          GPIO_Pin_6   //根据自己板子情况修改 
#define  GPIO_Pin_led2          GPIO_Pin_7   //根据自己板子情况修改 
 
#define  LED1    
#define  LED2    
 
void     BSP_Init(void); 
void     led_on(uint32_t n);  
void     led_off(uint32_t n); 
  
#endif 
Bsp.c文件
#include  
 
static  void  BSP_LED_Init(void); 
//  static  void  BSP_KEY_Init (void);  
 
void  BSP_Init (void) 
 
     SystemInit(); 
     BSP_LED_Init();                  
//  Init_Uart_on_Chip(9600); 
//  BSP_KEY_Init();   

 
static  void BSP_LED_Init(void)  
  
     GPIO_InitTypeDef GPIO_InitStructure;  
 
     RCC_APB2PeriphClockCmd(RCC_GPIO_PORT_LED, ENABLE) ;  //使能时钟 //根据自己板子情况修改 
 
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_led1|GPIO_Pin_led2; //根据自己板子情况修改 
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  
     GPIO_Init(GPIO_PORT_LED, &GPIO_InitStructure); //根据自己板子情况修改 
 
 
void led_on(uint32_t n)  
  
     switch (n)  
     
          case LED1:  GPIO_SetBits(GPIO_PORT_LED, GPIO_Pin_led1);
                      break;  
          case LED2:  GPIO_SetBits(GPIO_PORT_LED, GPIO_Pin_led2);
                      break;  
          default:    
                       break;  
     
 
void led_off(uint32_t n) 
  
     switch (n)  
     
          case LED1:  GPIO_ResetBits(GPIO_PORT_LED, GPIO_Pin_led1);   break;  
          case LED2:  GPIO_ResetBits(GPIO_PORT_LED, GPIO_Pin_led2);   break;   
          default:  break;  
     }
}
3.      编写app_cfg.h和app.c文件
app_cfg.h
  
#define STARTUP_TASK_PRIO                    
#define LED1_TASK_PRIO                         
 
  
#define STARTUP_TASK_STK_SIZE                  80
 
#define LED1_TASK_STK_SIZE                      80
app.c文件
#include
static  OS_STK  startup_task_stk[STARTUP_TASK_STK_SIZE];   //开开辟任务堆栈 
static  OS_STK  led1_task_stk[LED1_TASK_STK_SIZE ];    //开辟任务堆栈 
static void systick_init(void); //函数声明 
  
static void systick_init(void)  
 
        RCC_ClocksTypeDef  rcc_clocks;  
        RCC_GetClocksFreq(&rcc_clocks);   //调用标准库函数,获获取系统时钟。 
        SysTick_Config(rcc_clocks.HCLK_Frequency / OS_TICKS_PER_SEC); //初始化并使能 SysTick
                                  //OS_TICKS_PPER_SEC 是在 os_cfg.h 中定义的 

 
static void led1_task (void *p_arg) 
    
    p_arg=p_arg;      //防止编译器产生警告 
     while(1)
              
            
           led_on(LED1); 
           OSTimeDlyHMSM(0,0,1,0);  //1s 延时,释放 CPU 控制权  
           led_off(LED1); 
           OSTimeDlyHMSM(0,0,1,0);         //1s 延时,释放 CPU 控制权 
    

 [page]
static void startup_task(void *p_arg)  
     
        systick_init();      
  
           
          OSTaskCreate(led1_task, 0,
&led1_task_stk[LED1_TASK_STK_SIZE - 1],
LED1_TASK_PRIO);  
           
          while(1)  
         
               
              led_on(LED2); 
              OSTimeDlyHMSM(0,0,0,500);   //500ms 延时,释放 CPU 控制权 
              led_off(LED2); 
              OSTimeDlyHMSM(0,0,0, 500);   //500ms 延时,释放 CPU 控制权 
                 
    
  
int main(void)  
     
        BSP_Init(); 
        OSInit();  
          // g_TxMbox=OSMboxCreate((void*)0); //创建全局信号-消息邮箱 
        OSTaskCreate(startup_task, (void *)0,  
              &startup_task_stk[STARTUP_TASK_STK_SIZE - 1],  
              STARTUP_TASK_PRIO);  
         OSStart();  
         return 0;  
    
 
最后再设置 keil选项卡:  
 
a)      设置工程输出路径到 ProjectOutput 下;
移植ucosII到STM32F103ZE(六)   

b)      设置工程 Listing 路径到ProjectList 下; 
移植ucosII到STM32F103ZE(六)


 
c)      设置头文件包含路径: 
移植ucosII到STM32F103ZE(六)

 

关键字:移植  ucosII  STM32F103ZE 引用地址:移植ucosII到STM32F103ZE(六)

上一篇:移植ucosII到STM32F103ZE(七)
下一篇:移植ucosII到STM32F103ZE(五)

推荐阅读最新更新时间:2024-03-16 14:37

linux-3.0移植到FL2440(只做基本的移植
首先补丁包来自凌云实验室: 1.先打补丁: patch -p1 ../linux-3.0-s3c2440.patch 2.修改 Makefile: ARCH ?= arm CROSS_COMPILE ?= arm-linux- 3.修改补丁的错误: 在/arch/arm/plat-s3c24xx/devs.c //#ifdef CONFIG_SND_SOC_SAMSUNG_S3C24XX_UDA134X /* UDA1341 add by guowenxue, 2012.03.30 */ //注释掉 . . . //#endif 4.make s3c2410_defconfig 5.裁剪
[单片机]
S3C2416裸机开发系列十七_GCC下Fatfs的移植
对于固态存储器,其存储容量可以很大,往往需要一款文件系统对存储器用户数据进行组织文件的管理。它对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索。在嵌入式系统中,往往需要采用windows兼容的文件系统,像相机的照片、视频监控、语音产品等,很多都需要从windows计算机上提取资源或在windows计算机上进一步处理。Fatfs由于其开源免费,支持fat32,受到了广泛的应用,笔者此处就s3c2416移植Fatfs,对sd卡进行读写访问作一个简单的介绍。 1. Fatfs概述 Fatfs是由日本工程师ChaN所编写的fat文件系统模块,从06年发布第一个Fatfs版本开始,作者就从未停止维护和更新。Fat
[单片机]
STM32F103移植到AT32F403A之MDK(二)
上一篇我们已经实现了不改硬件,只改软件情况下将STM32F103C8T6替换为AT32F403ACGT7的过程,但毕竟STM32F103C8T6已经是10多年前的东西了,用现在的AT32F403ACGT7替换实在是大材小用了,毕竟这颗是主频能到240M的M4。 上篇我们解决了替换能用的问题,本篇我们来结合AT32F403ACGT7的优势,实现不改硬件只改BOM降成本的方法。 从接触MCU开始,MCU外围电路中就缺少不了很重要的器件,那就晶振,晶振是MCU的时钟源。随着技术的不断发展,越来越多的MCU将晶振集成到了MCU内部,但集成到内部后真的就能够省略掉外部晶振吗,当然不是,由于技术和工艺问题,前些年的MCU还无法完全摆脱
[单片机]
STM32F103<font color='red'>移植</font>到AT32F403A之MDK(二)
一文了解移植3.4.2的Kernel到JZ2440
本文将介绍如何移植linux-3.4.2内核到JZ2440开发板上的全过程,使用的交叉编译工具版本为 arm-linux-gcc-4.3.2.tar.bz2 下面来一步一步介绍如何移植。 由于kernel的启动参数是由Uboot传递的,关键的参数有 R0=0 R1=Mach-Type R2=Tag参数地址 其中,Mach-Type为内核支持板子的硬件型号,tag参数为Uboot存放传递给Kernel参数的内存地址。 内核启动时,根据传入的Mach-Type参数选择对应的板级初始化函数来初始化,然后解析tag参数,设置相应系统状态值,装载驱动程序,最后挂载根文件系统。 1. 编译内核 修改根目录下面的Make
[单片机]
移植u-boot-2010.09到S3C2440(一)——硬件初始化与测试
在u-boot的代码选择中,只有201009是最近的可直接编译通过的,不带memset.s的u-boot版本。 屏蔽lowlevel_init的调用之后,将我在u-boot-201112版本中所做的硬件初始化全部挪到本版本中,包括串口驱动的修改,时钟设置,LED的点亮。 这个时候通过开发板自带的u-boot写到SDRAM调试就直接有串口输出与提示符。 注:本系列文档只注释难点部分,其它略过。
[单片机]
人体器官移植突破:男子植入3D打印椎骨获新生
如今已经两个多月过去了,约塞夫斯基的恢复情况相当不错。    据外媒报道,人体器官移植频传福音,3D打印再写医疗新里程。澳大利亚医生为一名患了癌症的男子进行一项全球第一例手术,替他移除被癌细胞严重破坏的椎骨,再为他植入一条用3D打印技术打印出来旳椎骨。该病人现时康复的进展良好,重获新生。   据报道,病人约塞夫斯基患了脊索瘤,是一种十分罕见的癌症。癌细胞攻击他的脊椎和头骨,并在他的颈项上方位置生长,令他饮食和说话都有困难。医学界估计,每100万人当中,只有一人患上这种病。   去年12月,神经科医生莫布斯为他进行长达15小时的手术,移除本来的椎骨,植入3D打印的脊骨。   莫布斯称,“如果不动手术,又不进行
[医疗电子]
Fedora8上交叉编译qtopia4移植成功到s3c2410开发板
教程是这样的: 一.硬件平台 1.主机: PC机,512M内存以上。 2.目标机: UP-NetARM2410-S实验平台。 二.移植软件资源 1.Red Hat Linux 9.0(主机操作系统) 2.gcc-3.4.1.tar.gz(主机编译器) 3.arm-linux-gcc-3.4.1.tar.bz2(交叉编译器) 4.tslib-1.3.tar.bz2(管理目标平台的触摸屏) 5.qtopia-opensource-src-4.2.1.tar.gz(包含Qt, Qtopia core) 2 . GUI(QT)的移植过程 编译前的约定: 1)我的工作目录为:/mnt/nfs。 2)qtopia-o
[单片机]
U-Boot在基于ADSP BF533的嵌入式Linux系统上的移植
1 引言 Boot Loader(内核引导程序)是在操作系统内核运行之前运行的一段自举程序,用于初始化硬件设备、改变处理器运行模式、重组中断向量和建立内存空间映射图,从而将系统的软硬件带到一个合适的状态或者用户定制的特定状态,以便为最终加载操作系统内核准备好正确的环境 。 嵌入式Linux系统常用的Boot Loader有arm-boot、redboot、U-Boot等。U-Boot (全称Universal Boot Loader)是当前比较流行的遵循GPL条件的开放源码项目。U-Boot具有源码公开的特点,开发人员可根据自身需要进行裁减;支持多种处理器和嵌入式操作系统内核;具有多种设备驱动源码:支持种引导方式;具有功能强大
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved