- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 堆区多次申请内存释放引起的bug
在C语言里,堆区申请一个A,释放A,申请B,再释放A是有可能成功。结果是,释放掉B,这时候B你并不想要释放。导致程序出错。原因:因为A和B的地址是可能一样的。
2021-12-16 20:57:58 1361 2
原创 双向电平转换电路
来源:AN97055电路1:高压区域输出时需要开漏。或者串个二极管分压。假设SDA为推挽输出,高压区的电压将直接作用在低压区。且高压区VDD2不能失效。拓展,如果需要高速通讯,可以将N-Mos换成三极管,但需要外加一个二极管起到mos的反向二极管作用。...
2021-09-26 02:01:29 337
原创 QT6 QSerialPort关于readyRead()信号函数的问题
用QT6 开发串口调试工具时发现:阻塞模式下,需要设置缓冲区大小serial.setReadBufferSize();,并且数据大于缓冲区后 才能出发readyRead()信号;数据就绪信号:阻塞模式读取数据;
2021-09-11 00:48:58 1162
原创 用C语言设计一个无界面的串口工具 日常记录
why?为什么要自己设计一个串口工具!目前网上已有大量的串口工具,为什么要设计一个串口工具?而且还没有界面?我们假设这么一个场景:我在调试一个蓝牙、wifi等模块的数据交互。这类设备的调试有个特点就是实时性,我需要在某段时间内(例如100ms)对命令进行回复,否则将导致app或者服务器等做出异常处理机制。而这不是我们想要的!!!实际遇到的例子:某运动 app在连接跑步机等运动设备后,会以一定的周期(100-1000ms)查询设备状态。如果我手动回复可能需要长达数秒,或者数十秒的时间。这就导致app判断
2021-08-14 02:16:04 329
原创 关于scanf函数的一个奇怪问题!建议scanf函数用uint32_t 来接收数据
今天发现scanf()函数的一个奇怪现象。先假设 我要接收一个byte的数据;我是不是要申请一个byte的变量 uint8_t value;然后 scanf("%02x", &Value);那么 请看如下代码:int main(int argc, char const *argv[]){ printf("System Config Command:\r\n"); volatile uint8_t len = 0; printf("Please input comm
2021-08-06 02:15:27 651
原创 关于volatile 的实际使用场景
在C语言种,若出现如下代码:Task 1:uint8_t Flag = false;...wihle(Flag == false){ ;}...Task 2:void Fun(void *param){ ... Flag = true; ...}假设高优化等级Task1 先执行,Task1可能会陷入死循环,无法退出继续执行后面代码;解决方案:使用volatile描述Flagvolatile uint8_t Flag降低优化等级...
2021-07-15 15:15:59 249
原创 SIMCOM7600CE内置MQTT异常
最近开始学习SIMCOM7600CE模块的内置MQTT发现了一个问题,在开机是按流程走下来一切都很顺利!氮素。。。。如果模块异常忽然断开链接,就再也连不上了。需要重启AT+CFUN=1,1来重启射频再能再次连接服务器不知道大家有没有遇见过。0:第一次开始都正常1:我是通过每60s主动查询AT+CMQTTCONNECT?命令来查询是否网络正常,因为找不到心跳包的AT指令。(是我有问题吗?)...
2018-10-31 00:25:21 1894
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人