自定义博客皮肤

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Unix/Linux 互斥量、条件变量的作用及C代码案例分析

在分析“条件变量”这个概念之前,我们需要了解两个相关的概念,分别是:线程同步、互斥量。 1、线程同步 所谓线程同步,“同步”二字单从字面意思来看,是很容易有歧义的,起码不太容易理解是什么意思,“同步”不是同时,而是 只两个或两个以上随时间变化的量在变化过程中保持一定的相对关系(也特别拗口)。...

2019-09-15 22:26:50

阅读数 15

评论数 0

Unix编程艺术:模块式编码的6个问题思考

在前面的文章《Unix编程艺术:哲学基础》中,提到的模块原则是复杂软件的一个利器,也是Unix编程艺术的核心之一,模块性体现在良好的代码中,这首先来自于良好的设计,在编写代码时,需要考虑下面这些问题,这些问题有助于提高代码的模块性。 1、有 多少全局变量?全局变量对模块化是 毒药,很容易使各模块...

2019-09-10 21:20:13

阅读数 7

评论数 0

Unix编程艺术:哲学基础

目录 阐述一: 阐述二 阐述三: 1、模块原则。 2、清晰原则。 3、组合原则. 4、分离原则:策略同机制分离,接口同引擎分离。 5、简洁原则:设计要简洁,复杂度能低则低。 6、吝啬原则:除非确无 它法,不要编写庞大的程序。 7、透明性原则:设计要可见,以便 审查和调试。 8...

2019-09-09 20:54:23

阅读数 25

评论数 0

cJSON库使用:特别注意事项

cJSON的简单使用——STM32移植 cJSON打包功能使用-代码案例、特别注意事项 在前面的文章中,我们对cJSON进行了一些简单分析,包括解析、打包这两种最常用功能,cJSON的移植相对简单,但是在使用的时候,还是有一些特别需要注意的地方的,这 主要是因为 cJSON库 中的一些函数会...

2019-09-07 22:32:55

阅读数 9

评论数 0

cJSON打包功能使用-代码案例、特别注意事项

在前面的文章《cJSON的简单使用——STM32移植》中,分析了cJSON的简单使用和移植步骤,这个使用 案例主要 是针对 json包解析的,其实cJSON也提供 json 包 打包 功能,这里针对常用的“对象”类型json进行打包,我们主要使用到以下几个接口函数: 1、cJSON *cJSON...

2019-09-07 22:22:44

阅读数 19

评论数 0

sqlite3在嵌入式Linux上的移植步骤详解

深入理解SQLite3之sqlite3_exec及回调函数 sqlite3:深入理解sqlite3_stmt 机制 sqlite3: sqlite3_step 函数 sqlite3:sqlite3_bind 函数 sqlite3:sqlite3_column 函数 sqlite3:嵌入式...

2019-09-07 21:00:50

阅读数 46

评论数 0

I2C总线:通信线缆长度的影响及改进措施

本文主要从应用的层面来分析I2C的通信线缆长度的影响及改进措施,不涉及理论分析。I2C总线是嵌入式硬件中一种常用的 通信总线,比如一些时钟芯片,传感器芯片、eeprom等等都是I2C接口,这里我们先说一些共识: I2C总线确实不适合远距离通信,尤其是需要使用线缆与I2C接口器件进行通信,这里...

2019-09-05 21:35:34

阅读数 78

评论数 0

命令行参数小结

说来惭愧,对于命令行参数这个概念接触的比较少,可能也是之前一直使用IDE进行开发程序的原因吧,对于C程序,总是从main函数开始执行,main函数的原型如下: int main(int argc, char *argv[]); 这里面我们可以发现main函数的特点: (1)有两个形参,ar...

2019-08-31 16:16:45

阅读数 164

评论数 0

阿里云IOT-C-SDK系列(5):进一步理解SDK的移植使用方式

阿里云IOT-C-SDK系列(1)概述:移植流程、程序框架、代码目录阿里云IOT-C-SDK系列(2)快速体验:移植+示例C代码阿里云IOT-C-SDK系列(3)快速体验:不使用SDK自带编译系统进行移植示例及Makefile的编写示范阿里云IOT-C-SDK系列(4)SDK配置选项理解 在系...

2019-08-29 16:26:46

阅读数 431

评论数 0

阿里云IOT-C-SDK系列(4)SDK配置选项理解

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数...

2019-08-19 22:33:02

阅读数 92

评论数 0

阿里云IOT-C-SDK系列(3)快速体验:不使用SDK自带编译系统进行移植示例及Makefile的编写示范

阿里云IOT-C-SDK系列(1)概述:移植流程、程序框架、代码目录 阿里云IOT-C-SDK系列(2)快速体验:移植+示例C代码 在系列(2)中详细的罗列了如何使用SDK自带的编译系统进行移植,正如前面所述,使用SDK自带的编译系统看起来简单,但是由于SDK对很多的细节进行了封装,所以对...

2019-08-12 22:37:05

阅读数 105

评论数 0

深入理解Linux内核之链表 list.h 功能实现原理、接口说明及示例代码

目录 一、双向链表接口函数及相关宏定义分析 0、list_head 结构体 1、offsetof(TYPE, MEMBER) 宏 2、ontainer_of(ptr, type, member) 宏 3、LIST_HEAD_INIT 宏 4、LIST_HEAD 宏 5、INIT_LI...

2019-08-11 22:26:46

阅读数 75

评论数 0

阿里云IOT-C-SDK系列(2)快速体验:移植+示例C代码

《阿里云IOT-C-SDK系列(1)概述:移植流程、程序框架、代码目录》 在上一篇文章我们分析了C-SDK的移植流程一级程序框架, 为了快速的体验一下这个移植流程,本文按照上篇文章提供2 种移植方式分别举例如何移植。官方的快速 移植案例为:Quick_start, 我对移植案例进行整理和修改,为...

2019-08-10 11:24:37

阅读数 163

评论数 0

阿里云IOT-C-SDK系列(1)概述:移植流程、程序框架、代码目录

前言 阿里云推出的 物联网 平台是 专为 设备上云的平台,其物联网平台目前做的还是比较好的,尤其是高级版的 物模型 + IOT studio使得设备数据不仅能够在云端上线,而且可以方便的做web+app显示,基本上相当于web版本+app版的组态软件。基于阿里云的市场份额和功能特点,可以预计...

2019-08-09 22:03:45

阅读数 340

评论数 0

Linux下 静态库(*.a)和动态库(*.so) 的区别及应用分析

目录 1、静态库和动态库的区别 2、“库”的概念 3、静态库和动态库的创建命令 4、静态库和动态库的使用方式 1、静态库和动态库的区别 (1)所谓静态库(*.a),就是程序link的时候就把静态库中的东西取出来,放到生成的可执行文件中,当这个可执行文件执行时,就不需要再次调用这个...

2019-08-07 22:08:09

阅读数 76

评论数 0

超低功耗研发-STM32L151C8T6芯片(五)低功耗设计总结

超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述 超低功耗研发-STM32L151C8T6芯片(二)低功耗模式 超低功耗研发-STM32L151C8T6芯片(三)RTC自动唤醒机制 超低功耗研发-STM32L151C8T6芯片(四)串口接收唤醒机制、注意事项、C代码 目录...

2019-07-31 15:48:13

阅读数 1512

评论数 1

超低功耗研发-STM32L151C8T6芯片(四)串口接收唤醒机制、注意事项、C代码

超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述 超低功耗研发-STM32L151C8T6芯片(二)低功耗模式 超低功耗研发-STM32L151C8T6芯片(三)RTC自动唤醒机制 在前面的文章中,详细分析了STM32L151 的 低功耗的各种概念和相关知识,在应用中,还有一种...

2019-07-31 11:30:26

阅读数 911

评论数 0

深入理解数据结构(一):队列 及 C代码框架

“队列”型数据结构是一种非常经典的数据结构,理解这个数据结构,能够更深入的理解一些功能机制,比如消息队列等。队列的思想对于程序逻辑中的应用,还是非常普遍和重要的,最常见的应用就是消息队列,下面就来分析一下队列数据结构的各种概念。 一、“队列”数据结构能做什么? 队列数据结构,正如字面意思所...

2019-07-27 20:43:26

阅读数 82

评论数 0

Linux下 线程之间数据 共享性 分析

先说下结论:同一个进程下,各个线程之间的数据是共享的,数据的种类可以有很多种,比如标准数据、结构体、文件描述符等等,但是这里有个前提,这些能够被共享的数据,一定是主线程在创建 子线程时,向 子线程传递的数据(通过指针传递)。 程序案例如下: #include "xxx.h"...

2019-07-24 22:26:36

阅读数 76

评论数 0

冒泡排序、快速排序算法理解及C程序实现

前言:关于 快速排序算法的相关理解,本文借鉴了 啊哈磊 老师的《常用排序——快速排序》 ,在此向作者 致敬,写的挺好。 目录 一、冒泡排序 二、快速排序 三、小结 一、冒泡排序 冒泡排序是各种教材中 经常提到的一种排序 方法,基本思想就是: ① 从数组的头部开始,比较相邻...

2019-07-22 21:13:20

阅读数 863

评论数 1

提示
确定要删除当前文章?
取消 删除