自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

物联网从你我开始

Rome was not built in a day

  • 博客(16)
  • 资源 (2)
  • 收藏
  • 关注

原创 【多线程】优先级反转与解决办法

优先级反转,是指在使用信号量时,可能会出现的这样一种的现象,即:高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度。但其他中等优先级的任务却能抢到CPU资源。-- 从现象上来看,好像是中优先级的任务比高优先级任务具有更高的优先权。具体来说:当高优先级任务正等待信号量(此信号量被一个低优先级任务拥有着)的时候,一个介于两个任务优先之间的中等优先级任务开始执行——这就会导致一个高优先级任务在等待一个低优先级任务,而低优先级任务却无法执行类似的情形发生。

2023-08-25 16:48:01 270

原创 【嵌入式C语言】嵌入式程序中volatile关键字的作用

当一个变量被volatile修饰时,就说明这个变量可能会在任何时刻改变,这样,编译器就不会在编译阶段去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用曾经读取后保存在寄存器里的备份。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量在程序的其他位置被更新了的话,将出现不一致的现象。

2023-08-17 13:23:02 526

原创 【从零开始的状态机漫谈1】万物之始的语言

有限自动机(Finite State Machine),又叫状态机是整个计算机学科倒数第二层的基石;倒数第一层就是大家所熟悉的组合逻辑(Combinational logic)——如果说组合逻辑是没啥灵魂的细胞的话,有限自动机就是第一种“能够任意描述思维逻辑”的神兽大乌龟——整个计算机学科都驮在它的背上。

2023-06-27 14:49:08 110

原创 【嵌入式C语言】数据类型在各类平台字节长度分析

long, unsigned long不是跨平台的(慎用)

2022-02-10 09:33:05 217

原创 【多线程】多线程与互斥锁详细解读,看这一篇就够了

Linux 互斥锁详解

2022-01-11 23:39:10 9976

原创 【嵌入式C语言】通过减少if-else来提高程序可读性

为什么我们写的代码都是 if-else?程序员想必都经历过这样的场景:刚开始自己写的代码很简洁,逻辑清晰,函数精简,没有一个 if-else可随着代码逻辑不断完善和业务的瞬息万变:比如需要对入参进行类型和值进行判断;这里要判断下对象是否为 null;不同类型执行不同的流程。落地到具体实现只能不停地加 if-else 来处理,渐渐地,代码变得越来越庞大,函数越来越长,文件行数也迅速突破上千行,维护难度也越来越大,到后期基本达到一种难以维护的状态。虽然我们都很不情愿写出满屏 if-else 的代码,可逻

2021-12-03 11:30:24 580

原创 【嵌入式C语言】const关键字不会用?,那你需要这篇文章

hello 你好呀!,我是aoz,今天我们来一起研究const关键字废话不多说,我们进入正题 有需要的同学可以自行跳转哟~文章目录1.const 怎么用2. const与指针1.const 怎么用const 是C语言的一个关键字const 关键字是把变量变为一个只读的变量,绝对不是将这个变量变为常量。也就是说经过const 修饰的变量成为只读的变量之后,那么这个变量就只能作为右值(只能赋值给别人),绝对不能成为左值(不能接收别人的赋值)。而 C++ 则是将 const 修饰的常量变为一个真正的

2021-12-02 15:49:02 250

原创 【嵌入式C语言】还没搞懂C语言指针?一文详解C指针

还没搞懂指针,不会吧! 不会吧!

2021-12-02 14:34:35 560

原创 手把手带你看《C Primer Plus》第8章 字符输入输出和输入验证

手把手带你看《C Primer Plus》第8章 字符输入输出和输入验证

2021-12-01 15:40:46 324

原创 【嵌入式C语言】数据类型基础知识、溢出、可移植性

数据类型在C语言中有6种基本数据类型:short、int、long、float、double、char整型:short int、int、long int浮点型:float、double字符类型:char提到数据类型,就不得不提数据类型的长度和数据类型的数值存储范围。类型说明32位系统字节数64位系统字节数取值范围char字符型11-128~127short短整型22-32768~32767int整型44-2147483

2021-11-01 20:18:03 635

原创 【读书】C陷阱和缺陷精华浓缩

文章目录第一章 词法“陷阱”1.1 =不同于==1.2 & 和 | 不同于 && 和 ||1.3 词法分析中的“贪心法”1.4 整型常量1.5 字符与字符串第二章 语法“陷阱”2.1 理解函数声明2.2 运算符的优先级问题2.3 注意作为语句结束标志的分号2.4 switch 语句2.5 函数调用2.6 “悬挂”else引发的问题第三章 语义“陷阱”3.1 指针与数组3.2 非数组的指针3.3 作为参数的数组声明3.4 避免“举隅法”3.5 空指针并非空字符串3.6 边界计算与不对称

2021-10-04 23:46:26 408

原创 【嵌入式C语言】共用体Union的使用指南

1.什么是共用体共用体有时也被称为联合或者联合体,这也是 Union 这个单词的本意。结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。typedef struct { char A; char B; char C; char D;}ST;typedef union{ char A; char B; char C; char D;}UN;同样的定义结构体和共用体,但是在内存

2021-09-17 11:50:21 1482

原创 【嵌入式C语言】可变参数 va_start、va_arg、va_end、va_list、stdarg.h 库详解

可变参数详解printf( )是我们在编程中避不开的函数,之前我们研究了printf( )的实现原理,初步了解了printf( )函数在库中是借用putchar( )来进行实现输出的,但是还有一个问题我们上一篇文章没有解决,那就是printf( )中的可变参数是怎么实现的呢,如何去使用可变参数完成我们自己的输出函数呢?让我们再来看一眼printf( )的长相,在stdio.h文件中他是这样声明的int printf(const char *format, ...)printf( )中分为两种参数,

2021-09-09 18:16:01 3241

原创 【VScode使用技巧】代码块折叠与展开快捷键

【VScode操作指南】代码块折叠与展开快捷键

2021-09-07 14:47:22 1059

原创 【VScode使用技巧】全局搜索屏蔽指定文件类型及文件夹

全局搜索屏蔽指定文件类型及文件夹

2021-09-07 14:30:51 7698 2

原创 嵌入式Linux fstatfs/statfs文件系统信息查询函数

Englishgithub原始仓库https://github.com/jaredtao/TaoQuickgitee镜像仓库https://gitee.com/jaredtao/TaoQuick目录目录TaoQuick徽章预览项目编译发布仓库状态Issue其它状态部分Demo效果预览启动界面动态换皮肤百叶窗特效棋盘特效全部效果预览开发环境功能列表TaoQuick 安装和使用联系作者关注作者动态寻找同道中人赞助赞助列表TaoQuic

2021-07-09 15:31:17 860

NuWriter_V2.04 程序烧写器

NuWriter_V2.04 程序烧写器

2022-03-22

Win10 串口转发软件

1.支持串口之间进行转发 最大支持两个串口进行转发, 2.波特率2400~115200 可选 3.支持HEX 及 ASCII 码显示和一键清空接收框

2022-03-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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