摘要: 摘要:函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的参数。一 通常的函数调用一个通常的函数调用的例子:#include "msp430g2553.h"/* 声明一个函数 */unsigned int Addxy(unsigned 阅读全文
posted @ 2013-03-13 13:33 此岸幸福 阅读(395) 评论(0) 推荐(0)
摘要: 所谓堆栈,就是在存储器中按数据“后进先出(Last In First Out,LIFO)”的原则组织的连续存储空间。每个任务都有自己的堆栈,任务堆栈是任务的重要组成部分,其作用主要表现在以下两点:当任务切换或响应中断时,用来保存CPU寄存器中的内容,当任务挂起的时候,将CPU寄存器的内容压入堆栈,恢复的时候再弹出来给CPU寄存器。当任务运行时,它用来保存一些局部变量 关于任务堆栈在操作系统代码中的定义如程序2.4所示。/* 任务堆栈的定义 */#define TASK_STK_SIZE 512typedef uint32_t OS_STK;OS_STK TaskStk[OS_MAX_T... 阅读全文
posted @ 2013-03-12 22:49 此岸幸福 阅读(3538) 评论(0) 推荐(0)
摘要: 堆栈作用的就是用来保存局部变量,从本质上讲也就是将CPU寄存器的值保存到RAM中。在uC/OS中,每一个任务都有一个独立的任务堆栈。为了深入理解任务堆栈的作用,不妨分析任务从“出生”到“消亡”的整个过程,具体就是分析任务的建立-运行-挂起几种状态中任务堆栈的变化情况。 现在假设系统运行着一个由用户创建的用以完成打印工作的任务TaskPrint。TaskPrint最初通过OSTaskCreate()函数创建,在该函数中与任务堆栈有关的第一段代码是大家比较熟悉的函数OSTaskStkInit(),这个函数是在uCOS移植过程中必须实现的,其作用是“初始化堆栈”,其实就是预先在RAM中的一块区... 阅读全文
posted @ 2013-03-12 22:02 此岸幸福 阅读(428) 评论(0) 推荐(0)
摘要: 关于Flash存储器先介绍一些基本知识。首先,Flash存储器的结构决定了写操作只能将存储单元中的各比特位从1改成0,不能将0改写成1。所以Flash中每个单元可以一次性写入数据,数据一旦写入,在擦除前不能被再次改写。对Flash的擦除操作只能针对整个段进行,擦出后所有比特位都恢复为1。所以在改写某单元之前,必须先擦除整段。而为了保留该段中其他的数据,擦除前需要备份整段,导致单字节改写等随机存储操作效率很低。Flash存储器适合做大批量连续数据存储,而且一般控制器都会提供连续写功能以提高速度。 在Flash中,将每次能擦除的最小区块单位称为“段”(Segment),将每次能连续写入的最大区块. 阅读全文
posted @ 2013-03-12 15:22 此岸幸福 阅读(753) 评论(0) 推荐(0)