- 博客(55)
- 收藏
- 关注
原创 【单片机求助】之HC32F460 DMA AOS使用
为了减少串口发送是占用过多的时间,串口发送使用了DMA+AOS+队列,当方式,之前单个串口发送测得挺好,今天测试产品的时候,突然发现多串口同时使用的时候,有概率出现发送异常。于是写了个测试程序,现象很奇怪。当两个串口同时发送数据时,只有固定的串口2可以发送(测试的串口2与串口3),同时发现,串口3发送字节结束并没有使AOS触发DMA传输。这个现象有点纳闷,难道AOS就是这样的特性?并发时会丢掉优先级较低的事件吗?
2026-01-04 10:52:59
158
原创 【单片机】之HC32L130/196/190等,汇编文件报错
原因是启动汇编文件不适用,这些官网提供的DDL库,没有像F448之类的明确给出 .s 汇编文件,应该到example中的案例里边找,直接找template/MDK的, 不要找其他的(不一样),使用这里的 .s 启动文件就好了。吐槽下,纯纯给人找别扭。
2025-12-25 09:31:17
164
原创 【单片机】之HC32F448 DMA发送串口数据
5、(AOS接收到串口发送寄存器空中断,触发DMA进行下一个数据发送,直到全部发送完毕,触发DMA发送完成中断回调,清理串口发送寄存器空中断,关闭发送寄存器空中断)。4、手动发送第一个字节(这个地方比较坑,只有成功发送一个数据之后,才能触发串口发送寄存器空中断)1、初始化DMA、配置AOS(用于自动触发DMA发送,配置触发源:串口发送寄存器空中断)。2、设置DMA(主要是设置数据源地址与长度)。3、使能DMA,使能串口发送寄存器空中断。
2025-12-23 17:35:08
203
原创 【经验分享】之C++编译报错:undefined reference to
如果OpenCV是用“方言A”编译的,而你的程序(或LibTorch)是用“方言B”去链接它,两边对同一个函数(如。(新ABI)的“方言”编译。如果你的OpenCV是用旧编译器或默认设置(旧ABI)编译的,两者“方言”不通,一起链接就会报错。,怎么调参数都不行。之前单独用OpenCV都好好的,差点怀疑人生(先说好,我C++水平仅限于用现成的库,别喷我)。最近用C++写程序,同时调用了OpenCV和LibTorch两个库,编译时一直报错。)在二进制层面的实现和命名规则可能不同,这就是不同的ABI。
2025-12-11 14:29:12
400
原创 【单片机】之HC32F460中断向量选择
相较于传统的固定中断映射方式,HC32F460提供了一套高度可配置的中断管理系统。这种设计虽然初学时有理解门槛,但为复杂应用提供了精细化的中断管理能力。多源共享:中断源选择上相对固定,但是单个向量可服务于多个外设中断。限定范围选择:每个向量在指定的32个中断源组内选择。:采用传统设计,仅前16个中断向量可配置,其余固定映射。:增加了配置复杂度,需仔细查阅数据手册中的事件映射表。应用场景:关键实时中断,需快速响应的外设。优势:高效利用向量资源,适合低优先级中断。:集中维护中断映射表以提高可维护性。
2025-12-04 14:06:38
374
原创 【电子电路】之Type-C正反插
数据传输(USB)、视频(DisplayPort Alt Mode)或充电协议(USB PD)的协商都将在正确的逻辑通道上继续进行。(例如0.4V~2.0V,取决于电源能力),而另一个CC引脚电压为0或接近0(仅通过Rd下拉)。这种设计意味着,无论正向还是反向插入,总有一组功能对称的引脚会与线缆另一端的对应引脚接通。:线缆中唯一连通的CC线(例如CC1)会与端口上对应的CC引脚(A5或B5)接通,形成一条。(通过上拉电阻Rp),另一个是未连接的(VCONN,用于给有芯片的线缆供电)。功能相同,对称排列。
2025-12-03 14:52:44
1143
1
原创 【AI时代】之程序员何去何从?
作为一名与AI协作已五年的程序员,我亲历了从早期GPT-3的“智障表现”到如今成为得心应手工具的转变。大厂裁员潮背后,是AI正逐步接管那些目标单一、逻辑明确的编程任务——据我观察,目前约80%的此类工作已可交由大模型高效完成。例如优化代码时,AI可能过度微调或盲目重构,却无法权衡性能、可读性与业务诉求之间的平衡。AI时代淘汰的是“编码工人”,却为“智能时代的软件架构师”开辟了更高价值的舞台。程序员真正的出路,在于成为AI的。——决定做什么菜、为何而做、如何调味、选用何料,并洞察客人未言明的需求。
2025-12-02 09:45:48
522
原创 【单片机】之日志存储
在运行复杂应用时,既要保证核心功能的实时性,又要存储大量用于后期诊断的调试日志,这变得非常困难。单片机仅负责生成和实时发送关键日志,而将繁重的存储任务“外包”给一个专用的、大容量的外挂日志模块。这通常需要在程序启动时就将重启原因保存在一个不会被初始化的内存区域(如STM32的Backup SRAM),或在复位前最后的代码中强制发送。主单片机在需要记录日志的地方(如错误处理、状态变更、看门狗喂狗前),调用一个封装好的。一个独立的、简化版的单片机系统,专门负责接收、缓存、管理并存储日志。
2025-11-20 11:55:19
836
原创 【日常】之Microsoft Azure 绑定信用卡
首先不是所有的信用卡都支持,信用卡需要支持。中文英文大小小写都试了,仍然不行。请检查所有字段中的详细信息是否正确,或尝试其他卡。使用英文版网页进行绑定。
2025-11-05 08:29:32
843
原创 【Windows11操作】之添加快捷方式到任务栏
一、将快捷方式指向的exe之类的可执行文件固定到任务栏(右键属性查看指向)。点击右下方应用,点击确定退出后再右键快捷方式,发现就有固定到任务栏的选项了。Windows11是不能将快捷方式固定到任务栏的。注意:最后有个空格不要忘记。
2025-11-03 10:29:37
1189
原创 【智能体】之从战场到厅堂
,而是会综合你的日历、健康数据和历史习惯,给出建议:“您明早有个重要会议,根据您当前的疲劳状态,建议您停止工作,我已为您调暗灯光并准备好热水沐浴。:智能床垫监测到老人夜间心率异常,智能体管家会首先轻柔地唤醒他,询问其感受,同时立即通知子女的手机,并准备好拨打急救电话的指令,只需一个确认。:通过遍布全屋的传感器和可穿戴设备,它不仅能知道你是否在家,更能感知你的状态——你是在沙发上浅眠,还是在书房专注工作?这个即将到来的智能体,将不再是藏身于云端的遥远算法,而是融入我们生活背景的、无处不在的温暖存在。
2025-11-01 13:56:58
953
原创 【程序员经验总结】之语言大模型工具使用
尽管当前已出现不少专注于编程的大模型,但根据我的实践,由大模型直接生成的代码中,约半数存在不同程度的问题——包括设计不合理、边界条件缺失甚至潜在错误,且这些问题往往在测试阶段才暴露出来,修复成本较高。这是大模型最得心应手的领域,也是使用中“踩坑”最少的场景。在工作中经常需要撰写总结、报告或邮件,初稿完成后交由大模型进行语言润色,往往能收获表达更精准、结构更清晰的版本,有效提升文本质量。无论是技术方案设计还是内容创作,大模型都能提供多角度的思考路径,堪称一位不知疲倦的“头脑风暴伙伴”,有效拓宽思维边界。
2025-11-01 08:40:57
412
原创 【计算机基础】之CPU制造
将裸芯片固定在基板上,用极细的金线或铜线将其上的接触点连接到外部引脚,最后用外壳密封保护。这是在最纯净的硅晶圆上制造晶体管本身和内部连接线的过程,如同在城市地基上建造每一栋建筑和内部街道。通过以上步骤的无数次循环,一个由无数纳米级晶体管和错综复杂的内部连线构成的复杂三维结构就在晶圆上诞生了。用化学或物理方法,将没有光刻胶保护的部分薄膜去除,从而在晶圆上留下永久的三维结构。:在晶圆表面铺设各种材料的“楼层”,如绝缘的二氧化硅、作为导体的多晶硅或金属。,像遍布城市的“缓冲水池”,在晶体管集体开关时稳定电压。
2025-10-31 15:18:27
488
原创 【计算机基础】之核心架构
总结:现代CPU并非简单地选择一种架构,而是通过精妙的“修正的哈佛架构”,在最需要速度的地方(核心与L1缓存)采用分离设计以提升性能,在更宏观的层面(L2/L3/内存)保留统一设计以维持通用性。1、“冯·诺依曼瓶颈”:由于指令和数据争用同一套总线,CPU在每个时钟周期内只能进行"取指令"或"数据读写"中的一项操作,无法并行,导致系统性能存在天然的天花板。工作流程:CPU可以通过”指令总线“从指令存储器中读取下一条指令,同时通过”数据总线“向数据存储器读写当前指令所需的数据,两者并行不悖。
2025-10-31 14:45:00
425
原创 Jlink 识别不到设备
使用这种板子的时候,尽量上边只插当前使用的线,比如4线和5线的,不要同时插上去,否则有了可能造成识别不到设备的情况。jlink在使用过程中可能会遇到各种识别不到设备的情况。我是使用的这种转接版。
2025-10-24 16:03:21
278
原创 航顺 HK 单片机 使用Jlink烧写
先安装jlink支持,航顺官网有工具,下载安装。安装完成后打开软件是这个样子的,点击右上角文件。完成之后jink就可以正常下载调试航顺芯片了。安装点击安装jlink补丁即可。
2025-10-24 15:57:04
529
原创 给新入职程序员的一点建议
即便此时,也不建议 “连根拔起”,而是分模块、分阶段推进,尤其要做好向前兼容(比如数据格式、接口调用方式的兼容),用迭代的方式逐步完成改进。给新入职程序员的一点建议:刚到公司时,面对前辈留下的代码,别急着吐槽 “不够优雅”,更不要急于想着重构甚至推倒重来 —— 这往往是经验不足的表现,很容易让自己陷入被动。这样既能避免因经验不足踩坑,也能让优化更贴合实际业务需求,同时维护团队协作的顺畅 —— 毕竟,代码的核心价值是支撑业务稳定运行,而非单纯追求 “技术完美”。将内容精简到300字。
2025-10-20 14:03:58
184
原创 单片机串口波特率注意事项
在设置波特率的时候并不是详设多少就设置多少的,要看对应的时钟频率是否能够满足。例如HC32L130这个芯片,如下图,当相应系统时钟低于24MHZ的时候不可以使用115200波特率,波特率误差大于115200允许的误差范围2%,无法正常通讯。不同芯片情况不同,需查看手册。
2025-10-20 13:20:58
290
原创 HC32F448 Timer0 事件捕获失败
折腾了半天,发现前边似乎没啥问题,但是到了定时器捕获到事件进行中断触发的时候,意外发现不支持事件捕获触发中断,晕。(只有比较中断和溢出中断,好奇怪)。没办法,只能采用之前的笨办法了(轮询GPIO。或者GPIO中断加10KHZ的事件戳。避免不了使用高频定时器了)思路是:1、433转为数字信号的引脚接到GPIO,gpio电平跳变触发硬件事件。前提:想利用定时器事件捕获的方式进行硬件计时,从而解码433信号。3、从而获取到电平跳变之间的时间,来进行0/1解码。2、定时器捕获事件,固定定时器当前数值。
2025-10-15 16:53:40
250
原创 HC32L130之DMA
注意:当源址址或目标地址每隔一段时间才能提供或接收一个数据时,BC 值只可设为 0”,注意下,这里设置的值必须大于等于1,否则会出问题,原因是初始化是会有-1操作。说一个点,文档中是这么说的:“配置 DMA 通道待传输的数据块的大小为 BC+1。
2025-07-30 19:34:02
212
原创 J-Link添加华大mcu支持(一键搞定)
网上99%都是什么.FLM文件, 什么XML文件的,这个路径那个路径。人家华大官网已经给了工具,下载下来,打开,点击。
2025-06-14 17:03:52
535
1
原创 打开ffmpeg编码器的时候报错:avcodec_open2()返回-22
1、如果你本来就是用的avcodec_find_encoder_by_name,你可以离开了。去查查是不是配置错了,或者没搞明白流程,直接去找ffmpeg源码下的doc/example下的例子,很清楚,直接照搬。去找你需要的编码器。如果找不到你要的编码器(比如我,想要libx264,这里只有h264_v4l2m2m,这个是硬解码),那么问题找到了,你编译的ffmpeg库,没有支持你要的编码器。名字查找才是实打实的,实际情况没有,就会报错,id查找不会,直到 avcodec_open2()的时候才会报错。
2024-09-20 15:36:23
2344
1
原创 ubuntu 编译加载ffmpeg动态库报错,大片提示函数未定义
(解决问题的时候,考虑过头文件与库版本不对应,代码不适用与新版本,ffmpeg编译配置有问题,是否需要开源声明等等,都考虑了一遍。还是没有解决,最后把几年前自己用过的一套代码找出来,发现了细节)ffmpeg原生头文件中是没有C++编译器判断的,如果使用的是C++编译器编译的代码,那么就必须要手动把extern C加上!一个小问题困扰了我一天(压根没往这处想,不应该),还是记录下。也许正好能提醒到有相同情况正在困扰的人。再次编译,直接搞定。虽然是很小的问题,但是被完全忽略,耽误了很多时间。
2024-09-13 10:37:36
756
1
原创 【记录】ubuntu2204安装cuda遇到的一个问题
cuda正常,在显卡驱动上出现了问题,就是这步:sudo apt-get install -y nvidia-driver-550-open。最后灵机一动:sudo apt-get install -y nvidia-driver-550 把open去了,在我的经验,加上open应该是最新的开源程序,去了因该是稳定版本吧,应该版本要低一些。这时发现显卡驱动报错了,有个依赖库没有,具体是哪个我忘了,问题是:安装后发现,他需要的版本,比我能安的最高版本还要高。nvidia官网按照流程,安装cuda12.4。
2024-09-10 10:59:52
516
原创 ubuntu编译报错(opencv)
可以看到我的libtiff库指向的是: /home/miuney/anaconda3/lib/libtiff.so.5,实际上这个库的并不是我们想要的tiff库版本,因为安装了conda的原因,导致存在多个tiff版本,链接器找错了(至于为什么找错,可以看看我的另一篇文章,对连接器的工作逻辑,说的很清楚。2、创建软连接,指向正确库:ln -s /usr/lib/x86_64-linux-gnu/libtiff.so.5 /home/miuney/anaconda3/lib/libtiff.so.5。
2024-09-10 10:38:52
1786
原创 ubuntu 下 vscode中无法使用sogou(搜狗)输入法
如果你的vscode是直接从应用市场安装的。应用市场的vscode本身就不支持。1、卸载原有应用市场vscode:sudo snap remove code。2、到vscode官网重新下载安装。
2024-09-09 15:16:48
1044
1
原创 linux加载动态库那些事(C/C++)
一般情况下,如果存在多层依赖,我们是没有办法通过rpath的形式指定依赖库搜索路径的,乖乖加环境变量,或者在ld.so.conf中添加路径。2、如果给的路径下存在相同名字的库,但是两个库的架构是不同的(如:一个是arm的,一个是x86的),连接器会。或者 /etc/ld.so.conf.d下文件 中的路径,进行查找。一个C/C++程序,需要给它提供两次依赖库的路径,第一次是编译的时候,第二次的程序运行的时候。假设,我的程序P,依赖动态库A,动态库A依赖动态库B。另外:1、如果给的路径下存在相同名字的库,
2024-09-06 10:50:18
681
原创 海康安防相机的取图方式(鲜为人知)(自开发软件取图)
质量最好的一定是第三种,很多人以为取的流一样,应该得到的质量是一样的吧。但是,对于不同型号的相机,质量差距可能会不同。1、使用rtsp取流,然后提取图片。这个方法呢,唯一的好处就是通用性比较好,其他一点好处没有。如果说挂载的摄像头太多,建议使用第二种,因为摄像头在发现网络拥挤的情况下,会降质量的。2、使用海康提供的SDK中的拍照功能,就是不开视频流,直接返回图片。3、使用海康提供的的SDK取流并使用海康提供的解码器解码取图片。很多小伙伴在做一些项目的时候,需要用海康的安防相机来取图片。
2024-09-04 17:05:21
1404
1
原创 给树莓派交叉编译onnxruntime,主机环境ubuntu2204。踩的坑
(本着严谨的态度,提前做一个声明,以下操作,仅仅用来实现基础操作,比如树莓派+yolov8+onnx跑个结果什么的,能否实现复杂甚至深层的操作,我不知道,我也没有对交叉编译的复杂操作搞透。3、现在onnxruntime的编译使用的是 build.sh了,如果想继续使用CMAKE的一些参数,可以像我这样:bash ./build.sh --cmake_extra_defines CMAKE_TOOLCHAIN_FILE=xxxx.cmake CMAKE_INSTALL_PREFIX=xxxx。
2024-09-04 16:41:39
1015
原创 ubuntu启动时突然报错:you are in emergency mode(磁盘自动挂载失败(问题之一))(以前时好的,突然不行了)
3、看看报错,是否有磁盘挂载报错的信息(如果没有这类报错信息,就不用往下看了,我说的情况跟你的不一样)。这里,根据刚才记得数字,就是磁盘UUID的后几位,找到对应磁盘的信息,记住磁盘文件的路径(如:/dev/sda1,UUID前边就是)fsck /dev/..... (上一条的磁盘文件路径,一路回车就行)记住报错这行最后边那一串数字,记住几个就行,一会用来分辨磁盘文件。7、完成后,reboot重启系统,看看行不行。4、退出系统日志(输入:q退出)
2024-09-02 10:19:40
1519
原创 ubuntu 安装Qt那些事
有的人可能缺少:libxcb-xinerama.so.0: cannot open shared object file: No such file or directory。已经不在提供本地的安装文件了,之后未编译的源码,对于大多数人来说没必要折腾源码安装。我的说是:(libxcb-cursor.so.0: cannot open shared object file: No such file or directory)这次说下安装好之后我遇到的一个问题:在运行的时候出现了一个弹窗,是个报错信息。
2024-07-07 15:25:38
1261
原创 ubuntu下,关于cuda、cudnn、显卡驱动安装的那些事
(1)要使用哪些平台或者工具,如:pytorch、libtorch、faiss、darknet、tensorrt等,如果这些东西你要在环境配完之后还要延续之前安装or编译的,那么,要注意之前依赖的cuda版本是哪一个大版本的(如11.* or 12.*),新的cuda版本要在相同大版本内,否则会出现缺少依赖。这个方法是我以前最喜欢使用的。(2)如果要用pytorch、libtorch,看一下你要安装的版本,可以选个对应的cuda版本,虽然如果版本不同大概率也不会出啥大问题,但多一事不如少一事。
2024-06-01 12:15:44
605
原创 C/C++引用opencv库的时候,如果出现imread、imshow未定义
如果库文件指定没问题的话,考虑是因为源文件头文件的版本,与指定的库文件版本不同导致。
2024-05-13 23:54:04
365
1
原创 ubuntu安装tensorrt
如果报关于cuda依赖的问题,如果如果cuda已经正确安装并配置好环境。直接使用cuda deb版本重新安装。
2024-05-12 12:51:56
488
1
原创 ubuntu 安装cuda
安装cuda run版本,报错,查看日志。报错:An NVIDIA kernel module ‘nvidia-drm‘ appears to already be loaded in your kernel…
2024-05-12 12:21:22
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅