C/C++
文章平均质量分 55
「已注销」
这个作者很懒,什么都没留下…
展开
-
string.h相关函数
strncpy(3) - Linux man pageNamestrcpy, strncpy - copy a stringSynopsis#include string.h>char *strcpy(char *dest, const char *src);char *strncpy(char *dest, const char *src, size_t n);De转载 2014-04-14 22:49:40 · 643 阅读 · 0 评论 -
From《Expert C Programming》01
1、Macrouse is best confined to naming literal constants, and providing shorthand for afew well-chosen constructs. Define the macro name all in capitals so that, in use, it'sinstantly clear it's not原创 2014-04-01 07:47:21 · 1023 阅读 · 0 评论 -
27个人买饮料,3个空瓶换1瓶,问至少买多少瓶,才能每个人都能喝到一瓶?
这个题目我还不知道答案,希望知道的告知一下喽~原创 2014-04-15 22:31:34 · 5010 阅读 · 0 评论 -
STM32开发板(小苗板)资料系列之十二——SysTick定时器
五一长假除了旅游 还能做什么? 辅导补习 美容养颜 家庭家务 加班须知 实验例程讲解先前的流水灯实验和按键实验都有用到延时程序,那部分的延时程序都是通过循环执行代码来实现的,延时的精确度不能保证。当我们需要精确延时时,就可以利用滴答定时器来实现了,理论上它的最小计时单位为AHB的时钟周期,即1/72000000秒(AHB最大时钟72M),这基本能满足转载 2014-05-03 21:19:05 · 1392 阅读 · 0 评论 -
ucos精确延时
技术探讨:关于带UCOS的嵌入式系统如STM32微妙级延时和处理方法QQ群中不少学友提出,使用了UCOS,不知道如何实现微秒级别的延时(如100微秒处理一次)困惑主要原因在于:还是想用OSTimeDly,认为应该使用OS的系统服务来做我这里说说我对这个问题的理解:OSTIMETICK是操作系统的时钟滴答服务,如果度过我写的那本《嵌入式实时操作系统μCOS原理转载 2014-05-03 19:25:07 · 6855 阅读 · 3 评论 -
使用SysTick的普通计数模式对延迟进行管理
/**delay.c#include "delay.h"#include "sys.h"////////////////////////////////////////////////////////////////////////////////// //如果使用ucos,则包括下面的头文件即可.#if SYSTEM_SUPPORT_UCOS#include "inc转载 2014-05-03 22:48:18 · 6575 阅读 · 0 评论 -
如何设置用vs编辑嵌入式项目(用keil 编译)+设置vs编辑器的关键字的颜色
来源于这两个网址:http://blog.csdn.net/gvgarven/article/details/19639719转载 2014-05-03 17:49:36 · 14671 阅读 · 0 评论 -
用SysTick值抓取法,实现DelayUS()的微妙延时函数
程序说明:(1)在bsp_timer.c中加入bsp_DelayUS()的微妙延时函数(2)用定时器6实现程序运行时间测量,最小单位0.083us。 下面使用TIM6测量bsp_DelayUS(10)的运行时间,实际测试结果 Time = 10.4us Time = 10.5us Time = 10.5us原创 2014-05-04 23:00:57 · 4030 阅读 · 0 评论 -
关中断进入临界区)一定要小心
原创 2014-05-05 06:45:13 · 2047 阅读 · 0 评论 -
基于arm的fpga加载
PassivePassivehttp://www.eeworld.com.cn/mcu/2012/0521/article_8803_1.html转载 2014-05-06 06:30:11 · 1311 阅读 · 0 评论 -
栈区vs堆区vs静态区vs文字常量区,均是什么含义,并各有什么不同?
2009-05-13 13:49栈区vs堆区vs静态区vs文字常量区,均是什么含义,并各有什么不同? --这篇文章太棒了 首先说一下,数据在内存中的存储方法:1,栈区(将数据存储在栈中);2,堆区(将数据存储在堆中);3,静态区(将类的静态变量,无论是全局还是局部的都存储在静态区域内)4,文字常量区:常量字符串就存储在此区域,即我们经常说的常量池。转载 2014-04-09 23:35:59 · 798 阅读 · 0 评论 -
程序的内存分配:stack、heap、static、文字常量区、程序代码区
一、预备知识―程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态转载 2014-04-10 00:24:28 · 839 阅读 · 0 评论 -
多线程中的内存分配
全局变量或者静态变量,它们都放在堆里的局部变量放在栈里的堆区,也叫自由存储区.为什么说在堆上分配内存比在栈上分配内存慢?堆空间的开辟需要用系统函数,栈上直接修改指针堆空间的管理需要系统记帐,栈上的空间可以由编译器管理或是保存在某个处理器寄存器中。堆空间的释放需要系统管理,栈上的释放可以直接丢弃。堆空间需要通过栈上的指针间接引用,所以访问会慢记得在apue2上面看到关于线程中转载 2014-04-10 10:39:27 · 3846 阅读 · 0 评论 -
字符串的存储方式,以及sizeof()(字符数组,字符指针,Sizeof总结)
字符数组,字符指针,Sizeof总结1.以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写 "abc",那么编译器帮你存储的是"abc\0"2."abc"是常量吗?答案是有时是,有时不是。不是常量的情况:"abc"作为字符数组初始值的时候就不是,如 char str[] = "abc";因为定义的是一个字符数组,所以就相当于定义了一些空间转载 2014-04-10 10:43:18 · 678 阅读 · 0 评论 -
const变量的存储方式
在帖子的最后,有这么一个很有趣的实验:[cpp] view plaincopy const int a = 1; int *p = const_castint*>(&a); *p = 2; cout cout cout cout c转载 2014-04-10 11:13:40 · 1336 阅读 · 0 评论 -
一个进程在内存中的布局
一个进程在内存中的布局 2010-01-15 01对于一个完整的程序,在内存中分布情况如下图: 值得一提的是:在C#中struct存放在栈区,class存放在堆区,所以一般struct要比class要快的。 堆和栈的比较表(仅针对C++) 栈(Stack)堆(Heap)转载 2014-04-10 09:13:01 · 724 阅读 · 0 评论 -
C内存对齐规则
对齐规则每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。规则:1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma转载 2014-04-10 19:25:20 · 959 阅读 · 0 评论 -
C内存对齐
C内存对齐 文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐转载 2014-04-10 19:16:14 · 924 阅读 · 0 评论 -
Linux下的多线程编程
void mainline (...){struct phonebookentry *pbe;pthread_attr_t tattr;pthread_t helper;void *status;pthread_create(&helper, NULL, fetch, &pbe);/* do something else for a while */pthrea转载 2014-04-13 12:17:59 · 710 阅读 · 0 评论 -
one-wire DS2431
#include "stm32f10x_gpio.h"#define DS2431_GPIO GPIOB#define DS2431_GPIO_Pin GPIO_Pin_0#define DS2431_Write_1() GPIO_SetBits( DS2431_GPIO, DS2431_GPIO_Pin ) //写1#define DS转载 2014-05-13 22:12:04 · 2417 阅读 · 1 评论 -
DS2431 ONE-WIRE
http://wenku.baidu.com/view/a9b41e3283c4bb4cf7ecd119.html转载 2014-05-14 06:33:53 · 1347 阅读 · 0 评论 -
make menuconfig/.config/Kconfig解析
make menuconfig/.config/Kconfig解析 在对linux进行编译,常用的命令是make menuconfig,使用图形界面来对整个系统进行裁剪。当然,除了这条指令,还包括很多配置命令,比如make defconfig, make oldconfig等。这里主要就make menuconfig的执行过程进行解析。转载 2014-09-21 10:48:06 · 700 阅读 · 0 评论 -
clean code
这一章主要将的是命名。Bob大叔确实不是一般人,讲的头头是道,并且讲得很细致。虽然他和Steve McConnell两位都对命名做过自己的阐述,但是Bob大叔所讲的绝不是Steve McConnell大叔的翻版,而是有自己独到的特色。看来同为老程序员,大家的感受既有相似的地方,也有不同之处。下面来看看文章中的一些摘要。 1.Use Intention-Revealing Na转载 2014-08-31 11:15:07 · 1027 阅读 · 0 评论 -
OO and Procedural
Again, we see the complimentary nature of these two definitions; they are virtualopposites! This exposes the fundamental dichotomy between objects and data structures: Procedural code (code using原创 2014-09-14 18:38:37 · 590 阅读 · 0 评论 -
根据波形的转折点文件,转换成波形文件
注:输入的input.csv文件末尾必须有换行符结束,最后一行的index必须是200,不然程序无法正常运行。对应的测试文件在博客的最后#include "stdafx.h"#include #include #include #define PEAK_VOLT 33.8#define WAVE_END_FLAG 5#define WAVE_MIDDLE原创 2014-11-02 09:49:08 · 1643 阅读 · 0 评论 -
热敏电阻的前世今生
// thermistor_convert_table.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #define Bn 3950 //热敏电阻的B值#define K 273.15#define T_10k (K + 25)//25原创 2014-10-19 22:50:33 · 934 阅读 · 1 评论 -
ucos 编程
开启辅助访问jenney |我的 |设置 |消息 |提醒 |退出积分: 16 |用户组: 新手上路快捷导航首页全部帖汇总技术帖汇总非飞思汇总非技术帖子阿莫电子邮购 帖子搜索热搜:净化器雕刻机阿莫邮购原创 2014-12-17 23:00:02 · 979 阅读 · 0 评论 -
嵌入式实时操作系统μC/OS-II在STM32处理器移植
http://blog.sina.com.cn/s/blog_a79574c6010168rm.html下载代码stm32标准外设库是stm32全系列芯片的外设驱动,有了它可以大大加速我们开发stm32。首先从st公司的网站下载最新的stm32标准外设库,写本文时最新的版本是V3.5.0。解压该zip文件,得到如下文件夹和文件STM32F10x_转载 2015-01-08 22:32:07 · 5177 阅读 · 0 评论 -
32位arm的写存操作,没有内存对齐的赋值
用32位arm7芯片lpc2129和keil编译器,在项目开发中遇到的问题如下:定义字节数组 :BYTE array[10] = {0};然后把地址&array[1]强制转换并赋值:*(UINT16 *)(&array[1]) = 0xaabb;然后读取数组里的内容,发现被赋值的元素是array[0]和array[1],读出的内容是:array[0]的内容是原创 2015-01-16 00:09:17 · 2208 阅读 · 2 评论 -
用define定义的 1 和 1ul的区别
今天小朋友问我 #define INTEGER 1 和 #define U_SUFFIX_INTEGER 1u 的区别(1和1ul也同理)。我写了个测试代码,请看:// test.cpp //#include "stdafx.h"#include "string.h"#define INTEGER 3#define U_SUFFIX_INTEGER 3u原创 2015-02-07 12:29:18 · 5023 阅读 · 0 评论 -
为什么要加 REQUIRE8 and PRESERVE8? 栈的8字节对齐
REQUIRE8 and PRESERVE8The REQUIRE8 and PRESERVE8 directives specify that the current file requires or preserves eight-byte alignment of the stack.The REQUIRE8 directive sets the REQ8 b转载 2015-02-16 23:15:58 · 5222 阅读 · 0 评论 -
ARM启动代码研究
1:PRESERVE8:Reguire8和Preserve8C和汇编有8位对齐的要求,这两个伪指令可以满足此要求,存在REQUIRE8 PRESERVE8的对应关系,但不是说有一个REQUIRE8就要有一个 PRESERVE8,如果是一个c文件和一个汇编文件的调用,也就涉及一个PRESERVE8或者是一个REQUIRE8.另外,REQUIRE8和PRESERVE8并不完成8 byte转载 2015-02-15 17:04:37 · 1040 阅读 · 0 评论 -
startup_stm32f10x_hd.s 讲解
;* 文件名 : startup_stm32f10x_hd.s;* 库版本 : V3.5.0;* 说明: 此文件为STM32F10x高密度设备的MDK工具链的启动文件;* 该模块执行以下操作:;* -设置初始堆栈指针(SP);* -设置初始程序计数器(PC)为复位向量,并在执行main函数前初始化系统时钟;* -转载 2015-02-15 17:10:42 · 1645 阅读 · 0 评论 -
Non-user Modes and the interrupt
7. Non-user ModesIn the previous chapters, we have restricted ourselves to discussing the ARM while it is operating in user mode. For most purposes, this is all that is required. For example, larg转载 2015-02-16 11:24:20 · 726 阅读 · 0 评论 -
RealView® 编译工具 汇编器指南
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ic/Cacbjgcc.html原创 2015-02-15 17:22:51 · 882 阅读 · 0 评论 -
arm加载域和运行域的理解
般而言,一个程序包括只读的代码段和可读写的数据段。在ARM的集成开发环境中,只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为零的变量被称为ZI段(ZeroInit)。对于嵌入式系统而言,程序映象都是存储在Flash存储器等一些非易失性器件中的,而在运行时,程序中的RW段必须重新装载到可读写的RAM中。这就涉及到程转载 2015-02-16 16:32:44 · 1097 阅读 · 0 评论 -
RO,RW,ZI 和scatter file详解
要了解RO,RW和ZI需要首先了解以下知识: (1) ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。 一个ARM程序包含3部分:RO,RW和ZI RO是程序中的指令和常量转载 2015-02-16 16:37:09 · 1447 阅读 · 0 评论 -
xillix
ZYNQ 7000翻译 2015-02-28 16:55:00 · 1046 阅读 · 0 评论 -
I2C Info
I2C Info – I2C Bus, Interface and ProtocolI2C is a serial protocol for two-wire interface to connect low-speed devices like microcontrollers, EEPROMs, A/D and D/A converters, I/O interfaces and ot转载 2015-03-04 23:43:30 · 1118 阅读 · 0 评论 -
short 型转换成int型
把short 型转换成int型,转换之后应该是same value。那怎么维持值不变呢?是不是在高位补160就行了呢?如果short型的值是-1,按照补码表示就是十六进制ffff,要转成int型的-1需要变成ffffffff,因此需要在高位补16个1而不是16个0。换句话说,要维持原来的值不变,在高位补1还是0取决于原来的符号位,这称为符号扩展(Sign Extension)。原创 2015-03-07 19:25:04 · 14261 阅读 · 0 评论