- 博客(17)
- 资源 (7)
- 收藏
- 关注
原创 UCOS-II任务设计
UCOS-II任务设计任务函数的结构:在用户任务函数中,必须包含至少一次对操作系统服务函数的调用,否则比其优先级低的任务将无法得到运行的机会,这是用户任务与普通函数的明显区别。任务函数按照执行方式分为三类:单次执行、周期执行、事件触发三类。单次执行的任务:此类任务只执行一次,执行后就自行删除。void MyTask (void *pdata) //单次执行的任务函数{
2017-04-20 14:59:21
2164
原创 UCOS-II内存管理
内存管理: 我们知道,在 ANSI C 中可以用 malloc()和 free()两个函数动态地分配内存和释放内存。但是,在嵌入式实时操作系统中,多次这样做会把原来很大的一块连续内存区域,逐渐地分割成许多非常小而且彼此又不相邻的内存区域,也就是内存碎片。由于这些碎片的大量存在,使得程序到后来连非常小的内存也分配不到,我们讲到过用 malloc()函数来分配堆栈时,曾经讨论过内存碎片的问题。另
2017-04-20 11:03:41
1122
原创 UCOS-II任务间通信(信号量、邮箱、消息队列)
保护任务之间的共享数据和提供任务之间的通讯方法:利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来关闭和打开中断,这可以用于多任务或者任务和ISR共享某些数据时可以采用这种方法。利用OSSchedLock()和OSSchedUnlock()对uC/OS-II中的任务调度器上锁和开锁。利用信号量、邮箱和消息队列。 一个任务或者中断服务子程序
2017-04-20 11:00:52
8905
原创 UCOS-II时间管理
uC/OS-II时间管理:任务延时函数, OSTimeDly(INT16U ticks) 申请该服务的任务可以延时一段时间,这段时间的长短是用时钟节拍的数目来确定的。实现这个系统服务的函数叫做 OSTimeDly()。调用该函数会使µC/OS-Ⅱ进行一次任务调度,并且执行下一个优先级最高的就绪态任务。任务调用 OSTimeDly()后,一旦规定的时间期满或者有其它的任务通过调用 OSTi
2017-04-20 10:59:51
1884
原创 UCOS-II任务管理
uC/OS-II任务管理: µC/OS-Ⅱ可以管理多达 64 个任务,并从中保留了四个最高优先级和四个最低优先级的任务供自己使用,所以用户可以使用的只有 56 个任务。任务的优先级越高,反映优先级的值则越低。任务的创建:OSTaskCreate()和OSTaskCreateExt() OSTaskCreateExt()是 OSTaskCreate()的扩展版本,提供了一些附
2017-04-20 10:57:32
1050
原创 UCOS-II任务管理1
任务控制块: 一旦任务建立了,任务控制块OS_TCBs将被赋值,任务控制块是一个数据结构当任务的CPU使用权限被剥夺时,uC/OS用它来保存该任务的状态。typedef struct os_tcb{ OS_STK *OSTCBStkPtr;//指向任务栈顶的指针, #if OS_TASK_CREATE_EXT_EN void *OSTCBExtPtr;//指向用户定
2017-04-20 10:56:41
349
原创 实时操作系统概念
定义全局变量的方法: #ifdef OS_GLOBALS //当在.c文件中定义该宏时则把.h文件中的变量定义为全局变量,否则只声明为外部变量。 #define OS_EXT #else #define OS_EXT extern #endif OS_EXT INT32U OSIdleCtr; OS_EXT INT32U OSIdleCtrRun;
2017-04-20 10:52:21
496
转载 Automake和Autoconf
Makefile介绍: Makefile是用于自动编译和链接的,一个工程文件有很多文件组成,每一个文件的改变都会导致工程的重新链接,但不是所有的文件都要重新编译,Makefile中有文件的信息记录,在make时会决定在链接的时候需要重新编译哪些文件。 Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现
2017-04-06 08:53:22
235
原创 MiniGui--消息
MiniGui有两种向窗口发送消息的方法: 1、把消息投递到消息队列。2、把消息直接发送给窗口,也就是通过消息发送函数直接调用窗口过程函数。
2017-03-31 15:51:56
836
原创 MiniGui--HelloWorld(详解)
#include #include #include #include #include #define MY_CTRL_NAME "mycontrol"static int HelloWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam);static int MyControlProc (HWND
2017-03-31 11:52:53
1478
转载 句柄
总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么。这里我列举词条中的关于句柄的叙述不当之处,至于如何不当先不管,继续往下看就
2017-03-30 19:32:26
253
原创 C++面向对象程序设计——多态性和虚函数
多态:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。(消息,就是指调用函数)多态性分为两类:静态多态和动态多态。静态多态是通过函数的重载实现的,动态多态的特点是:不在编译时确定运行那个程序,而是在程序运行的过程中才确定操作所针对的对象。(运行时多态,是通过虚函数实现的)即如果通过对象名调用虚函数,属于静态关联。如果通过基类指针调用虚函数,为动态关联。
2017-03-14 14:26:09
1048
原创 C++面向对象程序设计——继承与派生
什么是继承与派生:在C++中可重用性是通过“继承”这一机制来实现的,因此继承是C++的一个重要的组成部分。声明派生类的一般形式为:class 派生类名 : [继承方式] 基类名{ 派生类新增加的成员};派生类的构成:派生类中的成员包括从基类继承过来的成员和自己增加的成员两大部分。基类成员在派生类成员的访问属性:public继承方式
2017-03-14 14:04:42
3127
原创 C++面向对象程序设计——重载
重载:一名多用运算符的重载:实质是函数的重载,重载函数一般格式如下:函数类型 operator 运算符名称(形参表){ 对运算符的重载处理 }运算符重载规则:C++不允许用户定义自己定义的新的运算符,只能对已有的运算符进行重载。不能重载的运算符:.(成员访问运算符)*(成员指针访问运算符)::(域运算符)sizeof(长度运算符)
2017-03-14 10:53:19
800
原创 C++面向对象程序设计——类和对象的进一步讨论
构造函数:构造函数是一种特殊的成员函数,它不需要用户来调用它,而是在建立对象时自动执行。在一个类中定义了全部是默认参数的构造函数后,则不再定义重载构造函数(否则容易出错)。 初始化表: example: Box::Box(int h, int w ,intlen):height(h),width(w),length(len) { }析构函数:析构函数
2017-03-13 00:39:16
1121
1
原创 C++面向对象程序设计——类和对象(个人整理)
对象:object 客观世界中任何一个事物都可以看成一个对象,如自然物体(汽车,房子,班级...)可以看到一个班级作为一个对象有两个要素:1、班级所属系和专业,人数等静态特征(属性);2、班级的动态特征,学习,开会等(行为);在C++中,每个对象都是由数据和函数(即操作代码)这两部分组成的。调用对象中的函数就是向该对象传送一个消息,要求该对象实现某一行为(功能)。面
2017-03-13 00:37:49
5460
s3c2440最新交叉编译工具11.2.0,arm-linux-gnueabi-11.2.0
2023-04-04
Cortex-A7 MPCore Technical Reference Manual.pdf
2020-05-14
ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition.pdf
2020-05-14
STM32IAP使用Ymode协议
2018-08-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人