摘要:基本语法 文本样式 黑体、斜体、非wiki格式功能可以在wiki 的编辑器上方找到。 格式语法效果 黑体 '''黑体''' 黑体 斜体 ''斜体'' 斜体 黑体+斜体 '''''示例''''' 示例 划掉 <strike>划掉</strike> 划掉 非wiki格式 <nowiki>{{infobo
阅读全文
摘要:低功耗是MCU的一项非常重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话,就会经常出现电量不足的情况,影响用户体验。 平时我们在做产品的时候,基本的功能实现很简单,但只要涉及低功耗的问题就比较棘手了,比如某些可以低到微安级的MCU,而自己设计的低功耗怎么测都是毫安
阅读全文
摘要:目前,嵌入式多核处理器已经在嵌入式设备领域得到广泛运用,但嵌人式系统软件开发技术还停留在传统单核模式,并没有充分发挥多核处理器的性能。程序并行化优化目前在PC平台上有一定运用,但在嵌入式平台上还很少,另外,嵌入式多核处理器与PC平台多核处理器有很大不同,因此不能直接将PC平台的并行化优化方法应用到嵌
阅读全文
摘要:.hex文件中包含有实际代码的存储地址、帧长度、类型、校验等,而这些东西在你烧录程序时并不会烧录进单片机,这些东西只是为烧录软件指定程序要烧录进单片机的地址,以及保证要烧录数据的完整性。所以实际烧录进单片机的数据要远远小于.hex中的数据。比如,我的一个.hex的文件大小为52KB,我烧录进单片机,
阅读全文
摘要:我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段: 1) 预处理(Pre-Processing) 2) 编译(
阅读全文
摘要:初级运算符( )、[ ]、->、. 高于 单目运算符 高于 算数运算符(先乘除后加减) 高于 关系运算符 高于 逻辑运算符(不包括!) 高于 条件运算符 高于 赋值运算符 高于 逗号运算符。 位运算符的优先级比较分散。 除了赋值运算符、条件运算符、单目运算符三类的平级运算符之间的结合顺序是从右至左,
阅读全文
摘要:1、基本原理 三种定时器区别 通用定时器功能特点描述 在这里只用输入捕获事件也能获取脉冲个数同时可以只使用它来获取脉冲宽度,比如当捕获到上升沿,马上进入中断,把计数器的值置零,然后等待捕获下降沿的到来,记下此时的值,(当然中间有可能有多次中断,故计算脉冲时要算上),输出比较来输出PWM波形,更新来做
阅读全文
摘要:周期由自动重装载寄存器ARR寄存器来决定的,捕获/比较寄存器CCRx来决定占空比!!! 工作过程描述:首先假设输出为向上计数,且设置CC1P位为0高电平有效,当设置为模式1,即计数器CNT的数值小于捕获比较寄存器CCR1的值时,电平输出高电平,CNT数值大于CCR1时输出低电平,使能CC1E,最后就
阅读全文
摘要:前言 在嵌入式系统C语言开发调试过程中,常会遇到各类异常情况。一般可按需添加打印信息,以便观察程序执行流或变量值是否异常。然而,打印操作会占用CPU时间,而且代码中添加过多打印信息时会显得很凌乱。此外,即使出错打印已非常详尽,但仍难以完全预防和处理段违例(Segment Violation)等错误。
阅读全文
摘要:Linux C 下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下: #include <dirent.h> struct dirent { long d_ino; /* inode number 索引节点号 */ off_t d_off; /*
阅读全文
摘要:1、具体思路把一个文件分成N份,分别用N个线程copy,每个线程只读取指定长度字节大小的内容最后一个线程的源文件所指定的结束位置是文件的实际大小每个线程读取指定源文件部分的起始位置和结束位置的内容到缓冲区每个线程将缓存中的内容写入目的文件的指定开始位置和结束位置主线程必须等到所有线程copy完成后才
阅读全文
摘要:前言 本文主要总结嵌入式系统C语言编程中,主要的错误处理方式。文中涉及的代码运行环境如下: 一 错误概念 1.1 错误分类 从严重性而言,程序错误可分为致命性和非致命性两类。对于致命性错误,无法执行恢复动作,最多只能在用户屏幕上打印出错消息或将其写入日志文件,然后终止程序;而对于非致命性错误,多数本
阅读全文
摘要:一.交叉编译ini解析库 1.官方网站http://ndevilla.free.fr/iniparser 下载iniparser-3.1.tar.gz 2.解压 tar -zxvf iniparser-3.1.tar.gz cd tar -zxvf iniparser3.修改makefile CC
阅读全文
摘要:DES和3DES加密算法C语言实现记录DES和3DES加密算法最简洁易懂的C语言源码主要是要用到CBC这部分的算法,后边也有一个工具可以提供验证,因为网上的工具含有CBC的很少,也方便大家吧 #define MBEDTLS_DES_ENCRYPT 1 #define MBEDTLS_DES_DECR
阅读全文
摘要:本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核代码复习一下C语言及汇编语言的语法,二来学习内核开发大牛们书写代码的风格及思路。 在内核文件 inc
阅读全文
摘要:很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一块连续的内存,知道和free函数是一起用的。但是但是: 一部分人还是将:malloc当作系统所提供的或者是C的关键字,事实上:malloc只是C标准库中提供的一个普通函数 而且很多很多人都对malloc
阅读全文
摘要:什么是变长参数? 所谓含有变长参数的函数是指该函数可以接受可变数目的形参。例如我们都非常熟悉的 printf,scanf等等。 2:变长参数如何实现? 首先来看下面这样一个例子: #include<stdio.h>#include<stdarg.h>#include<string.h> void d
阅读全文
摘要:概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的、复杂的应用程序中,内存泄漏是常见的问题。当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,这时就出现了内存泄漏。尽管优秀的编程实践可以确保最少的泄漏,但是根据经验,当使用大量的
阅读全文
摘要:一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然
阅读全文
摘要:GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__是用来设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__at
阅读全文
摘要:操作系统:ubuntu10.04前言: 在通信过程中,无法知道将会接收到的数据的长度,因此开一个固定大小的缓冲区并不合适,开大了,很可能大多数通信都只是几十个自己而已;开小了,又无法处理大数据。因此最好的方法就是创建内存池,根据实际情况,分配合适大小的内存空间。一,思路 通过双向链表,管理所有的内存
阅读全文
摘要:操作系统:ubuntu10.04前言: 在嵌入式开发中,只要是带操作系统的,在其上开发产品应用,基本都需要用到多线程。 为了提高效率,尽可能的提高并发率。因此,线程之间的通信就是问题的核心。 根据当前产品需要,使用 环形缓冲区 解决。一,环形缓冲区的实现 1,cbuf.h 点击(此处)折叠或打开 #
阅读全文
摘要:操作系统:ubuntu10.04前言: 在稍微大点的项目中,基本都会遇到算法问题,特别是大数据的查找。 在当前项目中,使用到了哈希链表。一,概述 实现思路:用数组保存哈希桶的关键信息,再用链表链接数据到对应的哈希桶中。 如:管理很多字符串。以a~z,?为哈希桶。 二,实现 1,结构 点击(此处)折叠
阅读全文
摘要:当然是这个啦!用三段 140 字符以内的代码生成一张 1024×1024 的图片原文 by Matrix67 Kyle McCormick 在 StackExchange 上发起了一个叫做 Tweetable Mathematical Art 的比赛,参赛者需要用三条推这么长的代码来生成一张图片。具
阅读全文
摘要:在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简
阅读全文
摘要:open-drain与push-pull】GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出。但是在配置GPIO管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull)。对此两种模式,有何区别和联系,下面整理了一些资料,来详细解释一下: 图表 1
阅读全文
摘要:推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止. 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,
阅读全文