- 博客(28)
- 资源 (3)
- 收藏
- 关注
原创 RT-Thread Studio + STM32F407 全局char常量数组在特殊场景下变为空字串
通过将变量锁定在.rodata段(只读)并限制作用域,有效避免了这一问题。建议结合内存布局分析、多任务同步机制、系统启动时序优化等手段,系统性解决此类嵌入式开发中的内存安全问题。在RT-Thread Studio环境下使用STM32F407开发时,全局char常量数组在特殊场景下变为空字串的现象,主要与。在STM32F407+RT-Thread环境下,全局char数组变为空字串的核心原因在于。
2025-12-25 16:44:02
708
原创 github 双因子验证6位动态码免费攻略
gitbug 最近开启了双因子验证,不输入6位验证码就不让登录,让我十分头疼。如下图,进入Password and authentication 页面,再Authenticator app 这里 ,点击Edit ,幸好我的台式机此前登录过,现在每次登录都不需要输入账号密码。3,再用Authenticator 扫描之前保存的二维码,即可自动生成一个账号,并产生6位动态码。1,首次启用双因子验证时,会出现一个二维码,这个二维码要保存下来,后面会用到。其实还可以选择输入密码验证,输入密码后,就会出来一个二维码,
2025-10-23 12:33:46
495
原创 Ubuntu 20.04 使用ssh -T git@github.com 测试失败
被这个问题困扰一天了,网上查找了很多资料,也问很多次 AI , 尝试了各种方法,失败了很多次,最后终于搞定。在/ect/hosts 文件中添加 两行代码即可。
2025-10-13 19:35:02
296
原创 RT Thead 开发之RTC时间校正总结
RTC时间校正必须永远保证设定保存的是 UTC 时间,当你需要读取时间时,再根据当前时区转换为本地时间。5, 更新RTC时 , 需先得到tm 结构体格式的时间,如上图所示,再先后调用set_time,set_date,通过UTC 时间戳 ,转换本地时间 ,即自动加上时区对应的秒数,再转换tm 格式的时间,返回指针 tm*// 夏令时标志(>0: 启用,0: 禁用,<0: 未知)注意,tm 结构体格式的时间须是 本地时间,set_time 函数会自动根据时区来扣减秒数。// 时 [0, 23]
2025-08-27 16:11:08
264
原创 RS485 芯片SN65HVD72DR导致的死机问题调试
最后终于找到一个既不死机又能正常用它的办法,就是 在给它使能上电(拉高RS_EN)之前,把TX,RX 两个脚分别设为带上拉电阻输出高电平。至于根本原因,应该是rs485 收发器在上电时 ,有干扰信号(如浪涌,电磁干扰,噪声干扰)通过RX,TX 两个脚 传导到MCU 内部,导致MCU 逻辑混乱死机。对了,这颗MCU 是用内部时钟运行的。因为 只要不给它上电(拉高RS_EN),MCU 就不会死机。最近再一次栽倒在这颗RS485 芯片上了,硬件说这和芯片功耗有点高,要控下电源, 结果10次有9次程序死机!
2024-08-05 17:17:58
1294
原创 通过EXCEL表格快速推导多项式拟合公式
已知有限的几个点位数据,来推导多项式拟合公式,再运用多项式预测有限范围内的其它点位数据,这在检测中非常用。例如已知以下几个点的数据。2,选中数据,依次点击 “插入” --->"散点图"--->“带平滑曲线和数据标记的散点图”然后右边会出现趋势线的格式选择拦 -----> 选择多项式,阶数可以选2或者更高。3,点击曲线,单击右键,选择添加趋势线。
2024-07-26 09:31:00
6968
原创 RS485 数据不通 debug 调试记录
软件上看起来没有任何问题,但是RS485 工具就是收不到数据,用工具发送数据也不进接收中断,立马上示波器抓波形,结果 ,MCU 端 ,RX 无波形,TX 有波形;Driver data input ,字面意思是驱动数据输入,理解为要发送的数据从这个脚输入,此脚接MCU 的TX;最近调试一颗 TI 的rs485 收发器芯片 :SN65HVD72DR ,遇到到点麻烦,既不能收,也不能发送。接收数据后的输出端,即接收来自485总线上的数据后,发送数据出来的引脚,此脚 要接MCU 的 RX;
2024-06-04 10:48:40
982
原创 STM32串口DMA 空闲中断使用笔记
6,上面第5点可以看出,这个函数需要反复调用,一般放在串口中断函数里面就可以了,不能放在回调函数里,因为一旦出现异常没有进中断,那么在没有其它地方调用HAL_UARTEx_ReceiveToIdle_DMA的话 ,就再也不进空闲中断了,DMA 也不接收了。在这个函数中,可以做一些事情,比如记录收到了多少个字节数据,或者对接收数据处理。1,要开启串口 全局中断 和对应的接收DMA 中断,两个中断必须同时开。4,重写空闲中断回调函数 ,它是个弱函数,需要程序员自己实现。2,调用开启DMA接收函数;
2024-06-03 09:14:17
1014
1
原创 STM32 FreeRTOS 常用API
1,信号量信号量分为二进制信号量 和计数型信号量 信号:起通知作用量:还可以用来表示资源的数量当"量"没有限制时,它就是"计数型信号量"(Counting Semaphores)当"量"只有0、1两个取值时,它就是"二进制信号量"(Binary Semaphores)支持的动作:释放 给出资源,计数值加1 ,请求时获得资源,计数值减1但是它们的创建,获取,释放都是一样的:sSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initi
2024-05-06 16:16:50
1327
原创 STM8 调试总结
下面是 STM8 uart 接收中断函数,是最普通的串口中断,串口接收到一个字节 数据就产生一个中断。2,当收到 0xFF 的字符时 ,判断一下是否是数据包的结尾(只有定长数据包才可以采用这种方式处理)/* 接收的数据包以 0x55 开头 ,以0xFF 结尾,长度固定为11个字节*/1,每次中断进来 ,就从 USARTx->DR 寄存器中取出一个字节保存至缓存中。
2023-10-10 14:53:27
903
1
原创 rtmp :0:: WriteN, RTMP send error 104 原因分析过程
这里有个疑问,SRS 配置了DVR , 当dvr 出现问题时,没有对应的报错信息处理 ,tail -n 30 -f ./objs/srs.log 没有任何错误信息出来 ,这是不对的,希望以后有大牛改善SRS这个问题。仔细思索了一下,看看存储路径,顺便 df -l 看看储存空间 ,果然DVR 存储空间满了,清理存储空间后,继续 推流15路视频,一切OK 了。说了这个发现后,二逼同事不乐意了,说不可能 ,之前项目也有做DVR 配置,肯定不是DVR的问题的。这时,我知道肯定是服务器环境发生了改变导致的。
2023-06-09 10:27:27
1350
原创 MD5 算法
今日学习了 MD5算法 过程,做个记录。MD5算法的具体过程有以下4步:(1)附加填充位(2)初始化链接变量(3)分组处理(迭代压缩)(4)步函数直接上源码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#include <time.h>#define LEFTSHIFT(x,c) (((x) &l
2022-02-21 16:02:41
625
原创 jlink 烧录出错 programming failed @ address 0x00000000 解决办法
近几日调试 M0+ MCU ,使用jlink 烧录 总是弹出 programming failed @ address 0x00000000 的错误,开始以为硬件问题,后来发现换了新MCU ,第一次烧录是OK 的,后来再烧 一次就这样了,于是推测芯片可能 被锁住了,解决办法:J-Link Commander 输入:unlock Kinetis 搞定!!...
2019-05-23 16:47:43
27530
3
原创 IAR 开发环境基础技巧
因工作需要,接触IAR 开发环境有一段时间了,简单记录下基本使用技巧:1,查看实时变量值:进入调试状态,打断点到你想查看变量值的语句,运行程序到断点时 ,把鼠标放在变量处,就可以自动显示该变量的值。。。。后续再补充。...
2019-03-05 19:59:02
985
原创 IAR常见的错误及解决方法
最近开始玩IAR 环境开发 keaz128k MCU ,特收录总结一些关于IAR 的错误解决办法,以便日后查阅本文参考http://zhenling.chen.blog.163.com/blog/static/194085192009713101043668/(1)Error: Copy protection check, No valid license found for this p...
2019-01-22 09:52:36
25617
原创 Ubuntu14.04 安装Android 编译环境之 环境变量设置1---学习笔记
修改 配置文件:sudo vi /etc/profile 在文件的最后加入:#JDK 环境变量设置export JAVA_HOME=/home/kld/Desktop/android/jdk1.8.0_74export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:$CLASSPATH:${JAVA_HOME}/lib:${JRE_
2017-04-20 11:58:38
405
转载 Kbuild Makefile介绍
从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这同过去的编译系统有很大的不同,尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会两次扫描Linux的Makefile:首先编译系统会读取Linux内核顶层的Makefile,然后根据读到的内容第二次读取Kbuild的Makefile来编译Linux内核。Linux内核Makefile分类· Kerne
2016-11-23 15:20:51
592
原创 ubuntu 14.04 samba安装 解决指定的网络名不再可用
最近几天因为工作上的需要,需要安装32位的Ubuntu ,因为ubuntu 之前一直在用,都用几年了,原以为装个32位ubuntu 那还不是手到擒来,小菜一碟吗?谁知一动手,立马遭遇尴尬,直接被一个小问题打脸了 !当我把samba 安装后,进入共享文件内 不能创建文件!!! 再改改配置文件,甚至都进不去共享目录 !!无名的烦躁和郁闷 ,疯狂的百度找各种原因 ,Samba 配置文件 s
2016-04-25 09:13:55
9581
转载 gcc命令
gcc命令编程开发gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。语法gcc(选项)(参数)选项-o
2016-04-03 22:12:29
579
原创 从头学习编译过程
之前经常接触Makefile ,但近日跟随 韦东山老师学习时,总觉的自己了解的不透彻,所以决定再复习一遍。经典的样例代码:#include void main(void){ printf("hello world!!!!!\n"); return;}以上内容保存为hello.c ,linux 环境下cd 到当前目录,输入:gcc -o
2016-04-02 17:56:59
1241
转载 Makefile选项CFLAGS,LDFLAGS,LIBS
温故而知新CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,
2016-04-02 12:08:44
471
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅