- 博客(51)
- 收藏
- 关注
原创 _二级继电器程控放大倍数自动设置
在开发项目时,有时会遇到需要使用程控放大的时候,如果没有opa那种可编程放大器,那么就需要通过继电器来控制放大倍数的设置。而在继电器程控中,常用的是二级程控,三级程控相较于二级就复杂了许多。而在二级程控中,每级继电器都有两种状态,因此每级都可以设置两个倍数,两级级联共4种放大倍数。对于具体应用场景来说,难的是如何比较好地设置放大倍数,让其可以对输入区间的不同部分进行选择性放大,进而使得增益后的子区间均处于合适的范围。
2025-03-09 21:18:45
727
原创 TMS320VC5509的上手教程__CCS和CLion开发TI工程(间断更新中)
CCS 12.8.1是最后一个包含C55x系列芯片的IDE,CCS20已经去除该组件了。
2025-02-27 16:55:27
951
原创 __对于初学者的CCS 汉化
CCS安装后默认是英文,目前最新的20版其Help工具栏已经取消了安装软件包的选项。不过,想要汉化还有更简单的方法。
2025-02-26 20:33:11
692
原创 LVGL使用过程中的一点启发__GUI Guider代码转换
最近使用lvgl开发代码时,觉得C语言表现力不够,创建组件的流程有些麻烦,于是打算使用C++的元编程+CRTP模式封装了一些常用的API操作。在链式调用、引用、重载和缺省等功能特性下,使用确实方便了许多,尤其是事件绑定那块,因为GUI Guider的代码编辑器直到1.9.0似乎还无法保存。不过坏处也很明显,不能可视化设计界面,毕竟GUI Guider只支持生成lvgl代码。这显然会大大影响开发效率,即使在工程里嵌入一个模拟器。
2025-02-15 12:48:05
1042
原创 __gcc使用LTO优化出现_kill、_getpid等未定义错误(解决)
把FreeRTOS引入工程后,也会报错,报错位置是在汇编语句块里这应该是LTO的全局优化未能识别汇编代码中的隐式函数引用,做法与前面相同,在函数的声明或者定义前面加上used编译器扩展used确实好用。
2025-02-06 21:19:33
829
原创 【嵌入式】总结——Qt开发(四)
与前面一致,主要目的是为了快速上手体验,并没有深入研究。本篇是对初学Qt的一次总结,并非终点。本阶段的目的是搭建桌面-应用基本框架,并开发一个“App”。正点原子给的综合例程源码使用的是QML,本篇与其一致。人机对战时要注意,AI可以从零生成你要的效果,你让它在此基础上添加或者优化是没有任何问题的,它可以一直给你堆叠特效,但让它修改、修复或调整是很容易出现问题的。讲一个我遇到的,让它生成应用图标的样式,它做得很好,让它在此基础上增加一些点击效果,也没有任何问题。
2025-01-27 14:27:28
810
原创 STM32使用ITM调试_通过仿真器实现串口打印
调试单片机时,如果要打印数据往往需要另接一根线通过USB转TTL接到电脑上。但这样做往往并不方便,尤其是身边没有USB转TTL工具时。这时可以使用单片机自带的ITM单元,仅靠ST-Link仿真器即可实现串口打印,并且可以轻易把波特率设置到M以上的级别。使用ITM进行串口打印并不是什么新方法,IAR、STM32CubeIDE等都集成了相应的调试工具窗口,或者直接使用ST-Link的客户端(可参考博客【嵌入式】CLion & CubeMX。
2025-01-11 22:42:59
1526
原创 __关于STM32全速运行与调试状态结果不一致的参考_HAL
可能是由于复杂的文件包含关系,调试时单片机使用的是system_stm32f4xx.c中的HSE_VALUE的值,而全速运行时,使用的是stm32f4xx_hal_conf.h。查找半天后,发现stm32f4xx_hal_conf.f中的HSE_VALUE的值与system_stm32f4xx.c的HSE_VALUE不一样,移植工程时忽略了这一点。在使用usart控制MP3模块时发现了一个问题,调试时可以正常控制MP3模块,但取消调试改为全速运行时,MP3模块无法响应任何命令。
2025-01-11 18:06:55
177
原创 _STM32关于CPU超频的参考_HAL
168MHz本篇仅仅只是提供超频的简单方法,并未涉及STM32超频极限等问题。原理很简单,通过设置锁相环的倍频系数达到不同的频率,从而实现超频。需要注意的是,运行时切换频率不能直接修改,因为此时用的HSE时钟是经由锁相环产生的,直接修改锁相环会出现问题。解决办法是,切换为HSI并关闭锁相环,然后重新配置锁相环,最后再重新切换HSE。最后切记,超频有风险!!
2025-01-11 17:54:12
1463
原创 使用SDL2搭建简易LVGL模拟器
LVGL是跨平台的,因此无论是单片机的arm32环境,还是PC机的x86_x64环境,都可以使用一份代码完成基本相同的界面效果,这为模拟器的搭建提供了非常有力的支持。对于单片机使用LVGL,如果仅显示界面的情况下,我们是在lv_port_disp.c中给disp_flush这个函数提供了一个接口如LCD_Color_Fill函数,使其可以控制LCD的界面绘制。基于此,只要我们创建一个窗口,把绘制窗口的接口提供给disp_flush,那么即可实现同样的绘制效果。
2025-01-01 20:18:22
1657
原创 _使用CLion的Vcpkg安装SDL2,添加至CMakelists时报错,编译报错
语言:C++20编译器:gcc 14.2摘要:初次使用Vcpkg添加SDL2,出现CMakelists找不到错误、编译缺失main错误、运行失败错误。
2025-01-01 02:30:37
680
原创 嵌入式_GCC14.2初体验_使用Module特性
哈哈嗨,之前看着GCC14.2的模块特性馋得不行,但GCC14.2只做了上位机的,而交叉编译器的还是13.3。苦等了这么久,总算在前些天出了这个版本,那么废话不多说,我们直接开始↗。
2024-12-16 08:00:00
1149
原创 _C#_串口助手_字符串拼接缺失问题(未知原理)
不知道是队列的原因还是SerialPort中Read与ReadExisting的区别,或是字符串与字节数组的原因,亦或是多次接收的数据变为合并为一个数据,总之经过了下面变换,可用了,而且打印效率肉眼可见地提升,不再卡顿了。于是只能怀疑到字符串本身的问题了,由于此前本人是学C/C++的,对C#的字符串原理还不甚了解,大概知道C#的字符串中的“\0”并非作为字符串的结尾。虽然串口发送脚本的速度只提高了一点点,但是日期时间几乎不打印,只有零星几个有,而且整个显示非常卡。虽然变得极其卡,但可以正常显示日期时间了。
2024-11-28 18:16:59
457
原创 嵌入式_串口助手__可以显示图表、进行FFT
缘于博客,出于需要查看串口数据变化情况的需求,又没有找到合适的串口助手,于是临时使用WPF搭建一个串口助手。也因此界面简单,由于使用WPF,相比Qt性能上确实有些堪忧。虽然界面和功能远远不及其它串口助手,不过由于项目比较简单,可以更加定制化地开发,也能满足一些特殊需求,适合练手。本项目工程已经上传到github和gitcode了,功能和界面比较简单,可以当成一个小框架自己继续开发,或者练手。代码里面有不少注释,命名也还比较规范,采用MVVM模式,对初学者应该也比较友好。
2024-11-24 18:35:35
1034
原创 _FYAW智能显示控制仪表的简单使用_串口通信
该仪表可以实时显示位移传感器的测量值,并可设定阈值等。先谈谈简单的使用方法,通过说明书,我们可以知道长按SET键可以进入参数选择状态,按“↑”“↓”可以选择的上一个或者下一个参数。从参数一览中可以看到有不同组的参数,当我们第一次进入参数选择状态时会进入第一组参数,可以设置不同的阈值。只不过由于是数码管,显示字母时会用一些比较奇怪的表达,比如“5”其实就是“S”,可以通过对照参数表,获取不同字母的显示。
2024-11-20 23:54:04
938
原创 单片机工程使用链接优化-flto找不到定义_链接静态库
如果像前面把各种库独立编译,那么在开启链接优化时,会出先下面的报错,总之就是各种找不到定义,连main都找不到这个其实很好理解,使用-flto链接优化时,会把所有资源文件编译后再链接优化一下。那么问题就出现在了编译这块,因为LTO 无法跨静态库边界进行优化,可能导致一些符号无法正确解析。所以需要把所有资源文件统一添加到可执行目标时,LTO 优化的范围涵盖了所有源文件,这样才能正确地处理跨文件的优化和符号解析。当然这也与编译器和连接器有关,不同的编译器和链接器在处理 LTO 时可能有不同的行为。
2024-11-09 15:40:57
963
原创 浅谈单片机的gcc优化级别__以双音频信号发生器为例
gcc有多种优化级别,一般不选择的情况下,IDE默认是按照-Og或这-O2优化的。以gcc编译器为例,浅谈一下优化级别,我们常见的优化一般是指gcc的-O2、-Og。除此之外,gcc还有-Os等一系列优化,链接器也有优化级别。基于单片机的开发,如果关注的是生成代码的大小,那么可以考虑-Os和-Oz。如果在乎性能的话,可以尝试-O2以上的优化级别。
2024-11-09 00:08:45
1052
原创 _处理匿名命名空间里的变量时进入硬件中断错误
如果在 .hpp 文件中匿名命名空间外部定义一个 static 变量,并在同一个文件中定义一个静态内联函数来操作这个变量,然后在其他文件中调用这个内联函数,这种做法仍然会导致每个翻译单元有一个独立的变量副本。之所以使用匿名空间,是因为最近开发的需求中不希望变量或者一些函数外露,但又希望简单一点不使用类,同时接口是模板函数,那么这时候就可以使用匿名命名空间,也算某种意义上的“闭包”。当然对于到处漏风的宏定义除了#undef就没有更好的方法了,匿名命名空间并不属于预处理阶段,所以管不了宏定义。
2024-11-08 22:25:54
411
原创 __问题——进入启动文件_卡死在Default_Handler_死机
进入硬件错误中断,那肯定是发生了硬件错误。但进入Default中断十有八九是没有定义中断处理导致的,因为启动文件里的中断向量表默认指向Default_Handler。如果你使用的是HAL,那么当发生了这种问题后,可以用CubeMX生成初始化代码,重新配置。或者根据CubeMX生成的代码,来观察哪些宏要取消注释,哪些函数要调用。或者不管什么中断回调,硬上中断向量。
2024-10-21 14:15:55
698
原创 【嵌入式】总结——Linux系统移植(二)
坦白来说,这一步是还挺难的。难在哪呢?难在对于全流程的把握上。由于视频教程的版本比较落后了,上网查教程呢,大多都是2022或者2021年的了,即便是2024的教程,里面内容大多是老一套。基本内容要么直接拿正点原子的例程源码,要么放个所谓的NXP官方源码链接,多少有种授人以鱼的感觉。下面将先介绍如何找官方源码,以便后期学有所成之时可以自行更改官方源码。
2024-09-26 23:20:33
1224
原创 __问题——解决CLion开发Linux驱动时显示头文件缺失
这种Makefile可以在终端里执行,但是CLion无法解析,也就无法把linux内核下的include、arch/arm/include等加载到外部库中,那么CLion自然无法识别等头文件。所以此时如果文件夹里没有Makefile,CLion无法加载,如果有Makefile,但Makefile里面往往不会有目标all,比如下面这个led驱动的Makefile。这在很大程度上限制了CLion的发挥,因为无法使用相关代码补全、静态检查等功能了,全被这个缺失的头文件挤占了。
2024-09-26 23:13:29
432
原创 经验——CLion通过SSH远程开发__imx6ull的linux开发
随便创建一个工程,因为主体是在Linux环境里,需要使用Linux的命令行,不需要在本地导入工程。并且由于Linux内核项目的Makefile无法被CLion正确识别,所以无法使用CLion自带的集成工具,比如构建用的小锤子,所以不必配置什么远程工具链但是配置远程工具链时可以顺带建立部署,一举两得,那么就配置远程工具链。
2024-09-24 16:48:14
1663
原创 代码——IMX6UL烧录工具及其使用
官方提供的IMX6UL烧录代码,本篇是在正点原子给的代码基础上修改的,增加了些许功能,可根据自己的需求更改。此外代码难免有疏漏之处,还望见谅。
2024-09-18 23:50:25
1219
原创 问题——IMX6UL的uboot无法ping主机或Ubuntu
主要描述可能的方向,不涉具体过程,相应操作可以查阅网上相关教程跟随正点原子教程测试以太网端口时,即便按照步骤多次尝试也无法ping通,后补充了些许网络工程基础知识解决了这个问题。uboot无法ping主机或Ubuntu有多种可能,我所知的有以下几种情况——物理上未连接或连接松动——防火墙没有关——uboot的ip地址、子网掩码等配置错误——…………这次我所遇到的是第三种,这种情况比较复杂,有可能是虚拟机或主机网络配置错误、ip地址和子网掩码找错等。
2024-09-16 01:35:45
1740
原创 【嵌入式】总结&参考——Linux下的裸机驱动开发(一)
使用make其实就是为了简化操作,有些麻烦的操作流程能省就省,比如烧录这一操作,视频教程里总是会在命令行里输入./imxdownload xxx.bin /dev/sdx,这样做就显得很麻烦,因为自己开发过程中,挂载到设备树上的sd设备往往是同一个,序号不会变。于是可以自己定义一个规则,专门用于烧录,每次需要烧录时,直接make download。如果觉得还是太长,可以把规则名改短一点download:这次学习,除了“由简入深,方能深入浅出”以外。
2024-08-22 15:50:25
1740
1
原创 BUG——GT911上电后中断一直触发
算是作为一个后来者对这一现象的补充。解决方案就是在中断开启前主动清零,详情可见本篇末尾,点击目录【总结】具体情形是,上电之后,本应不会触发中断,结果却一直疯跳,14s左右进入1400多次中断,与扫描频率100Hz相近。中断开启前,以10ms左右的延时清零8次左右即可解决问题,当然具体情况具体讨论,在这个参考上调整一下。i < 8;i++)源码在下面,都是在正点原子代码的基础上微调一下Touch.h源码/* 触摸屏结构体 *//* X轴坐标 *//* Y轴坐标 */
2024-08-21 20:52:26
1574
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人