- 博客(189)
- 收藏
- 关注
原创 C 语言跳转表的实现及在嵌入式设备中的应用
跳转表的概念引用笔者在 Wikipedia 上看到的关于跳转表的概念,In computer programming, a branch table or jump table is a method of transferring program control (branching) to another part of a program (or a different program ...
2020-04-26 16:58:06
1039
原创 WebAssembly多线程支持的内部原理
这篇博文探讨了 WebAssembly 支持多线程的内部机制与新的指令集,并介绍了这一功能如何为多线程应用程序提供支持。几年前 WebAssembly 刚刚发布时还是一个 MVP(最小可行产品),只有很少的一组功能来提供基本的可用性和实用性。彼时这个 MVP 缺少一个重要特性,就是多线程支持。而如今 WebAssembly 的多线程支持已经非常成熟了,可在工具和 Chrome 中使用。这篇博文...
2020-04-02 17:05:59
1839
原创 超级炫酷的C语言技巧!
C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了。一指定的初始化很多人都知道像这样来静态地初始化数组:int fibs[] = {1, 1, 2, 3, 5};C99标准实际上支持一种更为直观简单的方式来初始化各种不同的集合类数据(如:结构体,联合体和数组)。二数...
2019-10-28 17:17:19
1495
原创 嵌入式C语言编程小知识总结
流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。在LPC2200系列中:可以通过过下面的程序延迟10毫秒:for(i=0;i<200;i++){for(j=0;j<...
2019-10-28 17:15:45
631
原创 C语言的高级技巧
c语言是一门古老的语言,可以看下下面的C语言的介绍:1969-1973年在美国电话电报公司(AT&T)贝尔实验室开始了C语言的最初研发。根据C语言的发明者丹尼斯·里奇 (Dennis Ritchie) 说,C 语言最重要的研发时期是在1972年。说明:丹尼斯·里奇(Dennis Ritchie),C语言之父,UNIX之父。1978年与布莱恩·科尔尼干(Brian Kernighan)一...
2019-10-28 17:13:29
886
原创 C语言编程的七个必备步骤
C是一种编译性语言。如果你以前从来没有接触过任何的编程语言,那么你则需要学习一下一个拆分的逻辑思维。当我们想要写一个项目或者软件的时候,我们需要把这个整体拆分为7个步骤,这样也会让你的思路看起来更有条理。当然啦,这是最完美的状态。然而在实际操作中,并且是在较大的项目中,你可能需要做一些反复工作,用后一步骤所了解到的内容来改进前一个步骤。第1步: 定义程序目标当你在开始写程序之前,你应对希望...
2019-10-28 17:10:23
3871
原创 10个C语言基础算法
算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。1、计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。C语言实...
2019-10-28 17:05:41
1369
原创 Linux下C语言编程基础知识
1.源程序的编译在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器。 下面我们以一个实例来说明如何使用gcc编译器。假设我们有下面一个非常简单的源程序(hello.c):int main(int argc,char **argv){printf(“Hello Linux\n”);}要编译这个程序,我们只要在命令行下执行:gcc -o hello hello...
2019-10-25 16:46:53
529
原创 常用linux的37个命令
终端机必备工具包Linux包含大量命令,但是我们从这里选择了37个最重要的命令。 学习这些命令,您将在Linux命令提示符下有更多的家。下面的列表按字母顺序显示。 命令在列表中的位置并不代表其有用或简单。 有关命令用法的最终字词,请参阅其手册页。 man命令当然在我们的列表中,它是“ manual”的缩写。1.别名使用alias命令可以给命令或命令序列指定自己的名称。 然后,您可以输入您...
2019-10-21 16:58:24
682
原创 分享 100 道 Linux 笔试题
cron 后台常驻程序 (daemon) 用于:A. 负责文件在网络中的共享B. 管理打印子系统C. 跟踪管理系统信息和错误D. 管理系统日常任务的调度在大多数Linux发行版本中,以下哪个属于块设备 (block devices) ?A. 串行口B. 硬盘C. 虚拟终端D. 打印机下面哪个Linux命令可以一次显示一页内容?A. pauseB. catC. ...
2019-10-21 16:57:26
2379
原创 摸鱼必备!3个 Linux 命令行工具让你假装很忙!
如果你花时间看过谍战惊悚片、动作片或犯罪电影,你就会在脑海中清晰地勾勒出黑客坐在电脑屏幕前的样子:一行行快速移动的代码,大量的矩阵中的十六进制数字代码像雨水一样飞过。也许有一张世界地图,上面有一些发光点和一些快速更新的图表,也许还会有三维几何图形。如果可能的话,这一切都可以显示在多个显示器上面,在黑客电影中就有黑客同时使用了 7 个显示器。当然,我们这些技术人员很快意识到这完全是胡说八道。虽然...
2019-10-17 16:37:58
297
原创 STM32的这5大嵌入式系统很难选吗?小白看完都懂了
基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择,分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。1、μClinuxμClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinu...
2019-10-17 16:31:14
496
原创 arm汇编笔记(一)
arm汇编笔记ARM模式是4字节,Thumb模式是2字节ARM状态的指令长度是32位的,Thumb状态的指令长度是16位的(也可能为32位)R7 系统调用号SP Stack Point 栈顶指针LR Link Register 函数返回地址PC Program Counter 下一条指令地址CPSR Current Program Status Registe 当前程序状态寄存器 其...
2019-10-17 16:28:34
294
原创 必会,详细剖析11道嵌入式Linux C语言面试题
预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)答: #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:#define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中...
2019-10-16 16:22:15
352
原创 C 语言实现Linux cp 命令
linux cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。小编今天介绍的项目课程就是教你用C语言来实现这个Linux cp命令,对C语言学习者来说是非常不错的练手项目。项目名称:【C 语言实现Linux cp 命令】项目简介:该项目通过完成C 语言实现Linux cp 命令,掌握Linux操作系统中的文件IO相关的系统函数和目录相关操作的系统函数,比如open, w...
2019-10-16 16:20:04
824
原创 linux下的C语言开发(makefile编写)
对于程序设计员来说,makefile是我们绕不过去的一个坎。可能对于习惯Visual C++的用户来说,是否会编写makefile无所谓。毕竟工具本身已经帮我们做好了全部的编译流程。但是在Linux上面,一切变得不一样了,没有人会为你做这一切。编代码要靠你,测试要靠你,最后自动化编译设计也要靠你自己。Makefile 介绍首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴...
2019-10-16 16:15:41
1752
原创 C语言入门(一)
c语言入门#include<stdio.h> //头文件,一条预处理命令int main() //主函数{/*在双引号中间输入Hello World*/ printf("Hello World"); //printf(),C语言唯一主函数return 0; }程序解释——注释注释是写给程序员看的,不是写给...
2019-10-14 16:18:18
278
1
原创 【干货】c语言基础语法——结构体
1、关于C语言结构体的引入在实际问题中有时候我们需要几种数据类型一起来修饰某个变量。例如一个学生的信息就需要学号(字符串),姓名(字符串),年龄(整形)等等。这些数据类型都不同但是他们又是表示一个整体,要存在联系,那么我们就需要一个新的数据类型。——结构体,它就将不同类型的数据存放在一起,作为一个整体进行处理。2、C语言使用结构体变量进一步加强了表示数据的能力2.1;结构体声明;//...
2019-10-14 16:16:31
260
原创 怎么自学C语言 入门
第一阶段:C语言基础在开始学习C语言基础时,要反问自己为什么学C语言,如何学好C语言。同时要知道什么是C语言以及C语言的发展。当对这些知识有了一个概念之后,就正式开始学习C语言了,其中,可能会学到数据类型、运算符、表达式、数组、/函等,这些是为了对C语言的基础有一个基础认知,扩展,整合;还会学到指针、联合体、结构体、枚举、位运算、预处理、文件等知识点,学这些是为了全面掌握面向过程设计、实练逻辑...
2019-10-14 16:09:26
818
原创 【三分钟精通C语言指针】C语言指针总结精华
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编...
2019-10-12 16:46:38
349
原创 C语言指针指向你的时候,菜鸡原型毕露!
复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型。所以先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样。所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一步分析.下面让我们先从简单的类型开始慢慢分析吧:int p; //这是一个普通的整型变量int p; //首先...
2019-10-12 16:45:23
257
原创 史上最详细 Linux 用户与用户组知识
1、用户和用户组文件在 linux 中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的。在 linux 系统中,所创建的用户帐号和其相关信息 (密码除外) 均是存放在 / etc/passwd 配置文件中。由于所有用户对 passwd 文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了 / etc/shadow 的配置文件中。在 passwd 文件中,一...
2019-10-11 16:28:03
185
原创 这20个好用的 Unix/Linux 命令技巧 送给你
1、删除一个大文件我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入:/path/to/file.log或使用如下格式: > /path/to/file.log然后删除它rm /path/to/file.log2、如何记录终端输出?试试使用script命令行工具来为你的终端输出创...
2019-10-11 16:26:17
156
原创 100 道 Linux 笔试题,能拿90分以上的都去了BAT
cron 后台常驻程序 (daemon) 用于:A. 负责文件在网络中的共享B. 管理打印子系统C. 跟踪管理系统信息和错误D. 管理系统日常任务的调度在大多数Linux发行版本中,以下哪个属于块设备 (block devices) ?A. 串行口B. 硬盘C. 虚拟终端D. 打印机下面哪个Linux命令可以一次显示一页内容?A. pauseB. catC. ...
2019-10-11 16:23:58
233
原创 STM32低功耗时引脚配置
1写在前面有低功耗产品设计经验的朋友都应该知道,一个产品的功耗不光是硬件功耗的事,其实软件也是影响整个产品功耗的一个关键因素。我之前也开发过几款使用电池供电的产品,调试起来,那叫一个痛苦,软件和硬件各种因素都要考虑。当你确信软件没问题了,可能硬件某个地方又存在漏电流,这其中的“痛苦”我也不再这里描述了。下面给出STM32低功耗时,其引脚的相关配置。2实现功耗优化的GPIO软件指南1.将...
2019-10-10 17:25:07
887
原创 STM32单片机硬件关键基础精华及注意事项
一、背景如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗,那么,基于 ARM Cortex-M3内核的STM32系列处理器也许能帮你解决这个问题。使你不必在性能、成本、功耗等因素之间做出取舍和折衷。即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的“新生儿”相信你和我一样不会担心这款针对16位MC...
2019-10-10 17:14:15
476
转载 这样学习STM32单片机,从菜鸟到牛人很简单!
我想说,为了学习单片机而去学习单片机的思路不对。你问,如何系统地入门学习stm32呢?这本身就是一个错误的问题。假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习。你要考虑的是, 我可以用STM32实现什么?为什么使用STM32而不是8051?是因为51的频率太低,无法满足计算需求?是51的管脚太少,无法满足众多外设的IO?是51的功耗太大,电池挺不住?是51的功能...
2019-10-10 17:07:00
409
原创 经常遇到的10大C语言基础算法(珍藏版源码)
算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。1、计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1...
2019-10-09 17:21:09
231
原创 必备的10大C语言基础算法(附完整代码)
算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。1、计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1...
2019-10-09 17:17:01
2450
原创 【C语言经典编程技术】C语言中union与struct的区别及sizeof的计算方式
C语言中union与struct的区别在C语言中结构体和联合具有细微差别,特别是使用sizeof()对其求大小时,许多刚刚接触C语言不久的朋友对此非常困惑,下面我将简单谈一下自己对union与struct之间的区别联 合(union)联合说明和联合变量定义联合也是一种新的数据类型, 它是一种特殊形式的变量。联合说明和联合变量定义与结构十分相似。其形式为:union 联合名{数据类型...
2019-10-09 17:15:50
551
原创 freeRTOS在F429上的移植
项目中要用到嵌入式操作系统,考虑到免费开源,我首先想到了freeRTOS,之前只是在使用,对于移植没有在意,今天花了一些时间进行移植,平台是STM32F429,编译器是MDK5,由于,我们不需要理会汇编部分的内容,freeRTOS的官方源码包里面已经针对很多平台将接口对接好了,官方源码包里的demo是我们移植时的一个重要参考,里面囊括了很多平台,我们只需要找到我们 自己的平台便可轻松移植,下面是移...
2019-09-29 17:29:09
386
原创 基于STM32的FreeRTOS应用的几个常见问题
1、怎样将 FreeRTOS 移植到不同的Cortex-M 内核?答:若需将 FreeRTOS 移植到正确的Cortex-M 产品,您必须从正确的目录导入 “port.c”文件。例如,若微控制器是带有IAR 工具的 Cortex-M0 内核,则您必须从“FreeRTOS\Source\portable\IAR\ARM_CM0” 获取 port.c。必备Linux命令和C语言基础http://...
2019-09-29 17:12:16
415
原创 想学FreeRTOS实时操作系统的看过来,实用的入门教程
FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。http://www.makeru.com.cn/live/1392_198.html?s=69821由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、Free...
2019-09-29 17:06:09
2494
原创 适合STM32的三大嵌入式操作系统
基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。1、μClinuxμClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的...
2019-09-27 16:38:26
870
原创 详解STM32F10xx体系架构
一.STM32F10xx 芯片由丝印所体现出的共同点和区别先简单说说命名规则:101基本型,102USB基本型,103增强型,105或107互联型。T:36脚,C:48脚,R:64脚,V:100脚,Z:144脚。C:256K SRAM, D:384K SRAM, E:512K SRAM。我们正对芯片的丝印,会看到芯片左下角会有一个小圆点(正方向),有的在右上角会有一个稍大点的圆圈标记,靠...
2019-09-27 16:33:08
3279
原创 STM32实例-按键控制实验
前几章我们介绍的都是 IO 口输出的使用,这一章我们通过按键控制实验来介绍下 IO 口作为输入的使用。本章所要实现的功能是:通过开发板上的 4 个按键控制 LED。按键介绍按键是一种电子开关, 使用时轻轻按开关按钮就可使开关接通, 当松开手时,开关断开。我使用的按键及内部简易图通常如下图所示。按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态,如果按键按下,初始导通状态...
2019-09-27 16:17:12
9707
原创 C语言实现简易Linux终端版本聊天室
简易Linux终端聊天室必备Linux命令和C语言基础http://www.makeru.com.cn/video/1876.html?s=69821今天我们来实现一个简单的小项目,在这个项目中,我们将实现一个终端版的简易Linux聊天室。 实现的效果:服务器启动,监测客户端连接的个数,监测每个客户端的IP地址以及端口号,当每个客户端发送消息时,服务器上会有线程专门将每个客户端发送的信...
2019-09-26 16:34:14
2438
2
原创 C语言项目开发实战之2048游戏
2048游戏也算是风靡一时的益智游戏。其背后实现的逻辑比较简单,代码量不算多,而且趣味性强,适合作为有语言基础的童鞋来加强编程训练。必备Linux命令和C语言基础http://www.makeru.com.cn/video/1876.html?s=69821我们提供给大家的 2048 小游戏,不要求大家精通 C 语言,也不会涉及到指针的使用,只需要学会以下几个知识点即可:会使用变量(in...
2019-09-26 16:24:05
1935
原创 干货!嵌入式C语言编程小知识总结
流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。C语言编程基础http://www.makeru.com.cn/live/1392_198.html?s=69821在LPC2200...
2019-09-26 16:10:36
210
原创 单片机硬件设计的经验总结
下面是总结的一些设计中应注意的问题,和单片机硬件设计原则,希望大家能看完探索者号智能自平衡车http://www.makeru.com.cn/course/details/2961?s=69821(1) 在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU的时钟输入端都易产生噪声,在放置的时候应把它们靠近些。对于那些易产生噪声的器件、小电流电路、大电流电路...
2019-09-25 15:52:55
2413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人