嵌入式系统编程几点总结
文章平均质量分 54
taoliqing123
这个作者很懒,什么都没留下…
展开
-
对于(*(volatile unsigned char *)(x))的理解(转载新浪微博的一位博主)
在看vivi代码时,Nand_read.c文件中有下面一段#define __REGb(x) (*(volatileunsigned char *)(x))#define __REGi(x) (*(volatile unsigned int *)(x))#define NF_BASE 0x4e000000#define NFCONF __REGi(NF_BA转载 2016-05-11 09:59:31 · 1606 阅读 · 0 评论 -
百度+转载的博客解释extern C的作用
探索C++的秘密之详解extern "C" 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,转载 2016-05-11 11:00:19 · 267 阅读 · 0 评论 -
__attribute__((packed))详解(转载)
__attribute__((packed))详解标签: it分类: linux程序1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用v转载 2016-05-11 14:47:02 · 363 阅读 · 0 评论 -
关于bit-banding的解释和相关作用(转载)
CM3的存储器系统支持所谓的“位带”(bit-band)操作。通过它,实现了对单一比特的原子操作。位带操作仅适用于一些特殊的存储器区域中。 位带区与位带别名区的膨胀关系图 在位带区中,每个比特都映射到别名地址区的一个字——这是个只有 LSB才有效的字。 支持位带操作的两个内存区的范围是:0x200转载 2016-05-11 16:34:28 · 7223 阅读 · 1 评论 -
STM32用IAR调试出现Error[Pe020]: identifier "FILE" is undefined 解决方法
这是在调试示例程序RTC中的Calendar时候遇到的问题,错误定位到PUTCHAR_PROTOTYPE处解决办法:需要在IAR的Options -> General Options ->Library Configuration里设置一下函数库,不然printf函数不对,将Library Configuration 中的Library 设置由"Normal"改为"Full"就可以了。转载 2017-08-20 10:39:49 · 1314 阅读 · 0 评论 -
转自其它博主的 关于优先级反转问题的解决方案
优先级反转1、什么是优先级反转? 优先级反转是指一个低优先级的任务持有一个被高优先级任务所需要的共享资源。高优先任务由于因资源缺乏而处于受阻状态,一直等到低优先级任务释放资源为止。而低优先级获得的CPU时间少,如果此时有优先级处于两者之间的任务,并且不需要那个共享资源,则该中优先级的任务反而超过这两个任务而获得CPU时间。如果高优先级等待资源时不是阻塞等待,而是忙循环,则可能永远无法转载 2017-09-24 15:12:53 · 243 阅读 · 0 评论 -
转 C++ const volatile mutable
const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如:const int nValue; //nValue是co...转载 2018-08-19 09:34:17 · 157 阅读 · 0 评论