c 知识点
qqliyunpeng
努力天天有收获,努力将知识都记下来。
展开
-
对于位的操作
在一个寄存器中,我们想操作某一位原创 2014-05-07 00:54:01 · 768 阅读 · 0 评论 -
数组
想从键盘上读取多个输入的方法: for(i=1;i scanf("%d", &a[i]); 二维数组的初始化:int a[2][3] = {{1, 2, 3},{4, 5, 6}};原创 2015-07-17 12:23:04 · 578 阅读 · 0 评论 -
printf和scanf中的%控制
输出函数的格式字符:printf();附加的格式说明符:格式输入函数的格式控制符:scanf();原创 2015-07-30 17:17:18 · 729 阅读 · 0 评论 -
宏函数
宏函数定义的定义方法原创 2015-11-17 19:21:29 · 967 阅读 · 2 评论 -
Linux中查看二进制文件
Linux下查看二进制文件linux下查看二进制文件以十六进制格式输出:od [选项] 文件od -d 文件 十进制输出 -o 文件 八进制输出 -x 文件 十六进制输出xxd 文件 输出十六进制在vi命令状态下::%!xxd :%!od 将当前文本转化为16进制格式:%!xxd -c 12 每行显示12个字节:%!xxd -r 将当前文本转化回文本格式#原创 2016-01-20 14:26:35 · 32858 阅读 · 0 评论 -
实现自己的print
在嵌入式开发中,常常会通过串口打印一些信息到PC终端,这就需要实现自己的printf函数,下面介绍打印函数print的实现。print.h #ifndef __PRINT_H_ #define __PRINT_H_ void print(char* fmt, ...); void printch(char c转载 2016-02-02 12:12:49 · 1508 阅读 · 0 评论 -
Makefile定义工程中的宏
一、介绍: 如果用make管理你的工程,在工程中有一些灵活变量,在Makefile中实现会是很方便的。1. 启开关的作用:在 Makefile 中:CFLAGS += -DBUILD$(CC) $(CFLAGS)在程序中:#ifdef BUILD printf("定义了宏BUILD");#endif2. 启传递参数的作用:在 Makefile 中:CFLAGS += -DBUILD原创 2016-03-25 18:28:46 · 1532 阅读 · 0 评论 -
C语言基础--数据
本章主要讲 c 语言中比较特殊的数据类型和一些比较常用的概念。原创 2014-05-11 18:20:01 · 1217 阅读 · 0 评论 -
参数数目不定的函数
介绍如何编写参数数目不定的函数,并且解释实现的原理原创 2016-10-28 17:47:50 · 1057 阅读 · 0 评论 -
字符串相关处理函数
1. strcpy: 2. strcat:3. strcmp:原创 2015-08-29 20:50:04 · 895 阅读 · 0 评论 -
C语言基础--自加自减
自加自减原创 2015-03-24 12:28:18 · 1089 阅读 · 0 评论 -
#if 0的意义和好处
在调试中经常遇到,写好的程序,需要屏原创 2014-05-10 01:37:47 · 4517 阅读 · 2 评论 -
struct中的字节对齐问题
原因:CPU为了快速的存取内存从而存在内存问题分析方法:有例子1:#include <stdio.h>struct A{ char a2; char a3; char a; short i;};int main(int argc, const char *argv[]){ struct A aa = {0x1, 0x2, 0x3, 0x5555};原创 2015-11-19 21:01:47 · 1227 阅读 · 0 评论 -
大端模式小端模式
介绍大端和小端的知识原创 2017-03-30 14:41:35 · 12246 阅读 · 1 评论 -
8字节数据直接赋值问题(unsigned long long)
1. 问题呈现假设有一个内存空间,buf[200],我们对其用指针赋值:unsigned long long item = 100;*(unsigned long long *)buf = item;看似没问题,但是实际中移植性比较差,当我在64位的ubuntu中运行此段代码是没有问题的。但是当我们把此代码在32位的嵌入式系统中运行,报 的错误。2. 解决当遇到此问题时,原创 2018-04-04 20:53:15 · 4678 阅读 · 1 评论 -
c语言基础--数据类型
本篇主要是介绍跟单片机相关的数据类型在8位单片机种最常用的数据类型就是:unsigned char:无符号字符型,位宽1个字节,8个位,表示的范围0~255(2^8-1)在32位单片机中最常用的数据类型就是:unsigned long:长整型,位宽4个字节,32个位,表示的范围0~4294967295(2^32-1)原创 2015-03-22 18:45:57 · 1713 阅读 · 0 评论 -
i2c精简总结
基本的i2c的编程包括:读数据,写命令,写数据1、读寄存器的一般步骤:开始i2c,写设备号,写那个寄存器,重新开始,写设备号读,设置成接收模式(Freescale MKL05Z32xxx4 的一个例子)uint8 hal_dev_read_reg(I2C_MemMapPtr p, uint8 devaddr, uint8 addr)//第一个参数目的是把i2c这种结构的地址传递过来,以方便原创 2014-01-17 17:07:46 · 1913 阅读 · 0 评论 -
多按键设计的标准思路
在刚接触按键的时候,一直以为在硬件上不支持的情况下,是不能实现将冗余时间减小的。但是,下边的这种却是能实现的:int flag=0;if(flag=0){ if(key=1) { delay(); if(key=1)flag=1; else flag=0; }}else原创 2014-03-12 00:17:19 · 1079 阅读 · 0 评论 -
在编程语言中分频的计算方法
在编写程序的时候,有时候会设计到计算分频的shu原创 2014-09-13 18:26:10 · 1507 阅读 · 0 评论 -
结构体的使用
结构体的定义typedef struct _TSeg {uint8 V_COM_DISP1;//COM1显示第一位uint8 V_COM_DISP2;//COM1显示第二位uint8 V_COM_DISP3;//COM1显示第三位uint8 V_COM_DISP4;//COM1显示第四位uint8 I_COM_DISP1;//COM2显示第一位uin原创 2014-11-07 18:06:09 · 841 阅读 · 0 评论 -
位与十进制表
二级制与十进制00000000原创 2014-11-12 23:51:25 · 831 阅读 · 0 评论 -
一种简单的软件延时
reg [1:0] Filter_cnt = 2'b11;reg RxD_bit = 1'b1;always @(posedge clk)if(OversamplingTick)begin if(RxD_sync[1]==1'b1 && Filter_cnt!=2'b11) Filter_cnt else if(RxD_sync[1]==1'b0原创 2014-11-20 20:57:25 · 983 阅读 · 0 评论 -
i2c中应答信号信号总结
i2c如过用到主从的关系的时候,需要考虑:give_ack();//从器件发送,来表示占用总线,让sda总线保持低电平。get_ack();//主器件判断是否有器件占用总线,sda有器件占用,是低电平。give_nack();//从器件发送来表示释放总线,sda线高电平原创 2014-01-24 14:23:00 · 8850 阅读 · 0 评论 -
51编程问题集
NRF24L01.C(149): warning C280: 'pBuf': unreferenced local variable这个pBuf原创 2014-11-23 21:28:42 · 1003 阅读 · 0 评论 -
51中注意的地方记录
用keil u2编程51的时候,有很多东西经常会忘记,此文章的目的即使jiangzhe原创 2014-05-11 19:05:46 · 876 阅读 · 0 评论 -
I2C详细介绍
I2C时序I2C的详细介绍说明:开始:在SCL的高电平的时候SDA线的从高电平到低电平的跳变定义为开始停止:在SCL的高电平的时候SDA线的从低电平到高电平的跳变定义为停止2.有效数据的位置:说明:在SCL的高电平读取数据,这就告诉我们,在SCL为高电平的时候SDA线必须是稳定的,在进一步说,在SCL的低电平SDA线变数据,或者说在SCL原创 2014-11-26 09:43:42 · 9223 阅读 · 1 评论 -
51中xdata,idata,data,pdata的区别
51系列中data,idata,xdata,pdata的区别dATa: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。idATa: 固定指前面0x00-0xff的256个RAM,其中前128和dATa的128完全相同,只是因为访问的方式不同。idATa是用类似C中的指针方式 访问的。汇编中的语句为:mox ACC,@Rx.(不重要转载 2014-12-05 15:18:32 · 1792 阅读 · 0 评论 -
RS232
RS232的最大的传输速率大约10KBytes/s。原创 2014-11-12 22:29:08 · 1905 阅读 · 0 评论 -
枚举类型的用法
枚举类型的定义枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。定义格式:枚举类型的定义格式为: enum {};其中:关键字enum——指明其后的标识符是一个枚举类型的名字。枚举常量表——由枚举常量构成。“枚举常量”或称“枚举成员”,是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表列出枚举类型的所转载 2014-11-23 13:31:31 · 942 阅读 · 0 评论 -
i2c中start和restart的区别
有的硬件芯片提供了一个个寄存器,供我们很好的操作i2c,但是,在用的时候,我们是不知道他到地是怎么操作的,下边,我就探讨下i2c中的start和restart的区别。start是在scl是高电平的时候sda的一个下降沿来表示一个i2c的开始信号,到了i2c传输的内部,scl是低电平的时候,所有数据都是无效的,也就是说,硬件上start只是操作sda,令sda产生下降沿。原创 2014-01-24 11:29:50 · 14798 阅读 · 1 评论 -
以位为单位存储标志-共用体-union
程序的结构如下:原创 2014-05-10 18:05:13 · 966 阅读 · 0 评论 -
malloc原理学习:隐式空闲链表
1. 堆在内存中的位置:两张图可以看出,堆所在的位置是在bss段后边,生长也是向上生长的。2. 隐式空闲链表的方式简介:这是种简单方法,但是因为块分配和堆块的总数呈线性关系,所以对于通用的分配器,隐式空闲链表是不合适的。也就是说对于堆块数量预先就知道很小的特殊的分配器是可用的。。隐式空闲链表有个恒定的形式:3. 代码实现:1)初始化和基本的宏cod...原创 2019-06-10 23:09:06 · 5037 阅读 · 2 评论