基于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------ ...
随机推荐
- nyoj151——中国剩余定理
生理周期 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 142220 Accepted: 45744 Descripti ...
- RedHat/CentOS 7通过nmcli命令管理网络教程
Red Hat Enterprise Linux 7 和CentOS 7 的网络管理实际上是对NetworkManager的管理,可通过nmcli命令进行控制,下面小编就给大家介绍下RedHat/Ce ...
- 【Python】什么是闭包
文章转载自:点这里 在 Python 中很多教材都没有提及什么是闭包,但在定义一个 Decorator 时,就已经用到闭包了.如果不理解什么是闭包,则不可能清晰掌握Decorator 装饰器. 要形成 ...
- Spring实例化bean的几种方式
一,通过constructor实例化bean Spring可以实例化各种类型的类,不要求必须是JavaBean类型的类.在XML中配置类如下: <bean id="exampleBea ...
- Linux:运行级别,root密码重置,救援模式,安装图形化界面
运行级别,root密码重置,救援模式,安装图形界面 运行级别 1.查看当前系统的运行级别 runlevel 2.认识各个运行级别以及开机自启运行级别 Linux系统运行级别共7个执行 vi /etc/ ...
- [AirFlow]AirFlow使用指南二 DAG定义文件
1. Example """ Code that goes along with the Airflow tutorial located at: https://git ...
- index、noindex、follow、nofollow的使用说明
爬虫是目前最常见的网络程序,曾经有过统计,说是目前的网络流量有一半以上是爬虫使用的.虽然爬虫程序随处可见,但是并不代表这种做法就是合理合法的. 在抓取网页时,我们要让自己的爬虫遵守Robot.txt协 ...
- swift metal ios8 关键字.
swift metal ios8 关键字. 4000API. 无所谓谁打败谁吧. 行业内用户用的多 资源多 问题容易解决. 今年明显unity 火热程度非常. 然,万变不离其中. 对于游戏产品来说, ...
- HttpUrlConnection使用Get和Post访问服务器的工具类(一)
首先我们有一个返回响应的接口HttpCallBackListener public interface HttpCallbackListener { void onFinish(String resp ...
- js之购物车案例
这里主要提供思路: 一共两个页面通过原生来实现,我们需要对cookie进行封装. 在商品列表页,我们将点击添加的商品放入一个对象中,而后将该对象放入数组中,一个对象可以说就是一个商品.在购物车页面 ...