- 博客(7)
- 收藏
- 关注
转载 volatile的作用
volatile就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果不加入volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。作用volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读
2016-01-22 14:06:26
272
转载 gsm 收发短信 打电话
/************************************************************************************************************* * 文件名: SIM900.c * 功能: STM32 SIM900底层驱动函数 * 作者: cp1300@
2016-01-22 13:42:03
1259
转载 MDK输出map文件分析
MDK输出map文件分析 零、前言 前面写了一篇文章对__main函数的执行过程做了一个粗略的跟踪描叙,对一个烧录了程序的STM32开发板从启动复位到进入用户main函数的过程有了一个大概的了解,但是有很多问题感觉还是模模糊糊,因此,今天又把KEIL MDK编译、链接后生成的map文件简单分析一下,加深对链接器、嵌入式系统可执行映像特点的了解。、 一、文
2016-01-22 13:38:47
675
转载 STM32启动过程
相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化。ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。而Cortex-M3内核则正好相反,有3种情况
2016-01-21 22:36:08
585
转载 const在C语言中作用
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable)。我们来分情况看语法上它该如何被使用。1、函数体内修饰局部变量。例:void func(){const int a=0;}首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值
2016-01-21 21:42:48
645
转载 c语言stack(栈)和heap(堆)的使用详解
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—全局
2016-01-21 21:25:30
12080
转载 【转】ARM获得PC指针为何PC=PC+8[下](转)
2.为何ARM9和ARM7一样,也是PC=PC+8ARM7的三条流水线,PC=PC+8,很好理解,但是AMR9中,是五级流水线,为何还是PC=PC+8,而不是PC=PC+(5-1)*4=PC + 16,呢?下面就需要好好解释一番了。具体解释之前,先贴上ARM7和ARM9的流水线的区别和联系:图表 26
2016-01-21 20:43:13
594
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅