C语言int2str的一个 实现

最近项目中遇到一个问题,printf函数打印32位的整形变量的时候会出现问题,反复尝试修改print函数依然没有效果,只能另辟蹊径,将变量先转换成字符串数组在进行打印,下面就是一个简单的整形到字符串的转换函数:#include "stdio.h" // 定义结果缓冲区大小 #define BUFFER_LEN (200) char buffer[BUFFER_LEN +...

继续阅读 »

VS code 调试IAR工程

VS code是一个非常不错的工具,界面比较现代,插件也非常丰富,对于我个人来说这个编辑器也非常完美,有着很好的代码补全功能,非常完善的VIM支持,代码的阅读也比较方便,可以方便的实现各种函数的查询跳转等等。因为我平常还是离不开IAR,所以经常需要在两个软件之间来回切换,这个其实挺麻烦,偶然间发现VScode是支持IAR插件的,本来以为配置会非常麻烦,尝试了一下发现还是比较好弄的,下面就对这...

继续阅读 »

示波器远程访问

现在是一个各种网络互连的时代,在这个背景下面,又啥东西不能联网可真是out了,最近忽然想到我们平常用的各种仪器,比如示波器什么的不是也有网口吗,这玩意不是也能联网遥控吗,这样岂不是在家躺在沙发上也能debug板子了?想想又多了个加班的理由,不过好处就是可以远程访问示波器对于异地合作也有很大好处,比如bug复现的时候我们就可以发出一个网址大家一起看看示波器波形,这样可以截图把数据传来传去要好多...

继续阅读 »

浅析printf中的变参传递

这篇文章主要探讨一种printf的实现,这个是一个实时地记录,错误在所难免,还请谅解。原型首先我们来看看printf的实现原型:typedef struct { int32_t dest; // 定义输出终端 void (*func)(char); // 定义输出函数 char *loc; } PRINTK_INFO; int pri...

继续阅读 »

SPI传输出错引起的思考

SPI是一种常见的串行通信协议,在MCU中也有广泛应用,最近项目中我们发现SPI在传输过程中偶尔会出现数据错误,下面就对这个问题的原因以及有效的解决方法做一个简单的记录。问题描述问题出现在两个SPI互联的时候,当两个SPI同时开启high drive的时候,slave端向master端发数据的时候出现错误,分析过程中我们抓取了如下的波形:实际发出是数据应该是0xAAAA,从上面波形中可以看出...

继续阅读 »