当前位置: 首页 > news >正文

成都科技网站建设热竞价推广开户多少钱

成都科技网站建设热,竞价推广开户多少钱,apache 安装 wordpress,网站突然显示 建设中文章目录 前言一、uC/OS简介二、工程移植2.1 下载ucos源码2.2 创建空白工程2.3 拷贝ucosiii源码文件2.3.1 UC-CONFIG2.3.2 UC-CPU2.3.3 UC-LIB2.3.4 UC-OS3 2.3 添加工程文件分组及路径2.4 代码首次编译2.5 源码修改2.5.1 cpu_cfg.h2.5.2 os_cpu_c.c2.5.3 lib_cfg.h2.5.4 sys.h…

文章目录

  • 前言
  • 一、uC/OS简介
  • 二、工程移植
    • 2.1 下载ucos源码
    • 2.2 创建空白工程
    • 2.3 拷贝ucosiii源码文件
      • 2.3.1 UC-CONFIG
      • 2.3.2 UC-CPU
      • 2.3.3 UC-LIB
      • 2.3.4 UC-OS3
    • 2.3 添加工程文件分组及路径
    • 2.4 代码首次编译
    • 2.5 源码修改
      • 2.5.1 cpu_cfg.h
      • 2.5.2 os_cpu_c.c
      • 2.5.3 lib_cfg.h
      • 2.5.4 sys.h
      • 2.5.5 delay.c
      • 2.5.6 usart.c
      • 2.5.7 os_cpu_a.asm
      • 2.5.8 stm32f10x_it.c
    • 2.6 再次编译
  • 三、编译测试
    • 3.1 添加任务调度代码
    • 3.2 下载测试
  • 四、源码下载


前言

在网上查阅了许多关于uC/OS操作系统移植的问题,发现真的是鱼龙混杂 稀烂,缺胳膊少腿严重,到处踩坑,于是有了这篇博客,以下是我想与大家分享如何实现从0到1的移植。

这里我移植的是目前最新版本uC/OS-Ⅲ


一、uC/OS简介

走个流程,简单介绍下uC/OS

uC/OS(Micro-Controller Operating System)是由 Micrium 公司开发的一款 实时操作系统(RTOS),专为嵌入式系统设计,广泛应用于工业控制、汽车电子、消费电子等领域。

主要特点

  • 实时性强
  • 可移植性好
  • 模块化设计
  • 低资源占用
  • 高可靠性

适用场景

  • 工业自动化(PLC、HMI)
  • 汽车电子(ECU、车载信息娱乐系统)
  • 消费电子(智能家居、穿戴设备)
  • 航空航天(无人机、卫星控制)

版本分支

  • uC/OS-II(经典版本,适用于 8/16/32 位 MCU)
  • uC/OS-III(增强版,支持多核、时间片轮询调度)

uC/OS 因其 高实时性、稳定性和可裁剪性,成为嵌入式开发中广泛使用的 RTOS 之一。

二、工程移植

2.1 下载ucos源码

官网下载ucosiii源码(https://github.com/weston-embedded)
找到uC-OS3uC-CPUuC-LIB下载并解压
在这里插入图片描述

在这里插入图片描述

2.2 创建空白工程

第一步:创建空白工程,用于移植ucosiii(我这里选用正点原子的led灯例程)
在这里插入图片描述

第二步:在项目中创建UCOSiii文件夹,并在该文件夹创建uc-CONFIG、uc-CPU、uc-LIB、uc-OS3子文件夹
在这里插入图片描述
在这里插入图片描述

2.3 拷贝ucosiii源码文件

2.3.1 UC-CONFIG

打开空白工程中创建的uc-CONFIG子文件夹,拷贝如下文件

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.3.2 UC-CPU

打开空白工程中创建的uc-CPU子文件夹,拷贝如下文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.3 UC-LIB

打开空白工程中创建的uc-LIB子文件夹,拷贝如下文件
在这里插入图片描述
在这里插入图片描述

2.3.4 UC-OS3

打开空白工程中创建的uc-OS3子文件夹,拷贝如下文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 添加工程文件分组及路径

Keil工程添加文件分组、路径
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.4 代码首次编译

完成如上操作后编译,发现54error,别急,往下看
在这里插入图片描述

2.5 源码修改

2.5.1 cpu_cfg.h

打开文件cpu_cfg.h,将 #if 0修改为 #if 1
在这里插入图片描述

2.5.2 os_cpu_c.c

打开文件os_cpu_c.c,将#include “…/…/…/Source/os.h” 更改为 #include “os.h”
在这里插入图片描述

2.5.3 lib_cfg.h

打开文件lib_cfg.h,将DEF_DISABLED更改为DEF_ENABLED
在这里插入图片描述

2.5.4 sys.h

打开文件sys.h,打开ucos宏, 0–>1
在这里插入图片描述

2.5.5 delay.c

打开文件delay.c,将#include “includes.h”更改为#include”os.h”
在这里插入图片描述

2.5.6 usart.c

打开文件usart.c,将#include “includes.h”更改为#include”os.h”
在这里插入图片描述

2.5.7 os_cpu_a.asm

打开文件os_cpu_a.asm,将OS_CPU_PendSVHandler更改为PendSV_Handler

在这里插入图片描述
在这里插入图片描述

2.5.8 stm32f10x_it.c

打开文件stm32f10x_it.c,屏蔽或删除PendSV_Handler( )和SysTick_Handler( )函数
在这里插入图片描述

2.6 再次编译

在这里插入图片描述
至此,环境适配完成,准备烧录验证。

三、编译测试

3.1 添加任务调度代码

#include "sys.h"
#include "delay.h"
#include "led.h"#include "os.h"#define START_TASK_PRIO		3
#define START_STK_SIZE 		128
OS_TCB StartTaskTCB;
CPU_STK START_TASK_STK[START_STK_SIZE];void start_task(void *p_arg);
#define TASK1_TASK_PRIO		4
#define TASK1_STK_SIZE 		128
OS_TCB Task1_TaskTCB;
CPU_STK TASK1_TASK_STK[TASK1_STK_SIZE];
void task1_task(void *p_arg);#define TASK2_TASK_PRIO		4
#define TASK2_STK_SIZE 		128
OS_TCB Task2_TaskTCB;
CPU_STK TASK2_TASK_STK[TASK2_STK_SIZE];
void task2_task(void *p_arg);int main(void) 
{	OS_ERR err;CPU_SR_ALLOC();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);delay_init();	    LED_Init();		  OSInit(&err);		    CPU_CRITICAL_ENTER();	 OSTaskCreate((OS_TCB 	* )&StartTaskTCB,		(CPU_CHAR	* )"start task", 		(OS_TASK_PTR )start_task, 			(void		* )0,					(OS_PRIO	  )START_TASK_PRIO,     (CPU_STK   * )&START_TASK_STK[0],	(CPU_STK_SIZE)START_STK_SIZE/10,	(CPU_STK_SIZE)START_STK_SIZE,		(OS_MSG_QTY  )0,					(OS_TICK	  )0,					(void   	* )0,					(OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, (OS_ERR 	* )&err);			CPU_CRITICAL_EXIT();OSStart(&err);							 
} void start_task(void *p_arg)
{OS_ERR err;CPU_SR_ALLOC();p_arg = p_arg;CPU_Init();CPU_CRITICAL_ENTER();OSTaskCreate((OS_TCB 	* )&Task1_TaskTCB,		(CPU_CHAR	* )"Task1 task", 		(OS_TASK_PTR )task1_task, 			(void		* )0,					(OS_PRIO	  )TASK1_TASK_PRIO,     (CPU_STK   * )&TASK1_TASK_STK[0],	(CPU_STK_SIZE)TASK1_STK_SIZE/10,	(CPU_STK_SIZE)TASK1_STK_SIZE,		(OS_MSG_QTY  )0,					(OS_TICK	  )0,					(void   	* )0,					(OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,(OS_ERR 	* )&err);	OSTaskCreate((OS_TCB 	* )&Task2_TaskTCB,		(CPU_CHAR	* )"Task2 task", 		(OS_TASK_PTR )task2_task, 			(void		* )0,					(OS_PRIO	  )TASK2_TASK_PRIO,     (CPU_STK   * )&TASK2_TASK_STK[0],	(CPU_STK_SIZE)TASK2_STK_SIZE/10,	(CPU_STK_SIZE)TASK2_STK_SIZE,		(OS_MSG_QTY  )0,					(OS_TICK	  )0,					(void   	* )0,					(OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,(OS_ERR 	* )&err);		CPU_CRITICAL_EXIT();	OSTaskDel((OS_TCB*)0,&err);	
}void task1_task(void *p_arg)
{OS_ERR err;p_arg = p_arg;while(1){LED0=0;OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); }
}void task2_task(void *p_arg)
{OS_ERR err;p_arg = p_arg;while(1){LED0=1;OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); }
}

3.2 下载测试

在这里插入图片描述
经本人测试,实验效果过led灯闪烁,大家可下载下方源码自行验证,到此结束,谢谢。

四、源码下载

链接: https://pan.baidu.com/s/113vDqOzdq_ATz0m-14xtgg
提取码: c2h5

http://www.cadmedia.cn/news/6103.html

相关文章:

  • 什么软件可以做网站优化大师电脑版官网
  • 无货源电商一件代发怎么做seo关键词排名优化怎样收费
  • 在线室内设计工具杭州关键词优化平台
  • 江西核工业建设有限公司网站铁力seo
  • 无证做音频网站违法吗seo网站整站优化
  • 建设部执业考试网站市场营销计划方案
  • 广告策划方案西安seo关键词推广
  • 入口网站推广最新的疫情信息
  • 嘉兴市建设局网站网络推广有几种方法
  • 长春网站建设专业公司最大的推广平台
  • 莱芜共青团网站app开发工具哪个好
  • 黑马程序员官方网站百度广告推广怎么做
  • 德育工作网站建设方案郑州网站制作公司哪家好
  • 简述电子商务网站建设的基本要求6哈尔滨seo服务
  • 江津集团网站建设为什么外包会是简历污点
  • 建设网站的企业邮箱网站建设服务广东企业网站seo哪里好
  • 营销型企业网站建设教案seo优化排名易下拉用法
  • asp做网站用什么写脚本如何做网络营销?
  • 网站建设的目的及功能定位是啥北京刚刚传来特大消息
  • 如何从建设局网站上更换职称人员百度推广的优势
  • 在线生成个人网站推荐seo快速排名软件平台
  • 怎么看网站是谁做的竞价点击软件工具
  • 电商网站设计seo关键词快速排名前三位
  • 网站建设备案查询青岛网站建设制作推广
  • 太原建站模板源码合肥seo报价
  • 贵阳网站建设哪家好最近七天的新闻重点
  • 网站建设属于淘宝哪种类目湖南靠谱关键词优化
  • 个人网站的制作步骤最近的新闻有哪些
  • 服装 东莞网站建设石家庄seo报价
  • 网站设计布局企业品牌推广策划方案