随笔分类 -  C/C++

摘要:#ifndef _W25Q_H_#define _W25Q_H_/*The W25Q16BV array is organized into 8,192 programmable pages of 256-bytes each.Up to 256 bytes can be programmed at a time.Pages can be erased in groups of 16 (sector erase),groups of 128 (32KB block erase),groups of 256 (64KB block erase) orthe entire chip (chip e 阅读全文
posted @ 2013-04-28 18:32 IAmAProgrammer 编辑
摘要:/* Define to prevent recursive inclusion -------------------------------------*/#ifndef __AT24_H#define __AT24_H#include <string.h>#include "hw_twi.h"#include "hw_def.h"/*AT24C02, 2K Bits SERIAL EEPROM:Internally organized with 32 pages of 8 bytes each,the 2K Bits requires 阅读全文
posted @ 2013-04-28 18:29 IAmAProgrammer 编辑
摘要:#ifndef __BUFFER_H__#define __BUFFER_H__#include /* * http://en.wikipedia.org/wiki/Circular_buffer : Mirroring * * The capacity of circle buffer must ... 阅读全文
posted @ 2013-04-25 13:58 IAmAProgrammer 编辑
摘要:#ifndef __LIST_H__#define __LIST_H__#include <stdint.h>#define LIST_ITEM_VAR() LIST_ITEM_T item#define LIST_ITEM_PTR(x) LIST_ITEM_T * x#define LIST_ITEM_PAIR(x, y) LIST_ITEM_T * x, * y//#define list_entry(pItem, T) ( (T *)(pItem) )#define LIST_ITEM_U8_PTR( p... 阅读全文
posted @ 2013-04-24 22:37 IAmAProgrammer 编辑
摘要:/* * File: alloc.c * Purpose: generic malloc() and free() engine * * Notes: 99% of this code stolen/borrowed from the K&R C * examples. * */#include "common.h"#include "stdlib.h"#pragma section = "HEAP"/*************************************************************** 阅读全文
posted @ 2013-04-22 23:20 IAmAProgrammer 编辑
摘要:/* * File: printk.c * Purpose: The standard C library routine printf(), but without * all the baggage. */#include <stdarg.h>/********************************************************************/typedef struct{ int dest; void (*func)( char ); char * loc;} PRINTK_INFO;int pr... 阅读全文
posted @ 2013-04-22 23:14 IAmAProgrammer 编辑
摘要:/* * File: queue.h * Purpose: Implement a first in, first out linked list * * Notes: */#ifndef _QUEUE_H_#define _QUEUE_H_/********************************************************************//* * Individual queue node */typedef struct NODE{ struct NODE *next;} QNODE;/* * Queue Struture - linke... 阅读全文
posted @ 2013-04-22 23:04 IAmAProgrammer 编辑
摘要:在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“< 阅读全文
posted @ 2013-04-16 05:25 IAmAProgrammer 编辑
摘要:C99中新增加了restrict修饰的指针:由restrict修饰的指针是最初唯一对指针所指向的对象进行存取的方法,仅当第二个指针基于第一个时,才能对对象进行存取。对对象的存取都限定于基于由restrict修饰的指针表达式中。由restrict修饰的指针主要用于函数形参,或指向由malloc()分配的内存空间。restrict数据类型不改变程序的语义。编译器能通过作出restrict修饰的指针是存取对象的唯一方法的假设,更好地优化某些类型的例程。restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内 阅读全文
posted @ 2013-04-15 23:59 IAmAProgrammer 编辑
摘要:%% 打印一个百分号%a 浮点数、十六进制数字和p-记数法(C99)%A 浮点数、十六进制数字和p-记法(C99)%c 一个字符 %d 有符号十进制整数 %i 有符号十进制数(与%d相同)%e 浮点数、e-记数法%E 浮点数、E-记数法%f 浮点数、十进制记数法 %g 根据数值不同自动选择%f或%e.%G 根据数值不同自动选择%f或%e.%p 指针 %s 字符串%u 无符号十进制整数%o 无符号八进制整数%x 使用十六进制数字0..f的无符号十六进制整数 %X 使用十六进... 阅读全文
posted @ 2013-04-15 22:51 IAmAProgrammer 编辑
摘要:http://stackoverflow.com/questions/14926294/formatted-print-to-circular-bufferI'm writing embedded code for STM32F3 mc (STM32F3-Discovery). I need to output some data to UART and I'm using DMA for this as this allows me to concentrate on sensors reading and data processing rather than on wai 阅读全文
posted @ 2013-04-15 21:19 IAmAProgrammer 编辑
摘要:#ifndef __RING_BUFFER_H__#define __RING_BUFFER_H__//------------------------------------------------------------------------------// External functions//------------------------------------------------------------------------------void BSP_Lock( void );void BSP_Unlock( void );typedef struct{... 阅读全文
posted @ 2013-04-14 07:01 IAmAProgrammer 编辑
摘要:#ifndef __CIRCLE_BUFFER_H__#define __CIRCLE_BUFFER_H__/* * http://en.wikipedia.org/wiki/Circular_buffer : Mirroring * * The capacity of circle buffer must be a power of two ! * * The source and sink of data can implement independent policies for dealing * with a full buffer and overrun while adherin 阅读全文
posted @ 2013-04-14 07:00 IAmAProgrammer 编辑
摘要:http://www.embedded.com/electronics-blogs/programming-pointers/4024450/Tag-vs-Type-NamesTag names in CIn C, the name s appearing in:struct s{ ...}; s is atag. A tag by itself is not a type name. If it were, then C compilers would accept declarations such as:s x; // error in Cs *p; // ditto... 阅读全文
posted @ 2013-04-12 20:53 IAmAProgrammer 编辑
摘要:1 // Reverse the bit order in a 32-bit word. 2 unsigned int rbit( 3 unsigned int i ) 4 { 5 i = ( ( i & 0x55555555 ) << 1 ) | ( ( i >> 1 ) & 0x55555555 ); 6 i = ( ( i & 0x33333333 ) << 2 ) | ( ( i >> 2 ) & 0x33333333 ); 7 i = ( ( i & 0x0f0f0f0f ) << 4 阅读全文
posted @ 2013-01-05 20:06 IAmAProgrammer 编辑
摘要:USB_COMMON_DESCRIPTOR * USBH_X_GetNextDescriptor( USB_COMMON_DESCRIPTOR * pbCommDescriptor, U32 * wNextDescriptorOffset ){ USB_COMMON_DESCRIPTOR * pNextCommDescriptor; U8 bLength = pbCommDescriptor->bLength; *wNextDescriptorOffset += bLength; pNextCommDescriptor = (USB_COMMON_DESCRIPTOR *) ( (... 阅读全文
posted @ 2012-09-27 09:00 IAmAProgrammer 编辑
摘要:命名规则 : 匈牙利法则<scope_> + <prefix> + <Qualifier>。范围前缀_,类型前缀, 限定词即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写, 要求单词的第一个字母应大写全局变量用g_开头, 静态变量用s_开头, 成员变量用m_开头, 局部变量用l_开头 对 const 的变量用c_开头 g_typeVar s_typeVar m_typeVar ms_typeVar gc_typeVar sc_typeVar mc_typeVar对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其意思。数组变量 阅读全文
posted @ 2012-09-15 15:03 IAmAProgrammer 编辑

点击右上角即可分享
微信分享提示