• 侃侃单片机的裸奔程序的框架

    任何对时间要求苛刻的需求都是我们的敌人,在必要的时候我们只有增加硬件成本来消灭它;比如你要8个数码管来显示,我们在没有相关的硬件支持的时候必须用MCU以动态扫描的方式来使其工作良好;而动态扫描将或多或少的阻止了MCU处理其他的事情。在MCU负担很重的

  • 【深度长文】还是没忍住,聊聊神奇的无锁队列吧!

    这篇长文除了由浅入深的一步步迭代出无锁队列的实现原理,也会借此说说如何在项目中注意避免写出有 BUG 的程序,与此同时也会简单聊聊如何测试一段代码,而这些能力应该是所有软件开发工作者都应该引起注意的。而在介绍的过程中也会让你明白理论和实际的差距

  • 数组和指针一道非常值得深思的笔试题

    之前笔试就遇到下面这道题,谁都不敢说自己的C/C++能有多精通,当然,工作一久,很多老毛病也就容易犯了,所以说,理论是真的很重要的,下面这道题,说实话还是挺基础的,虽然当时笔试被我给猜对了,但还是要深究一下具体的转换细节。 如题: #include

  • 数据结构之二叉树

    树(tree)是包含n(n>0)个结点的有穷集,其中: 1.每个元素称为结点(node); 2.有一个特定的结点被称为根结点或树根(root)。 3.除根结点之外的其余数据元素被分为m(m≥0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1

  • 第1期 | MultiButton,一个小巧简单易用的事件驱动型按键驱动模块

    嵌入式开源项目精选专栏 本专栏由Mculover666创建,主要内容为寻找嵌入式领域内的优质开源项目,一是帮助开发者使用开源项目实现更多的功能,二是通过这些开源项目,学习大佬的代码及背后的实现思想,提升自己的代码水平,和其它专栏相比,本专栏的优势在于:

  • C语言将xxx.bin文件转为数组

    刚开始工作的时候实现过公司的一个项目需求,大致描述如下: 实现一个SPI-flash读写程序,目的是要将一个二进制文件写到SPI_FLASH中,最后通过开机读取,实际上这个.bin文件就是uboot和second-boot的结合体。通过SD卡写到SPI-FLASH中就可以脱离SD卡开机启动了

  • 开源STM32产品:无线点菜宝使用评测

    下面这个产品是有一次在我的技术QQ群上看到有人发出来的,我看完毫不犹豫就买下来了,因为太便宜,只花了我38块钱收获了这么一个可以学习的宝贝!这是一个基于STM32F103RCT6的项目,光硬件成本都不止38块了吧?据说是该产品的客户跑路了,所以公司无奈把库存

  • STM32CubeMX + STM32F1系列开发时遇到的四个问题及解决方案分享

    (图片为小马哥TJ-STM32F103C8最小系统) 这四个问题是我在使用STM32F103C8T6 + STM32CubeMX做项目时遇到的,给大家分享一下,以下四个问题重要程度依次降低,分别是: ① 调试选项问题(默认会造成下载器无法下载); ② 定时器设置占空比的函数找不到报错的

  • 【Linux系统编程】可重入和不可重入函数

    1 不可重入函数 在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。

  • 【Linux系统编程】IO标准缓冲区

    1. 缓冲区概述 标准I/O提供了三种类型的缓冲: 1、全缓冲: 在填满标准I/O缓冲区后才进行实际I/O操作。常规文件(如普通文本文件)通常是全缓冲的。 2、行缓冲: 当在输入和输出中遇到换行符时,标准I/O库执行I/O操作。这允许我们一次输出一个字符,但只有在

  • 【程序人生】程序员接私活常用平台汇总

    01. 前言 关于程序员接私活,社会各界说法不一。按照作者的观点来说如果你确实急用钱,价格又合适,那就去做。如果不怎么缺钱,那就接私活之前要好好考虑。私活的钱不好挣是一个方面,更重要的是如果你把做私活的时间花在提升自己上,产生的价值就要大得多。

  • C语言写一个2048游戏

    大部分同学学习C语言编程以后不知道能通过什么样的项目才可以锻炼自己的思维功力,2048相信大家都应该熟悉,不管是手机上还是网页版的相信大家都玩过,这个简单的控制台版本的游戏是我曾经在伟易达上班时一个嵌入式应用游戏部门的大佬设计的,适合于喜欢用C语

  • 关于大小端模式的浅谈

    以实际情况作例子: 1.由图是不是可知地址(Unsignd char *)0x0000_0020的所存值? 答:0x3C。 2.对于32位机,由图是否可知地址(Unsignd int *)0x0000_0020的所存值? 答:不确定, 当为小端模式,值为:0x3C; 当为大端模式,值为:0x3C000000。 3.关于大小端

  • C语言表驱动法编程实践(精华帖,建议收藏并实践)

    数据压倒一切。如果选择了正确的数据结构并把一切组织的井井有条,正确的算法就不言自明。编程的核心是数据结构,而不是算法。 ——Rob Pike 说明 本文基于这样的认识:数据是易变的,逻辑是稳定的。 本文例举的编程实现多为代码片段,但不影响描述的完整性。

  • 嵌入式工程师买车、用车的总结

    本人(嵌入式软件工程师)在19年3月份喜提了人生第一辆B级车,为什么选择B级车?主要是因为B级车空间各方面比较大,适合家用,由于深圳摇号比较困难,加上拍牌真的太贵了(我买的时候牌的均价是5w多);于是就买了一辆国产的插电混合动力的小轿车(既可以加电,也可

发布文章