传说中的软件断点到底是什么?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey不知道道友是否有这样的经历,代码全速运行的时候,等了很久发现并没有得到想要的结果,然后暂停之后发现程序死在了循环里面,或者断言里面。那么我们是否有办法在程序断言失败的时候,让程序自动停下来呢?而不是苦苦等待结果呢?如果用常规的方法,肯定是在断言里面加入断点,只...
📅 2023-05-02 阅读全文 →

这个寄存器多余了吗?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey上次写过一篇笔记《介绍一个高效无隐患输出 IO 的方法》,介绍了如何避免直接操作 ODR 导致的隐患问题,然后有道友留言对以下代码提出了疑问:void out_data(uint8_t byte){ GPIOA->BSRR = ((uint16_t)by...
📅 2023-05-02 阅读全文 →

vi 命令记不住?VSCode 远程开发帮你忙

这篇笔记是在 csdn 上写后复制过来的,原文可点击文章最后的阅读原文查看。使用这个方法后就像在本地办公一样编辑文件,非常方便。目前连接的是 ubuntu 系统服务器,其他嵌入式系统不一定适用,所以在验证本方法时最好用 windows 连接 ubuntu 服务器,成功后再尝试其他平台。1、安装 Git bash (一般电脑都应该会安装)传送门https:/...
📅 2023-05-02 阅读全文 →

手把手教你设置 source insight 相对路径工程

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey你的 SI 工程是不是换个目录就不能用了?每次 clone 下来的代码都要重新新建 SI 工程?是否已经厌烦了这种开发方式,说实话,鱼鹰也早已厌烦,这就是鱼鹰为什么还是习惯使用 KEIL 编辑代码的原因(有新建工程的功夫,代码已经改好了)。鱼鹰早就知道了&nb...
📅 2023-05-02 阅读全文 →

如何精准的收集所有 MDK 源代码文件?一个脚本搞定

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey标题有些工程,可能包含了一大堆文件(比如 rt-thread 工程),你可能并不需要它们,但是却一直保留在你的工程目录中,想删掉又怕删错,一个个整理又太麻烦。还有就是,当你使用 SI(source insight) 看源代码时,因为你不知道哪些文件才是你当前文...
📅 2023-05-02 阅读全文 →

IO 异常输出排查指南

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey在嵌入式开发过程中,IO 操作是不可避免的,很多时候 IO 操作很正常,但有些时候可能因为某些原因导致异常输出,或者说不是你想要的输出(本来应该一直输出高电平,突然出现一个低电平)。1、时间太久,不知道在哪里操作了这个 IO2、程序异常篡改 IO 输出。3、维...
📅 2023-05-02 阅读全文 →

道友,这里不是干货

今天就不更新技术笔记了,简单说说最近的状况。有心的道友可能发现了,鱼鹰最近不再是每周准时更新了,总是会推迟一下。去年写过一篇笔记《佛系更新》,那个时候就准备佛系更新的,但是不停有广告主找上门来,所以也就只能咬牙继续更新了。然后前几个月几乎每周也一直在坚持输出干货,阅读量虽然有所下降,但是也说得过去。但是现在这几次分享的干货笔记阅读量很让人意外。鱼鹰原以为每...
📅 2023-05-02 阅读全文 →

CRC校验 | 程序如何检查自身完整性?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey在一些比较严格的行业里面,不是说你的程序能完成必要功能就可以,还需要添加一些额外的功能,比如最常见的看门狗功能,它可以在程序死机时完成重启,但也仅仅如此而已。很多异常它是无法检查的,比如程序偶然跑飞,ram 异常、flash异常等其他问题,只有程序hardfa...
📅 2023-05-02 阅读全文 →

如何智能设置中断向量表?| 简单实用技能

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey在有 boot 的情况下,一般需要重新设置 app 的中断向量表,使得中断向量表从 boot 切换到 APP 部分,大部分的工程师会使用类似下面这种方式设置中断向量表的地址 0x0800 9000。NVIC_SetVectorTable(NVIC_VectTa...
📅 2023-05-02 阅读全文 →

洗衣时,领悟最强 PWM 捕获功能,1 MHz !

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey起因一直想通过定时器的捕获通道捕获 PWM,这种需求是非常基本的。各种开发板例程也都有,但是精度不怎么样,能捕获的频率也不是很高。对于高频和高精度情况下明显不适用。有经验的工程师会选择参考手册中介绍的 PWM 输入捕获功能,但是该功能有一个很大的限制:一个定时...
📅 2023-05-02 阅读全文 →

最强 PWM 输入原理解析贴

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey上一篇文章《领悟最强 PWM 捕获功能,1 MHz !》鱼鹰介绍了最强 PWM 一些基本特性,今天鱼鹰从原理上介绍如何实现该功能。介绍之前,首先介绍一下 STM32F103 TIM 的一些相关特性:无法使用外部引脚中断触发 DMA (有些型号可以)无法使用 T...
📅 2023-05-02 阅读全文 →

推荐一个免费且超快的 MDK 资源下载链接

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey换公司、换电脑、重装系统、重装 MDK ,都需要重新搭建 MDK(KEIL) 平台,此时最希望的是能有一个稳定且快速的 MDK 下载点。以前还能用百度云盘,毕竟速度很快,但现在速度被限制了,几十 K,不知道要下载到何年马月,要是半天装不上 MDK,影响了你的工...
📅 2023-05-02 阅读全文 →

准备买车了,各位道友有推荐的吗?​

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey上个月鱼鹰运气还不错,7 月份刚在深圳申请了摇号(居住证也是刚办理好的),8 月份就中签了,简直是不可思议。因为很多同事摇了几年也没中,所以也算运气爆棚了。深圳摇号条件还是比较简单的,有深圳的居住证,有两年社保就可以申请了(所以社保很重要,一定不要断,实在不行...
📅 2023-05-02 阅读全文 →

如何快速更换 MDK 工程?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey有的时候,我们不得不更换 MDK 工程,比如别人工程有很多不合理的地方(导致无法设置断点),或者 MDK 软件升级了,但是工程还是非常古老的,导致总是被异常退出。此时,我们该如何快速更换一个新工程呢?1、通过管理器这里可以快速设置工程框架,同时添加多个需要的文...
📅 2023-05-02 阅读全文 →

牛逼,不用外部电路检测芯片工作电压!

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey本篇笔记主要包含以下内容(电池供电产品尤其实用):1、如何进行 ADC 校准,ADC 校准基本原理 2、如何直接通过内部参考电压得到芯片的工作电压 3、常见应用场合在一些应用场合,往往需要得到芯片的工作电压,确保芯片工作正常,比如低压时进行...
📅 2023-05-02 阅读全文 →

如何使用 git 管理 MDK 工程?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰 OspreyID :emOsprey很多初学者都不会使用 git 管理工程,一来不熟悉这个工具,二来不知道使用 git 有什么好处,增加学习成本,当初鱼鹰在大学的时候就有了解过 git 这个分布式管理工具,但真正用它管理工程还是在工作一年之后才开始的。那个时候不知道 git 到底有多香,所以也不会想要真正使用它,最多...
📅 2023-05-02 阅读全文 →

鱼鹰的家乡,有山有水

鱼鹰国庆提前两天回家了,在家就是安逸,啥也不用想,啥也不用干,就是吃和玩。于都特产:仙人冻家门前河里捡的河蚬(蚬 xiǎn 专门上网查了一下,可煮汤)外甥在河里戏水(河水清澈见底)开船捕鱼渔网中的鱼农家柴火小鱼干炒小鱼干棕包炒肉另外还有鲜河鱼汤、河蚌汤、炒田螺、猪脚、鹅肉、鸡汤,都是鱼鹰喜欢吃的,可谓过足了嘴瘾。唯一遗憾的就是村里的年轻人都没回家...
📅 2023-05-02 阅读全文 →

鱼鹰:探究 USB2.0 的真实传输速度是多少?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey今天鱼鹰简单聊聊 STM32F103 USB 外设实际传输速度的问题。103 的外设号称 USB 2.0,但实际上是全速的 USB 2.0,即传输 1 bit 数据的速度是 12Mbit/s,类似串口波特率 115200 的概念。但是我们知道串口协议...
📅 2023-05-02 阅读全文 →

GD32F4x 如何开启读保护功能(芯片加密)?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey在芯片加密时,时常会用到读保护功能,这个功能可以保证你的代码不被 J-link,ST-link 之类的调试器读取,STM32 系列相关资料网上有很多,但是 GD32 的资料目前来说还是比较少。GD32F103 、GD32F303 与 STM32F103 基本上...
📅 2023-05-02 阅读全文 →

STM32 两个栈,你用哪一个?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey之前的分享的一篇文章 HardFault 之 INVSTAE 错误定位(一) 里面提到了一份官方 PPT《HardFault的诊断.pdf》 ,当时鱼鹰没有去寻找,然后一位读者 fane 找到后分享给鱼鹰了,在此感谢这位道友。看完之后,觉得...
📅 2023-05-02 阅读全文 →

向上取整的一点技巧 | C语言

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey做底层或者说驱动开发时,经常会遇到一些硬件限制,比如 STM32 有些寄存器要求 16 bit 访问、32 bit 访问,否则可能引发 Hardfault 中断;再比如擦除 flash 扇区时,会要求整块擦除。这些都是硬件决定的,必须这样做。假设我们需要 32...
📅 2023-05-02 阅读全文 →

惊呆 | 串口 DMA 发送竟然用局部变量作缓存?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey之前有个同事因为用串口查询方式发送数据,被我说了一顿,明明有 DMA 资源,竟然放着不用,对于鱼鹰这种性能强迫症来说,肯定无法忍受,所以当时就和他说,有时间你把它改一下。谁知道过了好几个月他才有时间弄这个,然后还是出了问题,没法子,只能找我解决了。现象是这样的...
📅 2023-05-02 阅读全文 →

不用工具,合并 bootloader 和 APP 文件就是这么简单!

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey只要你经历过稍微复杂一点的项目,一般都会要求 BOOT 和 APP 两个程序,即是为了方便客户功能升级,也是为了咱自己解 BUG,所谓好处多多。刚毕业那年,鱼鹰接手的项目中就需要 BootLoader,为此,鱼鹰写了几篇相关的笔记《固件升级经验总结》《STM3...
📅 2023-05-02 阅读全文 →

卧槽,自定义打印函数还能这么完?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey刚开始学习串口的时候,为了更好的格式化输出数据,一般会选择重定向 printf 函数,即使用 printf 打印到串口,这个是很多初学者都知晓的事情,网上也有一大堆资料可查。绝大多数重定向方法都是采用串口查询方式,所以打印效率很低,也不适合在中断中打印(因为速...
📅 2023-05-02 阅读全文 →

7 年了,没见过代码中出现过两个感叹号

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey有半个多月没更新笔记了,广告少,动力也明显不足了,挺安逸的,毕竟最近鱼鹰也有其它事情要忙,主业要紧。在此感谢大家的继续关注!今天继续更新一篇小短文,希望对你有帮助。int func(int temp){  return&...
📅 2023-05-02 阅读全文 →

断言不是错误!

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey断言机制估计很多道友都用过,在 ST 的标准库中,经常可以看到它的身影:它的实现方式也是非常简单的,就是通过 USE_FULL_ASSERT 宏进行控制:如果断言失败,就会执行 assert_failed 函数,一般实现函数如下:void asser...
📅 2023-05-02 阅读全文 →

一个半小时,远程解决一个 APP跳转 BUG

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey昨天有一位读者刚关注鱼鹰,并且很快加了鱼鹰微信,描述了以下问题:当时也没有细看问题,只是大概看了一下,然后简单的提供了一个思路给对方,毕竟鱼鹰也比较忙,不可能花太多时间在别人的问题上。而且也是看对方的问题描述比较清楚,比较有诚意,所以才会提供一个思路,否则可能...
📅 2023-05-02 阅读全文 →

见鬼,过年回来后板子就 hardfault 了?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey快一个月没有更新了,回家之前给自己安排了很多任务,然后回到家之后电脑就没有打开过,啥也没干,不知道有多少人回家后的状态和鱼鹰是一样的~~回来之后,准备搞个脚本,自动读取芯片 ID、修改头文件 ID、自动编译、下载。折腾了一晚上,读取 ID 是搞定了,但是发现有...
📅 2023-05-02 阅读全文 →

如何优雅的使用MDK解除芯片读保护?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOsprey经历过产品量产的同学应该都知道,芯片一般会在出厂时开启读保护:要么在代码中加入,要么在烧录程序后人工通过软件开启该功能,比如 STM32 ST-LINK Utility:当然也可以使用该工具关闭读保护功能。为了保证程序不被读取,大多数产品应该会直接在量产代码中...
📅 2023-05-02 阅读全文 →

小坑怡情,大坑伤身之新版 MDK 自动复位

来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID   :emOspreyMDK 5.x 大大小小升级了不少版本,但鱼鹰很少去主动更新,一般用认为比较稳定的,但是老版本虽然稳定,但有很多特性不支持,比如调试和编辑相关的。5.14 版本调试很舒心,不会有莫名挂掉或者断点设置相关的问题,所以没有必要基本用它,但是有时候你不得不升级版本,...
📅 2023-05-02 阅读全文 →