- 博客(14)
- 资源 (2)
- 收藏
- 关注
原创 指针与数组--指针与数组的定义与声明
定义与声明的区别:(1)定义就是编译器创建一个对象,为这个对象分配一块内存并为其取一个名字,这个名字就是我们常说的变量名或对象名。定义需要分配内存。(2)声明表示该变量名或对象名在其他地方已经定义过,并且该变量名或对象名已经定义过,其他地方不能在使用该名字作为变量名或对象名。同一个变量名或对象名可以在不同的地方声明多次,并且声明不分配内存。指针与数组的定义域声明如下两种方式都是
2013-05-10 14:02:11
1148
原创 指针与数组--a与&a区别
假设声明了一个数组a,则&a表示数组a的首地址,a与&a[0]表示数组a首元素的首地址,那么&a+1与a+1有哪些区别呢?通过下面的实验来说明。int i = 0;int a[5]={1,2,3,4,5};int *p = (int *)(&a+1);for(i=0;i{printf("a+%d = 0x%p,a[%d] = %d\n",i,a+i,i,a[i]);}
2013-05-10 12:48:42
1372
原创 指针与数组--指针访问与下标访问
指针与数组下标访问与指针访问的区别如下: char *p="abcde";char a[5]={1,2,3,4,5};printf(" p+4 = 0x%p,*(p+4) = 0x%x\n",p+4,*(p+4));printf("&p[4] = 0x%p, p[4] = 0x%x\n",&p[4],p[4]);printf(" a+4 = 0x%p,*(
2013-05-10 12:04:20
2803
原创 #define
define 用于文本替换,称之为宏定义,基本形式为不带参数和带参数两中形式:(1)#define name struff eg:#define NUM 100 (2)#define name(parameter-list) struff eg:#define SUM(a,b) ((a)+(b))
2013-03-10 17:21:55
1083
原创 STM32之SysTick嘀嗒定时器
STM32嘀嗒定时器为RTOS系统提供延时使用,在无操作系统情况下也可以实现准确的延时,从而告别通过while循环实现软件延时。嘀嗒定时器是一个24位的减计数器,包括有CTRL、LOAD、VAL、CALIB四个寄存器,各个寄存器的描述如下。(1)CTRL寄存器(控制寄存器):(2)LOAD寄存器(数值加载):(3)VAL寄存器(当前计数值):
2013-01-02 21:48:30
2953
原创 STM32之系统时钟
使用STM32已经有一段时间,为了快速完成任务习惯性在已有代码的基础上进行部分修改,而没有仔细阅读数据手册,详细分析参数设置的缘由。现将逐步将STM32的各部分内部结构一次进行细节的学习,今天进行STM32的时钟部分。 STM32F103系列时钟最高可以至72MHZ,时钟来源包括HSE(外部高速时钟)、LSE(外部低速时钟)、HSI(内部高速时钟)、LSI(内部低速时钟
2013-01-02 20:28:57
1577
原创 利用异或方法实现数据交换
两个数据实现数据交换通常选用中间变量的方式实现,利用异或运算可以方便实现两个数据的互换。 异或运算:a^b (按位进行异或,相异为1,相同为0) 例如:a=5,即0101(2);b=6,即0110(2)。通过以下三个赋值语句可以实现数据交换。(1)a = a^b;(2)b = b^a;(3)a = a^b;过程分析:(1) a
2012-11-28 16:41:35
2541
原创 串口发送数据——字符串发送与十六进制发送的区别
在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据。关于两者的区别,需要从计算机存储数据的格式说起。 在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示。我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的发送出去。例
2012-11-28 16:01:15
60513
6
原创 STM32外部中断处理流程及注意事项
STM32的外部中断是以组为单位,例如PA0、PB0、PC0、PD0、PE0、PF0、PG0共用外部中断0,我们再使用时从中选择一个座位外部中断0即可,其他中断类推。外部中断包括EXTI0、EXTI1、EXTI2、EXTI3、EXTI4、EXTI9_5、EXTI15_10,Pin0--Pin4有各自独立的中断,Pin5--Pin9共用一个中断,Pin10--Pin15共用一个中断。
2012-10-09 11:35:04
9078
原创 内存对齐
#pragma pack(push ,num) num表示几字节对齐Typedef struct AAA{Int a;Char b;…….}AAA;#pragma pack(pop)
2012-09-29 16:40:12
653
原创 结构体变量与结构体指针变量的使用方法
一、结构体的定义格式一般如下:Typedef struct SCI{ U8 data[MAXLEN]; U16 pos;}TSCI;二、访问结构体成员的基本方法有两种:1、定义一个结构体变量直接访问成员变量;2、定义一个结构体指针变量间接访问结构体变量。(1) 结构体变量访问TSCI Sci1;Sci1.data [
2012-09-29 16:34:30
2020
原创 串口接收缓冲区的一点体会
在调试电台的使用过程中,设计到电台参数检测、电台参数修改、电台传输模式启动和数据传输是个部分,程序流程是:(1)依次检测电台参数(CFG = 0),若电台参数正确则继续检测参数,否则修改参数设置。所有参数都正确时返回 TRUE。(2)参数正确后进入数据传输启动模式(CFG =1),接收到READY后表示启动完成,返回TRUE。(3)数据传输模式正常启动后,发送或接收数据。在
2012-09-29 16:14:07
11895
转载 12个有趣的C语言面试题
1.gets()函数问:请找出下面代码里的问题:#include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0; }
2012-09-11 22:04:56
794
原创 FLASH读写----SPI
最近项目中用到FLASH作为数据存储,研究了下以SPI方式读写FLASH的基本方法与流程。应用环境如下: 控制器 STM32F103 FLASH M25P64 读写方式 SPI 编程环境
2012-09-09 22:08:23
19141
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人