
单片机
文章平均质量分 91
单片机相关文章汇总
嵌入式大杂烩
一位喜欢分享的嵌入式软件工程师
一位全网累计10万+粉丝的嵌入式博主
一位能源专业转做嵌入式的过来人
展开
-
嵌入式软件,有必要进行自测吗?
有时候,我们也会供给我们的团队成员调用,或是其他部门的同事使用,我们在交付出去进行联调之前,需要保证质量,也能免去后面很多的联调成本。设计的软件可测试性强,我们就能在开发阶段进行充分地测试,在开发阶段尽可能多地解决一些逻辑上的问题,从而保证更高质量地软件交付。方式二,计算所依赖的数据都通过函数参数留出来了,我们可以很方便地对函数进行测试,可以很方便地输入不同的数据组合。所以,我们尽可能地在释放给测试之前,进行一个完整的自测,减少一些不必要的bug产生(主路径bug)。并且自测的思考放在设计之前。原创 2025-04-01 09:42:15 · 612 阅读 · 0 评论 -
嵌入式开发中常用的软件工程方法有哪些?
/ 或触发错误// 处理-2147483648 / -1溢出return;原创 2025-03-25 10:21:22 · 958 阅读 · 0 评论 -
低功耗嵌入式软件设计的要点!
硬件产品,低功耗设计是提升产品竞争力的关键因素之一。低功耗设计的具体实现方式涉及到多个部分:硬件设计、软件设计、散热设计等方面。本篇文章我们着重关注设计的一些要点。原创 2024-07-15 23:26:19 · 1027 阅读 · 0 评论 -
超轻量的嵌入式数据库!
是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。如今,物联网产品种类越来越多,运行时产生的数据种类及总量及也在不断变大。FlashDB 提供了多样化的数据存储方案,不仅资源占用小,并且存储容量大,非常适合用于物联网产品。:是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。原创 2024-03-10 11:00:00 · 957 阅读 · 0 评论 -
分享嵌入式软件调试方法及几个有用的工具!
大家好,我是杂烩君。本次分享一些嵌入式软件的调试经验及一些有用的工具。需要说明的是:这不是一篇大神教你如何成为大神的文章,因为我还不是大神;而是一名普通嵌入式软件工程师从毫无经验到略有经验的一点调试总结,都很基础。我们常常说,软件三分写七分调。实际开发中,确实也是这样子的。我工作这几年了,对这体会也越来越深。每当需求一下来,我代码很快就可以写完,但是,调试需要花很多时间。这里需要明确的是, 调试的目的不仅仅是调通整个功能需求。调通功能是最基本的要求,还需要进行优化、完善逻辑、完善异常处理。原创 2022-04-24 21:27:12 · 4362 阅读 · 0 评论 -
嵌入式并行多线程处理器,了解一下!
MC3172 是厦门感芯科技的一款32 位 RISC并行多线程实时处理器。基于RISC-V RV32IMC 指令集, 100%单周期指令, 最高200MHz主频, 3.37coremark/MHz。可以代替实时操作系统, 实现程序的模块化与复用性。相关资料可在感芯官网下载。链接:嵌入式开发,是软件+硬件结合,两者互补。如果硬件功能很强大,则软件可能可以设计得比较简单;如果硬件功能有限,则软件方面可能得考虑比较多的方面。原创 2022-07-21 21:31:19 · 1507 阅读 · 0 评论 -
STM32 | 串口空闲中断接收不定长数据(DMA方式)
在使用STM32的串口接收数据的时候,我们常常会使用接收中断的方式来接收数据,常用的是RXNE。这里分享另一种接收数据的方式——IDLE中断(PS:本文的例子运行在STM32F103ZET6上)。一、IDLE中断什么时候发生?IDLE就是串口收到一帧数据后,发生的中断。什么是一帧数据呢?比如说给单片机一次发来1个字节,或者一次发来8个字节,这些一次发来的数据,就称为一帧数据,也可以叫做一包数据...原创 2019-08-25 11:32:48 · 4947 阅读 · 6 评论 -
STM32 | 什么是通讯?
一、什么是串行通讯与并行通讯?按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线(一般是 8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。而并行通讯一般是指使用 8、 16、 32 及 64 根或更多的数据线进行传输的通讯方式。并行通讯就像多个车道的公路,可以同时传输多个数据位的数据,而串行通讯,而串行通讯就像单个车道的公路,同一...原创 2019-08-25 14:19:01 · 849 阅读 · 0 评论 -
STM32 | 串口IAP实例分享
什么是IAP?IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。在重新编程过程中可以使用任意类型的通信协议,如UART、I2S、SPI等。这篇笔记分享的是使用UART方式IAP。串口IAP实验先理一理流程(本实验...原创 2019-09-17 09:01:08 · 3269 阅读 · 2 评论 -
STM32 | ISP下载的原理是什么?
上一篇笔记分享了STM32的串口IAP实例:STM32串口IAP分享。其中,下载IAP程序时用ISP的方式进行下载。这里的ISP又是什么呢?ISP方式下载程序原理ISP:In System Programing,在系统中编程在STM32F10xxx里有三种启动方式:以ISP方式下载程序时需要把STM32的BOOT0引脚置1、BOOT1引脚置0,即从系统存储区(System Memory)...原创 2019-09-18 08:41:35 · 4187 阅读 · 3 评论 -
STM32 | 在SRAM、FLASH中调试代码的配置方法
STM32的FLASH擦写次数有限(大概为1万次),所以为了延长FLASH的使用时间,我们平时调试时可以选择在SRAM中进行硬件调试。除此之...原创 2019-09-21 07:32:00 · 1554 阅读 · 0 评论 -
STM32 | STM32的复用时钟何时开启?
STM32的AFIO时钟真的是在开启引脚复用功能的时候开启吗?其实并不是~什么是复用?我们知道,STM32有很多外设,这些外设的外部引脚都是与GPIO共用的。我们可以通过软件来配置引脚作为GPIO引脚还是作为外设引脚。当引脚配置为外设引脚时就叫做复用。如串口默认复用的引脚为:PA9、PA10引脚可配置为普通IO,也可配置为串口引脚(PA9为TX,PA10为RX)。例子:串口1为例关于外...原创 2019-09-27 08:39:37 · 3123 阅读 · 0 评论 -
STM32 | 硬件SPI主从通信
例子说明及框图本例子基于STM32F103ZET6芯片(代码工程可在文末获取),实现SPI1与SPI2的主从通信。其中SPI1配置为主机,SPI2配置为从机,均配置为全双工模式。硬件连接图:其中,我们需要注意的是,SPI的从机不能主动发送数据,只能应答数据。本例子的数据交互过程:主机使用查询方式发送数据给从机。从机使用中断接收方式接收数据,把接收到的数据加上0x05再发送给主机。从...原创 2019-09-30 08:53:23 · 13503 阅读 · 6 评论 -
STM32 | 两块STM32之间的SPI主从通信实例(附代码工程)
之前分享过的 SPI 通讯实例:《STM32 硬件 SPI 主从通信》,是基于一块 STM32 的两个 SPI 通讯。如...原创 2019-10-09 07:32:00 · 28549 阅读 · 75 评论 -
STM32 | 使用STM32内部Flash额外的空间来存储数据
本次分享关于STM32内部FLASH的笔记。STM32 芯片内部的 FLASH 存储器,主要用于存储我们代码。如果内部FLASH存储完我们的代码还有剩余的空间,那么这些剩余的空间我们就可以利用起来,存储一些需要掉电保存的数据。本文以STM32103ZET6为例。STM32103ZET6属于大容量产品,其闪存模块组织如下:其主存储器大小为512KB,分为256页,每页大小都为2KB。我们的程...原创 2019-10-14 20:29:49 · 19893 阅读 · 5 评论 -
STM32 | STM32F429的USB有坑?
最近某项目需要用到USB与CAN:拿到这样的需求,我们当然是先得保证通讯正常。于是我找了一个USB例程与一个CAN例程,分别调试验证。经过几番折腾已经保证了USB与上位机能正常通讯了,也能保证了CAN的正常收发(拿了两块开发板做验证)。两头都没有问题了,再加上一些数据处理就差不多完成了。USB与CAN我都是第一次用,没想到那么顺利,美滋滋,正准备放松的时候,问题就来了。这是一个整体的东西,...原创 2019-11-07 08:42:19 · 6863 阅读 · 6 评论 -
STM32 | 分享自定义协议的一些典型例子
上次分享的《分享一个很酷的上位机软件》中,有如下协议:有位读者朋友问数据为什么要按这样的格式来发。其实这是个自定义协议,...原创 2019-12-22 23:00:00 · 4573 阅读 · 0 评论 -
STM32 | map文件详解
前言 前几个月针对公司自己的芯片写了个程序,这个程序有个硬性要求,就是能用的FLASH空间只有4KB,之前已经写得差不多了,最终占用空间3.6KB。这不,最近又得加需求,还剩一点点FLA...原创 2020-01-02 23:38:44 · 14126 阅读 · 0 评论 -
STM32 | 通俗易懂地串口通讯解析
平时使用串口打印出现乱码的绝大部分原因是串口波特率没对。那么我们怎么测量实际的波特率呢?在这之前,顺便一起回顾一下波特率...原创 2020-01-06 22:40:00 · 1497 阅读 · 0 评论 -
STM32 | hex文件、bin文件、axf文件的区别?
在STM32开发中,经常会碰到hex文件、bin文件与axf文件,这些都是可以烧写到板子里运行的文件。这三个文件有什么区别呢?在这之前,先来一起回顾一下C语言编译的过程:编译的原理在之前的C语言笔记《C程序的编译过程》中,有简单的分析了C程序编译的几个过程:STM32也是用C语言来开发,也会经过类似的编译过程,只不过我们常常用MDK或者其它IDE来编译,其编译过程如下:例如,我们的LE...原创 2020-01-14 09:27:44 · 15805 阅读 · 6 评论 -
STM32 | 分享几个开源的测试框架
这是一篇测试相关的笔记。我们软件开发最终都离不开测试的,可以通过测试来发现很多问题。在这之前先扯谈一波:在这给还没找工作的朋友提个醒,能找开发的职位就别找测试的职位,除非你真的很喜欢测试。亲身经历,做测试很不好受。测试其实有两类,一种是自己去测自己测的东西,另一种是去测别人做的东西。如果是第一种,我倒是很愿意做,因为我们本质上还是开发工程师,大概80%的工作时间在做开发,20%的工作时间在测自己...原创 2020-01-19 08:39:44 · 10950 阅读 · 3 评论 -
STM32 | 学习STM32的一些经验分享
前言 前两天在群里看到群友们在讨论学习STM32的话题,并且今天也有一位机械专业的准研究生读者也问了STM32的入门问题。正好我也有一点点经验,所以试着分享一下这个话题。我也不是什么大神...原创 2020-03-08 23:59:22 · 3556 阅读 · 1 评论 -
STM32 | TCP通信实例分析
前言关于socket的笔记,之前已经有分享过两篇相关的文章:【socket笔记】TCP、UDP通信总结【socket应...原创 2020-06-10 22:59:08 · 18281 阅读 · 1 评论 -
STM32 | 一种简单、实用的测量程序运行时间的方法
前言 平时我们可能很少去关注程序运行的时间,但是在一些情况下可能需要对程序进行一个整体的复盘、优化。那么,程序运行的时...原创 2020-06-27 23:14:29 · 11731 阅读 · 1 评论 -
STM32 | 请写一个函数输出如下波形(经典面试题)
前两天群友岸与桥在群里问了这样一个面试题:看到这样一个问题,群里讨论得很热闹,几位群友也给出了一些解答,主要有两种思路:① 第一种思路是:依次输出相应电平,高、低电平持续的时间根据题目要...原创 2020-07-11 22:50:00 · 1742 阅读 · 2 评论 -
STM32 | OpenBLT Bootloader的使用分享
前言 分享的C语言的帖子大家似乎不太感兴趣,那我们就拿起吃灰的板子来玩吧。。前几天在安富莱公众号有了解到OpenBLT,今天我们就来实践一下:OpenBLT 简介 OpenBLT是一种开...原创 2020-07-31 07:50:00 · 7796 阅读 · 0 评论 -
STM32 | 基于STM32实现的普通灯泡调光控制器
最近没有什么产出,吓得ZhengN翻箱倒柜倒出一些小东西来发。下面分享一个ZhengN大二时候的一个小玩具,软硬件都分享给大家,有需要的小伙伴,文末获取。这个小作品设计到了强电,不建议没...原创 2020-12-03 22:23:53 · 10925 阅读 · 21 评论 -
STM32 | STM32中一些非常重要的C语言知识点汇总
说在前面的话 一位初学单片机的小伙伴让我推荐C语言书籍,因为C语言基础比较差,想把C语言重新学一遍,再去学单片机,我以...原创 2021-01-06 00:02:37 · 4313 阅读 · 0 评论 -
STM32 | MCU错误代码自动追踪库的使用经验分享
大家在用STM32的时候有没有遇到过HardFault的问题呢:下面针对这个问题做个小总结。现象还原:在debug模式下进行仿真调试,全速运行再停止运行,程序会跑到 HardFault_Handler函数中,产生 HardFault,即硬错。其产生的原因大概有如下几类: (1)数组越界操作; (2)内存溢出,访问越界; (3)堆栈溢出,程序跑飞; (4...原创 2019-12-10 08:43:56 · 2253 阅读 · 0 评论