
★嵌入式高级C语言(非常重要)
文章平均质量分 57
嵌入式入门到精通第七门课,C语言是嵌入式开发做基础和核心的知识,本专栏会从头开始把嵌入式C语言实践及面试技巧都教给你!
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
CodeAllen嵌入式
公众号【CodeAllen嵌入式】,CSDN博客专家,专注通信电子及嵌入式软件方向职业规划,全网技术矩阵粉丝15w+,欢迎交流一起成长!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
错误解决:implicit declaration of function 警告解决方法 (函数的隐式说明)
2 在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明。1 没有把函数所在的c文件生成.o目标文件。有两种情况会产生这种情况。原创 2019-07-20 22:03:19 · 185688 阅读 · 11 评论 -
错误解决:[Warning] incompatible implicit declaration of built-in function ‘memset‘
[Warning] incompatible implicit declaration of built-in function ‘memset’原因是memset第一个参数是void * 类型,我用的是char类型,存在隐式声明第一想法是强制类型转换,memset((void*)xx, 0, sizeof(xx));还是不行,依然有warning好吧,原来是缺了memset头文件**#include <string.h>**这个缺少头文件不会报错,但是有warning原则上编译的原创 2021-03-29 20:01:25 · 39292 阅读 · 0 评论 -
错误解决:%c对应类型为char, %s对应类型为char *
用作输入时, 二者参数都要传char*型. %c输入函数只会对一个字节空间赋值. 而%s会一直赋值,直到输入中遇到空白字符为止.用作输出时, %c传char类型,输出一个字符. %s传char*类型参数, 输出到\0为止.%c对应类型为char, %s对应类型为char *, 即字符串.原创 2021-08-22 15:35:49 · 44000 阅读 · 0 评论 -
错误解决:“a label can only be part of a statement and a declaration is not a statement”
就是上面这一句struct rlimit rlmt;才最终导致了编译过程出现的错误提示,解决的方法是将这句struct rlimit rlmt;对变量的声明移到label之前即可。经过上述修改后,问题得以解决。转载 2021-07-27 00:12:37 · 38323 阅读 · 0 评论 -
错误解决:declared ‘static‘ but never defined
解决的办法很简单,将头文件中的声明转移到.c文件中就可以了,即将函数delay的声明从uart.h移动到uart.c文件的开始就可以了。声明为static的函数不能被其他文件所使用,如果其他文件include uart.h。那么就会报上面的错误。原创 2021-08-22 15:33:24 · 46162 阅读 · 0 评论 -
C语言实例-5 快速排序
快速排序在嵌入式开发中使用还是比较多的,因为快排的时间复杂度是O(n log n),比许多其他排序算法更高效,适合资源有限的嵌入式环境。原创 2021-05-22 18:52:58 · 38255 阅读 · 0 评论 -
C语言实例-4 插入排序
插入排序在嵌入式开发中也是经常使用的算法之一,因为插入排序比较简单,不需要额外的内存空间,这个很适合嵌入式系统的特点。另外对于一些传感器数据处理的时候,因为数量量比较少,插入排序的性能也比较好。上一篇说了冒泡排序,这一篇说插入排序。原创 2019-08-10 12:24:35 · 10534 阅读 · 0 评论 -
C语言实例-3 冒泡排序
嵌入式开发里,冒泡排序使用的挺多,主要是因为冒泡排序代码比较简单,毕竟很多搞嵌入式的开发其实软件能力并不是很强,所以简单耐用才是嵌入式的特点。原创 2022-12-08 16:17:53 · 2228 阅读 · 0 评论 -
C语言实例-2 大小写字符串的转换
因为嵌入式开发中通信是非常常规的一个操作,比如和外部的蓝牙或者WiFi模块通信时,有些命令是大写。单片机发送命令或者解析模块返回的命令的时候,需要将字符串转为大小写,使其统一。这也是嵌入式开发中经常遇到的C语言使用场景。然后是小写字符串转大写字符串。原创 2020-04-10 02:02:29 · 20458 阅读 · 2 评论 -
C语言实例-1 检查闰年
我之前做过很多单片机项目,都是和时钟有关,这里边分享一个检查闰年的逻辑。闰年是为了弥补历法和地球公转周期的差异,而人为的设立的一个规则。•能被4整除但不能被100整除的年份是闰年。然后就是代码实现:(使用模块化的编程方式)•能被400整除的年份也是闰年。简单来说,就是四年一个闰年。原创 2019-07-16 23:34:15 · 10919 阅读 · 0 评论 -
C语言单片机源码-2 单片机按键消抖源码分享
基本思想就是监测,延时,监测。。。,放进循环中可进行扫描式操作/** * 函数功能: 读取按键KEY1的状态 * 输入参数:无 * 返 回 值: KEY_DOWN:按键被按下; * KEY_UP :按键没被按下 * 说 明:无。 */KEYState_TypeDef KEY1_StateRead(void){ ...原创 2018-02-13 11:30:30 · 50689 阅读 · 0 评论 -
C语言单片机源码-1 基于51单片机的摇摇棒源码分享
最近整理资料,看见这个之前做的摇摇棒,是基于51单片机的,下面把源程序贴出来,有任何问题欢迎留言!#include#define uchar unsigned char#define uint unsigned int sbit key = P3^0;//定义切换画面开关uchar Key_num;//定义按键次数uchar Int0_num=0;//定义中断次数uchar D...原创 2017-05-31 00:35:20 · 50647 阅读 · 5 评论 -
C语言后记-33 8086汇编寄存器使用(内存访问)
3.1 内存中字的存储3.2 DS和[address]3.3 字的传送3.4 mov、add、sub指令3.5 数据段3.6 栈3.7 CPU提供的栈机制3.8 栈顶超界的问题3.9 push、pop指令3.10 栈段在第2章中,我们主要从 CPU 如何执行指令的角度讲解了8086CPU的逻辑结构、形成物理地址的方法、相关的寄存器以及一些指令。这一章中,我们从访问内存的角度继续学习几个寄存器。在0地址处开始存放20000(4E20H):(高对应高地址位)原创 2019-08-05 21:52:23 · 10071 阅读 · 0 评论 -
C语言后记-32 C语言基本构成元素总结
之前有同学让我帮忙总结下嵌入式C语言需要学习的知识点,下边是我利用业余时间总结的思维导图,仅供参考。原创 2023-01-08 22:47:47 · 665 阅读 · 0 评论 -
C语言后记-31 Vim快捷键及使用技巧
● 替换模式:在普通模式下通过光标选中一个字符,然后按r键,再输入一个字符,你会发现你输入的字符就替换掉了原来那个被选中的字符。● 命令行模式:普通模式下输入冒号(:)后会进入该模式,在该模式下输入命令,如输入:set number或:set nu可以显示行号。● 插入模式:按i/o/a键进入该模式,进行文本编辑操作,不同之处在于插入字符的位置在光标之前还是之后。● 普通模式:打开文件时的默认模式,在其他模式下按下ESC键都可返回到该模式。● k:在普通模式下,敲击k键,光标向上移动一个字符。原创 2023-08-30 23:04:18 · 968 阅读 · 0 评论 -
C语言后记-30 汇编语言入门教程
学习编程其实就是学高级语言,即那些为人类设计的计算机语言。但是,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行。学会高级语言,并不等于理解计算机实际的运行步骤。计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言。汇编语言不容易学习,就连简明扼要的介绍都很难找到。下面我尝试写一篇最好懂的汇编语言教程,解释 CPU 如何执行代码。原创 2020-12-13 21:38:23 · 1178 阅读 · 0 评论 -
C语言后记-29 嵌入式软件数据结构的特点
嵌入式系统的定义是:以应用为中心,以计算机技术为基础,软件硬件可以裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。通俗来说,除了通用计算机,比如笔记本电脑和台式机电脑之外的所有包含CPU的系统都是嵌入式系统。嵌入式操作系统因为近年来的发展,其种类和功能已经多种多样,如果从性能上分的话,主要有高级嵌入式系统和中低档嵌入式系统。高级嵌入式主要是给类似于收集,数码相机之类的多媒体设备使用。这类设备对硬件的要求很高,RAM比较大,CPU的速度也比较快。原创 2021-08-22 15:31:58 · 39361 阅读 · 0 评论 -
C语言后记-28 C语言中,再对文件的操作模式中,a和a+、w和w+、r和r+有什么区别?
在C语言中,文件操作模式(通过fopen()函数指定)的aa+ww+rr+决定了文件的打开方式、读写权限和初始位置。原创 2021-08-22 15:27:27 · 51196 阅读 · 0 评论 -
C语言后记-27 推荐三个 C 语言开源项目
Lua 的解释器由 ANSI C 编写,具有跨平台特性,并提供相对简单的 C 应用程序编程接口(API),便于嵌入到各种应用程序中。因为很多同学感觉C语言比较枯燥,学习没有意思,今天这篇文章就是想介绍一些在网站上看到的C语言小项目,帮助大家深入学习。为了提升用户体验,卡片集成了电子墨水屏,并开发了配套的 Android 应用,用于显示内容的定制。Lua 的设计注重轻量级,完整的参考解释器编译后仅约 247KB,适用于各种嵌入式平台。这是一个开源算法实现的集合,使用C语言编写,并采用GPLv3许可证。原创 2018-02-13 11:38:00 · 41089 阅读 · 4 评论 -
C语言后记-26 C语言32个关键字总结
C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类1 数据类型关键字(12个):(1) char :声明字符型变量或函数(2) double :声明双精度变量或函数(3) enum :声明枚举类型(4) float:声明浮点型变量或函数(5) int:声明整型变量或函数(6) long :声明长整型变量或函数(7) short :声明短整型变量或函数(8) signed:声明有符号类型变量或函数(9) struct:声明结.原创 2020-11-16 20:28:32 · 37385 阅读 · 0 评论 -
C语言后记-25 #include<>和#include“ “区别
一般来说#include <> 的查找位置是标准库头文件所在目录#include “” 的查找位置是当前源文件所在目录补充:""首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于include自定义的头文件,让系统优先使用当前目录中定义的。若 #include “” 查找成功,则遮蔽 #include <> 所能找到的同名文件;否则再按照 #include <> 的方式查找文件。另外标准库头文件都放在 #include <> 所查找的位原创 2020-11-06 22:53:07 · 38898 阅读 · 0 评论 -
C语言后记-24 C语言复杂指针阅读方法 - 右左法则
简化的方法就是typedef,这个是使用的非常广的,可以简化指针和数组的定义。3.遇到圆括号或方括号时可以确定部分类型,并调转方向。1.从最里边的圆括号中未定义的标识符看起。不过我还是用比较容易理解的方式记录一下。但是在简化之前应该先读懂这个代码!4.重复2 3 步骤,直到阅读结束。2.首先往右看,在往左看。可以看下我之前的文章。原创 2020-09-01 00:08:40 · 73222 阅读 · 2 评论 -
C语言后记-23 左右法则(The “right-left“ rule)
The “right-left” rule is a completely regular rule for deciphering Cdeclarations. It can also be useful in creating them.“左右”规则是解密C的完全规则声明。在创建它们时也很有用.First, symbols. Readas “pointer to” - always on the left side[] as “array of” - always on t翻译 2020-09-01 00:04:36 · 37197 阅读 · 0 评论 -
C语言后记-23 C语言中<<、>>、&、|的实际用途
作为一个开发人员,在看别人项目或者看第三方库的源代码时,可能经常会看到譬如a>>4&0x0f这样的写法,对于一些初入行的童鞋来说可能就不是太明白这是什么意思。下面我们就来讲解这几个运算符的实际用途。原创 2020-08-07 22:07:56 · 48108 阅读 · 2 评论 -
C语言后记-22 初学者如何入门C语言
原文链接:公众号:Allen有话说之前发了一篇初学者首先应该的学的编程语言,我的建议是C语言,然后有个朋友就私信我说C语言太难学了,学会了也没什么用等等。一看就是没看完就开始刚我了,我是建议先学,后边肯定还得继续学习,有分析称薪资最高的程序员群体掌握的编程语言为四种。也就是说学习C语言只是为了之后更好学习其他语言,更好的完成工作内容,所以不必纠结了。在说些C语言太难的问题,这个难其实是因人而异的,而且学习之后的效果也差别很大,所以不是很好定义,但是从大多数学习编程的经验来看,任何一门编程都不算很难,原创 2020-06-01 23:51:54 · 37914 阅读 · 0 评论 -
C语言后记-21 编写高效C语言的四大绝招
当然,由于编译器的不同,可能效率的差距不大,但是,以我目前遇到的MS C ,ARM C 来看,效率的差距还是不小。数学是计算机之母,没有数学的依据和基础,就没有计算机的发展,所以在编写程序的时候,采用一些数学方法会对程序的执行效率有数量级的提高。D方法是我看到的最好的置位操作函数,是ARM公司源码的一部分,在短短的三行内实现了很多功能,几乎涵盖了所有的位操作功能。计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。原创 2020-02-06 11:06:29 · 37402 阅读 · 0 评论 -
C语言后记-20 指针和地址之间的关系是什么?
因为编译器可以记住“hoge_p 是指向 int 的指针”, 所以只需要简单地在 hoge_p 前面添加*, 就可以通过指针间接取值。归根结底, 指针就是地址, 地址就是内存中被分配的“门牌号”。所以, 指针类型和 int类型应该是一回事吧!但是, 像第 5 行这样在 hoge_p 前附加*……原创 2019-10-24 00:15:25 · 40876 阅读 · 0 评论 -
C语言后记-19 C语言中指针是什么?
int* a, b;原创 2019-10-18 22:13:37 · 37266 阅读 · 0 评论 -
C语言后记-18 开发具有可变长参数的函数的方法
【代码】C语言后记-18 开发具有可变长参数的函数的方法。原创 2019-10-17 20:17:55 · 36998 阅读 · 0 评论 -
C语言后记-17 C语言推荐书籍(珍藏版)
1.《C语言程序设计:现代方法》(第2版)推荐理由:时至今日, C语言仍然是计算机领域的通用语言之一,但今天的 C语言已经和最初的时候大不相同了。本书最主要的一个目的就是通过一种“现代方法”来介绍 C语言,书中强调标准 C,强调软件工程,不再强调“手工优化”。这一版中紧密结合了 C99标准,并与 C89标准进行对照,补充了 C99中的最新特性。本书分为 C语言的基础特性、 C语言的高级特性、 C语言标准库和参考资料 4个部分。原创 2019-10-20 17:16:37 · 60873 阅读 · 1 评论 -
C语言后记-16 Mac端C语言学习软件
与Windows类似,Mac上的IDE同样整合了编辑器、编译器、调试器等工具,提供图形化界面以简化开发流程。原创 2019-08-22 23:29:22 · 39766 阅读 · 0 评论 -
C语言后记-15 什么时候使用const
你应该尽可能的使用const引用,通过声明你的函数参数为常变量(任何可能的地方)或者定义那种const method,你就可以非常有效确立这样一种概念:本成员函数不会改变任何函数参数,或者不会改变任何该对象的数据。当我自己写程序需要用到const的时候,或者是读别人的代码碰到const的时候,我常常会停下来想一会儿。C/C++中,数据传递给函数的方式默认的是值传递,也就是说当参数传递给函数时会产生一个该参数的拷贝,这样该函数内任何对该参数的改变都不会扩展到此函数以外。任何对引用的改变都将改变原变量。原创 2019-05-30 08:19:52 · 38448 阅读 · 0 评论 -
C语言后记-14 数组类型详细总结
1数据类型关键字。原创 2019-05-08 22:31:42 · 41053 阅读 · 0 评论 -
C语言后记-13 补码计算方法
原码简单,但是加减复杂,存在加减乘除四种运算,增加了CPU的负荷。除3取余,直到商为0,余数倒序排列。就是 FFFF FFFD。先求与该负数相对应的正整数的二进制代码,然后将所有为取反,末尾加一,不够位数时,移码主要用于浮点数的阶码的存储。反码:运算不便,也没有在计算机中应用。移码:表示数值平移n位,n称为移码量。占四个字节,32位,所以补29个1。原码:也叫 符号-绝对值码。,其余二进制位的数字的绝对值的二进制位。作业:8位二进制转化为十进制。2.已知二进制求十进制。原创 2019-05-08 21:54:12 · 58594 阅读 · 1 评论 -
C语言后记-12 条件编译命令分析:#error #line #pragma # 和## 操作符使用
#error 和 #line 使用分析#error 用于生成一个编译错误消息用法: #error message (message不需要使用双引号)#error 编译指示字用于自定义程序特有编译错误消息类似的,#warn...原创 2019-04-07 22:15:27 · 38503 阅读 · 0 评论 -
C语言后记-11 Memset memcpy Strcpy 函数使用探究
【代码】C语言后记-11 Memset memcpy Strcpy 函数使用探究。原创 2019-04-02 08:33:59 · 38086 阅读 · 0 评论 -
C语言后记-10 如何用C语言画一个高逼格的“心形“
把「3D版」输出至PPM文件,可以用Photoshop打开。另外降低了ny的值导致有超有趣的pattern,就保留下来吧。「3D」版,简单使用迭代法求解,用Finite difference求法矢量,用wrapped diffuse着色。简单使用迭代法求解,用Finite difference求法矢量,用wrapped diffuse着色。(这其实是该函数的Level set)原创 2019-07-05 07:28:27 · 55208 阅读 · 5 评论 -
C语言后记-9 Windows端C语言学习软件
我在放弃Dev C++之后选择的平台,刷二级C语言全程使用的IDE,也是一款开源的IDE,他的特点是可以跨平台使用,其实linux下使用不方便,主要还是Windows下使用较多,内置甚至还可以编译单片机代码(不推荐,没必要),有官方绿色版,可以免安装使用.终于到了可以正常使用的版本了,首先Dev C++ 是一款免费开源的 C/C++ IDE,体积很小巧,我初学C语言使用的就是Dev C++,界面很漂亮,因为是内嵌 GCC 编译器,编译感觉很快,但是后边不在使用的原因也是英文调试功能不行,经常卡死。原创 2018-12-30 18:50:55 · 2105 阅读 · 0 评论 -
C语言后记-8 嵌入式C语言核心要素概览
前言:以下是我利用业余时间整理的嵌入式C语言学习知识点思维导图,供同学们参考,希望对大家有所帮助。原创 2018-12-26 22:57:27 · 9434 阅读 · 0 评论 -
C语言后记-7 C语言标准的变迁总结
1.首先就是官网(最好的介绍)http://www.lua.org/2.我经常去的易百教程https://www.yiibai.com/lua/3.经常去的菜鸟教程http://www.runoob.com/lua/lua-basic-syntax.html4.GitHub,最好的深入方法还是看源码https://github.com/lua/lua...原创 2018-11-26 22:14:15 · 38992 阅读 · 0 评论