基于IAR和STM32的uCOS-II移植
SECTION
.text:CODE:REORDER(1)
OS_CPU_PendSVHandler;PendSV_Handler
B OS_CPU_PendSVHandler;PendSV_Handler
PUBWEAK OS_CPU_SysTickHandler;SysTick_Handler
SECTION .text:CODE:REORDER(1)
OS_CPU_SysTickHandler;SysTick_Handler
B OS_CPU_SysTickHandler;SysTick_Handler
(void)到main.c中。
#include "ucos_ii.h"
#include "os_cpu.h"
#include "stm32f10x.h" #define STARTUP_TASK_PRIO 10
#define STARTUP_TASK_STK_SIZE 64
OS_STK startup_task_stk[STARTUP_TASK_STK_SIZE]; //LED1任务
//设置任务优先级
#define LED1_TASK_PRIO 5
//设置任务堆栈大小
#define LED1_STK_SIZE 64
//创建任务堆栈空间
OS_STK LED1_TASK_STK[LED1_STK_SIZE]; //LED2任务
//设置任务优先级
#define LED2_TASK_PRIO 6
//设置任务堆栈大小
#define LED2_STK_SIZE 64
//创建任务堆栈空间
OS_STK LED2_TASK_STK[LED2_STK_SIZE]; void led1_task(void *p_arg);
void led2_task(void *p_arg); INT32U OS_CPU_SysTickClkFreq (void)
{
INT32U freq; RCC_ClocksTypeDef rcc_clocks; RCC_GetClocksFreq(&rcc_clocks); freq = (INT32U)rcc_clocks.HCLK_Frequency; return (freq);
} void LED_Init(void)
{ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED0-->PA.2 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA.2
GPIO_ResetBits(GPIOA,GPIO_Pin_2); //PA.2 输出高 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //LED1-->PB.12 端口配置, 推挽输出
GPIO_Init(GPIOB, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
GPIO_ResetBits(GPIOB,GPIO_Pin_12); //PB.12 输出高
} static void startup_task(void *p_arg)
{
INT8U err;
OS_CPU_SR cpu_sr=0; OS_CPU_SysTickInit(); #if (OS_TASK_STAT_EN > 0)
OSStatInit();
#endif OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断) err = OSTaskCreate(led1_task, (void *)0,
(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1], LED1_TASK_PRIO);
err = OSTaskCreate(led2_task, (void *)0,
(OS_STK*)&LED2_TASK_STK[LED2_STK_SIZE-1], LED2_TASK_PRIO); OSTaskSuspend(STARTUP_TASK_PRIO); //挂起起始任务.
OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断) if (OS_ERR_NONE != err)
while(1); OSTaskDel(OS_PRIO_SELF);
} int main(void)
{
LED_Init();
OSInit();
OSTaskCreate(startup_task, (void *)0,
(OS_STK*)&startup_task_stk[STARTUP_TASK_STK_SIZE-1],
STARTUP_TASK_PRIO);
OSStart();
return 0;
} //LED1任务
void led1_task(void *p_arg)
{
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_2);
OSTimeDly(500);
GPIO_SetBits(GPIOA,GPIO_Pin_2);
OSTimeDly(500);
}
} //LED2任务
void led2_task(void *p_arg)
{
while(1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_12);
OSTimeDly(500);
GPIO_SetBits(GPIOB,GPIO_Pin_12);
OSTimeDly(500);
}
}
基于IAR和STM32的uCOS-II移植的更多相关文章
- 基于ZigBee和STM32的智能家居控制系统的设计与实现(三)
基于ZigBee和STM32的智能家居控制系统的设计与实现(三) 自从前两篇博客介绍了智能家居系统的基本实现机理后,收到了好多朋友的来信,和我讨论了好多的这方面的知识,在此很高兴,虽然自己做的这个所谓 ...
- ucos ii 百度官方介绍
μC/OS II(Micro-Controller Operating System Two)是一个可以基于ROM运行的.可裁剪的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处 ...
- DE1-SOC开发板上搭建NIOS II处理器运行UCOS II
DE1-SOC开发板上搭建NIOS II处理器运行UCOS II 今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...
- 基于s5pv210嵌入式linux系统sqlite3数据库移植
基于s5pv210嵌入式linux系统sqlite3数据库移植 1.下载源码 http://www.sqlite.org/download.html 最新源码为3080100 2.解压 tar xvf ...
- 基于Petri网的工作流分析和移植
基于Petri网的工作流分析和移植 一.前言 在实际应用场景,包括PEC的订单流程从下订单到订单派送一直到订单完成都是按照一系列预先规定好的工作流策略进行的. 通常情况下如果是采用面向过程的编程方法, ...
- ucos ii 46个系统API函数解析
源: ucos ii 46个系统API函数解析
- FreeRTOS 和uCOS II的简单比较
转载:http://www.viewtool.com/bbs/forum.php?mod=viewthread&tid=114 这是两种RTOS, 现在粗略比较一下. freeRTOS比uCO ...
- 基于IAR平台FreeRTOS移植
开始这篇文章之前先简单说明一下,我使用的MCU是我们公司自主研发的ACH1180芯片,和STM32差不多,都是Cortex-M4的核,所以移植的过程参考了STM32移植的步骤. 1.解压FreeRT ...
- IAR为STM32创建工程模板(基于STM32f103zet6)
今天给小伙伴分享一篇给stm32新建工程模版 1.首先打开IAR,就是这个样子 2.再建一个目录文件夹 3.建立一个工作空间,以及建好工作空间如右图所示 4.接下来建立工程,Project------ ...
随机推荐
- iOS-不用微信SDK唤起微信支付
作者:TianBai 原文链接:http://www.jianshu.com/p/8930b4496023 要想知道微信SDK是如何调起微信客户端,那么咱们先看看微信SDK到底做了什么 前期准备 接入 ...
- 【hdu1005】Number Sequence
题目描述 一个数列的定义如下: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A和B,你要求出f(n). 输入 输 ...
- hdu 5802 Windows 10 (dfs)
Windows 10 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- OpenMP学习
当数据量较大或者时间复杂度高的时候,盲目地等待结果,开发效率极低. 听说OpenMP可以多核并行运算,加快运行速度.整理了一些OpenMP的资料,以待学习. 1.openMP的一点使用经验 2.Ope ...
- 【HTML5】HTML5 WebSocket简介以及简单示例
互联网发展到现在,早已超越了原始的初衷,人类从来没有像现在这样依赖过他:也正是这种依赖,促进了互联网技术的飞速发展.而终端设备的创新与发展,更加速了互联网的进化: HTTP/1.1规范发布于1999年 ...
- Linux:网络配置
网络配置 1.网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth0 1DEVICE=eth0 2 HWADDR=00:0C:29:93:41:2B 3 ...
- jsp页面图片显示不出来
jsp页面就是MyJsp.jsp <body> This is my JSP page. <br> <img src="img/top.jpg"> ...
- 【Java实战】源码解析为什么覆盖equals方法时总要覆盖hashCode方法
1.背景知识 本文代码基于jdk1.8分析,<Java编程思想>中有如下描述: 另外再看下Object.java对hashCode()方法的说明: /** * Returns a hash ...
- HDU 3345
http://acm.hdu.edu.cn/showproblem.php?pid=3345 最近重写usaco压力好大,每天写的都想吐.. 水一道bfs 注意的是开始旁边有敌人可以随便走,但是一旦开 ...
- Git 中文教程
以下内容转载自:http://www.open-open.com/lib/view/open1328928294702.html Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点 在于 ...