嵌入式C语言
文章平均质量分 51
嵌入式C语言
薛皮话梅
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【嵌入式C语言】预处理器和预处理指令
预处理指令#define、#include、#ifdef、#else、#endif、#ifndef、#if、#elif、#line、#error、#pragma调试__FILE__ //表示编译的源文件名__LINE__ //表示当前文件的行号__FUNCTION__ //表示函数名__DATE__ //表示编译日期__TIME__ //表示编译时间printf("file:%s,line:%d,date:%s,time:%s",__FILE__,__LINE__,_原创 2022-01-21 08:39:35 · 320 阅读 · 0 评论 -
【嵌入式C语言系列】指针
指针初始化指针变量指针是一个值为内存地址的变量。正如char类型变量的值是字符,int类型变量的值是整数,指针变量的值是地址。创建指针变量,首先要声明指针变量的类型。int *pi; // pi 是指向 int 类型变量的指针char *str; // str 是指向 char 类型变量的指针float *pf, *pg; // pf, pg 都是只想 float 类型变量的指针// 定义的同时进行初始化int a = 5; int *p = &a;// 先定义后初始化in原创 2022-01-20 14:54:54 · 1393 阅读 · 0 评论 -
【嵌入式C语言系列】位运算
按位与运算符(&)参与运算的两个操作数,每个二进制位进行“与”运算,若两个都为1,结果为1,否者为0。例如,1011&1001,第一位都为1,结果为1;第二位都为0,结果为0;第三位一个为1,一个为0,结果为0;第四位都为1,结果为1。最后结果为1001。按位或运算符(|)参与运算的两个操作数,每个二进制位进行“或”运算,若两个都为0,结果为1,否者为1。例如,1011 | 1001,第一位都为1,结果为1;第二位都为0,结果为0;第三位一个为1,一个为0,结果为1;第四.原创 2022-01-20 15:10:13 · 3919 阅读 · 2 评论 -
【嵌入式C语言系列】数据类型
原创 2022-01-20 15:12:39 · 326 阅读 · 0 评论 -
【嵌入式C语言系列】关键字详解【作用域和static】
作用域和static块作用域块作用域:一对花括号 “{}” 括起来的代码区域void fun(void){ for (int i = 0; i<10; i++) { ... }}/*变量i的作用域则在for循环体内,当循环结束后,变量就会被释放,可见其作用域缩小了.这样的好处是增加了安全性和灵活性。*/局部变量局部变量:变量被定义在函数体内,其有效范围是在被定义的函数内,函数执行完毕后变量即被释放。局部变量会在每次声明的时候被重新初始化(如果在声明的时候有初始化赋值原创 2022-01-20 15:34:45 · 659 阅读 · 0 评论 -
【嵌入式C语言】关键字详解【void与void*】
void表示的是无类型,不能声明变量或常量,但是可以把指针定义为void类型,如void* ptr。void* 指针可以指向任意类型的数据,在C语言指针操作中,任意类型的数据地址都可转为void* 指针。因为指针本质上都是unsigned int。常用的内存块操作库函数:void * memcpy( void *dest, const void *src, size_t len );void * memset( void *buffer, int c, size_t num);数据指针为void原创 2022-01-21 08:39:04 · 711 阅读 · 0 评论 -
【嵌入式C语言系列】关键字详解【volatile】
volatilevolatile原意是“易变的”,在嵌入式环境中用volatile关键字声明的变量,在每次对其值进行引用的时候都会从原始地址取值。由于该值“易变”的特性所以,针对其的任何赋值或者获取值操作都会被执行(而不会被优化)。由于这个特性,所以该关键字在嵌入式编译环境中经常用来消除编译器的优化,可以分为以下三种情景:修饰硬件寄存器;修饰中断服务函数中的非自动变量;在有操作系统的工程中修饰会被多个应用修改的变量;修饰硬件寄存器以STM32F103的HAL库函数中GPIO的定义举例,如下为原创 2022-01-20 15:35:36 · 2494 阅读 · 0 评论 -
【嵌入式C语言系列】关键字详解【typedef】
typedef用法typedef工具是一个高级数据特性,利用typedef可以为某一类型自定义名称。这方面与#define类似,但是两者有三处不同:与#define不同,typedef创建的符号只受限于类型,不能用于值;tyedef由编译器解释,不是预处理器;在其受限范围内,typedef比#define更灵活;使用typdef时要记住,typedef并没有创建任何新类型,它只是为某个已有的类型增加了一个方便使用的标签。假设要用BYTE表示1字节的数组,只需要像定义个char类型变量一样定原创 2022-01-21 08:39:57 · 625 阅读 · 0 评论 -
【嵌入式C语言系列】关键字详解【struct】
struct用法此声明描述了一个由n个数据类型的成员组成的结构,它并未创建实际的数据对象,只描述了该对象由什么组成。C的结构的声明格式如下:struct [结构体名] { 类型标识符 成员名 1; 类型标识符 成员名 2; ... 类型标识符 成员名 n;};struct关键字,它表明跟在其后的是一个结构,后面是一个可选的标记,后面的程序中可以使用该标记引用该结构,因而我们可以在后面的程序中可以这样声明:struct [结构体名] 结构体变量;在结构体声明中用一对花括号括起来的原创 2022-01-20 15:36:28 · 795 阅读 · 0 评论 -
【嵌入式C语言系列】关键字详解【const】
constconst修饰变量const修饰变量,功能是对变量声明为只读特性,并保护变量值以防被修改。const修饰变量,还起到了节约空间的目的,通常编译器并不给普通const只读变量分配空间,而是将他们保存在符号列表中,无需读写内存操作,程序执行效率也会提高。const int i = 5;int const i = 5;const修饰数组const修饰数组,表明此数组具有只读性,一旦被更改程序会出错。const int array[5] = {0,1,2,3,4};int原创 2022-01-20 15:32:43 · 783 阅读 · 0 评论 -
【嵌入式C语言系列】关键字详解【enum】
enum用法C语言中用来修饰枚举类型变量的关键字。在C语言中可以使用枚举类型声明符号名称来表示整型常量,使用enum关键字可以创建一个新的“类型”并指定它可具有的值(实际上,enum常量是int类型,因此只要能使用int类型的地方就可以使用枚举类型)。enum [枚举类型名] { 枚举符 1, 枚举符 2, ... 枚举符 n,};enum color{ red, green, blue, yellow};enum常量在上面的例子中,red, greeb, blue原创 2022-01-20 15:37:10 · 781 阅读 · 0 评论
分享