- 博客(50)
- 收藏
- 关注
原创 0011.查看Freertos任务运行时间和堆栈使用情况
现象:串口命令行使用了设置时间的命令后(通过sscanf函数解析输入的参数),导致系统死机。因为时间统计功能需要提供一个高精度的时钟,可以使用定时器timer17。这个时钟的精度要比FreeRTOS的系统时钟高大约10~20倍即可。三、实例:通过任务堆栈的信息解决实际问题。命令统计任务运行时间信息。命令查看任务堆栈信息;
2025-12-24 15:18:04
9
原创 0014.STM32CubeIDE的工作空间的配置信息导出和导入
将Workspace\.metadata\.plugins\org.eclipse.core.runtime中的.settings文件夹复制出来,这个.settings文件中保存的就是当前工作环境情况,有设置的字体大小、背景色等信息。将该文件复制到对应新创建的工作空间下的对应目录,然后重新启动STM32CubeIDE即可。由于STM32CubeIDE是对eclipse的二次开发,所以导入导出配置的方式跟eclipse是一样的。
2025-12-16 15:34:36
8
原创 0010.static修饰的全局变量被无意间修改
通过在线仿真看到R.PID.Kp、R.PID.Ki、R.PID.Kp的值也被无意间修改了。判断每次接收数据的长度,若长度超过buf的大小,则不要存在buf中,直接丢弃这组数据。查看log信息可以看到:由于Rx.Buf的大小为64,所以写数组中内容时,数据溢出。
2025-10-29 18:02:41
28
原创 0009.STM32等单片机的RAM和FLASH使用情况查询
RW-data: 已初始化的全局变量和静态变量(初始值存储在FLASH中,运行时在RAM中)data: 已初始化的全局变量和静态变量(存储在FLASH中,启动时复制到RAM)ZI-data: 未初始化的全局变量和静态变量(运行时在RAM中分配并清零)FLASH总使用量 = Code + RO-data + RW-data。data: 252 字节(已初始化的变量,运行时存放在RAM中)ZI-data: 34312 字节(未初始化的变量,启动时清零)RAM总使用量 = RW-data + ZI-data。
2025-10-29 17:27:26
83
原创 0003.C/C++学习笔记3
角度1:站在C/C++编译器的角度,指针变量就是一个变量,不管是1个* 还是8个* ,只会分配4个字节的内存。没有内存块首地址,就没有指针。角度2:当我们程序员要使用指针所指向的内存空间的时候,我们关心,这个内存块是一维的,还是二维的。4、用n级指针(形参)去改变了n-1级指针(实参)的值 (通过*p去间接修改了实参的在值)1、用1级指针(形参)去改变了0级指针(实参)的值 (通过*p去间接修改了实参的在值)2、用2级指针(形参)去改变了1级指针(实参)的值 (通过*p去间接修改了实参的在值)
2025-10-20 18:49:08
1528
原创 0016.IMX6驱动调试过程汇总
4.echo 500000 >/sys/class/pwm/pwmchip3/pwm0/duty_cycle /*设置一个周期中的”ON”时间,单位为ns,即占空比=duty_cycle/period=50% */3.echo 1000000 >/sys/class/pwm/pwmchip3/pwm0/period /*设置PWM4一个周期的持续时间,单位为ns,即1K Hz */3、使用命令:fdisk /dev/sdc,一直输入d,直到删除所有分区。
2025-10-11 10:52:08
100
原创 0006.C#学习笔记3-- HTML和CSS
能让网页制作者有效的定制、改善网页效果、是对HTML的补充,实现了网页内容和页面效果的彻底分离,解决了网页设计师无法很好控制网页显示效果的问题。target: 打开新网页的方式,blank表示打开一个新网页,self表示在当前页面进行跳转。HTML(超文本标记语言):在HTML当中存在着大量的标签,我们用HTML提供的标签,将要显示在网页中的内容包含起来,就构成了网页。对同一个HTML元素的各种状态和其所包括的部分内容的定义方式。P:first-line - 段落中的第一行文本。实现页面内部的跳转;
2025-10-10 19:00:55
123
原创 0004.C#学习笔记2
WinForms开发中直接跨线程访问UI控件会抛出异常,这是因为WinForms的UI控件不是线程安全的,它们都继承自 Control 类,而这个类有一个基本的线程安全要求:必须通过创建它的线程(即UI主线程)来修改其属性或调用其方法。2、抽象类:当父类中的方法不知道如何去实现的时候,可以考虑将父类写成抽象类,使用关键字abstract修饰,方法写成抽象方法,也使用关键字abstract修饰。Lamda表达式:是匿名函数的现代化实现,是在现代C#中实现委托所代表的功能的首选、最简洁的方式。
2025-10-09 18:05:49
77
原创 0015.移植ethtool到imx6文件系统
背景:由于网络问题,需要使用ethtool工具配置imx6的网络,而当前的文件系统中没有ethtool工具,需要交叉编译ethtool工具,并移植到imx6文件系统。选择libmnl-1.0.4.tar.bz2,并进行解压:tar -xjvf libmnl-1.0.4.tar.bz2。由于当前是linux-4.1的版本,不选择太新的版本,最终选择ethtool-5.10.tar.gz版本。4、配置过程中出现如下问题,说明ethtool需要libmnl包。
2025-09-16 14:31:13
100
原创 0005.PDFsharp环境搭建、示例代码、以及遇到的问题
1、环境搭建:若使用PDFsharp功能,只需要使用NuGet安装PDFsharp-MigraDoc-GDI即可,不用单独再安装PDFsharp,若两个都安装了,反而会有问题。4、遇到的问题:不等间隔字体导致的排版问题。、通过画布,划线、编写文本、输出图片。横线 使用画笔 + 位置信息。、创建新的PDF文档。
2025-09-10 15:09:34
89
原创 0002.C/C++学习笔记2
7、被调函数中分配的内存(堆、全局区)可以在主调函数中使用,但是临时区(栈)上分配的内存不可以被主调函数使用。P是谁的地址,*p就去间接的修改谁的值。3、栈:就是临时空间,以函数为单位,当函数运行完毕后,该函数中的局部变量占用的栈空间将会被释放掉。角度2:当我们程序员要使用指针所指向的内存空间的时候,我们关心,这个内存块是一维的,还是二维的。6、主调函数中分配的内存(栈、堆、全局区)可以在被调函数里面使用(通过使用指针做函数参数)。2、main函数中的变量(分配的内存)可以在fun1中使用。
2025-09-04 11:22:06
1116
原创 0003.C#学习笔记1
但是,子类会默认的调用父类无参数的构造函数, 创建父类对象,让子类可以使用父类中的成员。所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了, 子类就调用不到了,所以子类会报错。out参数:如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可以考虑使用out参数。我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员, 单独的封装到一个类中,作为这些类的父类。
2025-08-25 14:20:27
79
原创 0013.开启windows10下的Windows 照片查看器
2、找到如下路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations。使用windows10操作系统,截图和草图、画图3D这两个工具都有如下问题,每次查看同一个文件夹下的多个图片时,不能直接切换到上一张、下一张图片,而windows7是具有该功能的。4、关闭“注册表编辑器”,便添加成功了,不需要重启电脑。3、创建如下的图片后缀类型,并填写数值数据(V)
2025-08-25 11:14:29
682
原创 0001.C/C++学习笔记1
在getStr1函数被调用时,在栈上给p分配内存,在全局区给“abcd1”分配内存,在getStr1调用结束后,栈上给p分配的内存被自动回收,全局区的内存不会被自动回收。当一维数组当做函数参数时退化为一级指针,一维数组做函数形参的时候,如果在形参中定义int a[10]语句,C/C++编译器会做优化,技术推演如下:int a[10]---->int a[]---->int *a。1、由于编译器的优化选项的配置,在全局区只有一份“abcd1”,因此函数getStr1和getStr2返回的值是一样的。
2025-08-20 19:00:52
1586
原创 0002.Visual Studio打开C#工程图标带蓝色感叹号问题解决
解决方案:修改整个工程文件的属性,将整个文件夹包括子文件夹的属性去掉“只读”,重新打开工程便可解决该问题。
2025-08-15 11:40:40
100
原创 0001.C#开发环境搭建
打开提取后的文件路径,双击DXSETUP.exe进行安装:DirectX 9.0c会被自动安装并指定路径。一、安装Visual Studio 2022 community。2、双击运行“VisualStudioSetup.exe”1、下载:VisualStudioSetup.exe。二、安装DirectX 9.0c。2、安装DirectX 9.0c。
2025-08-12 10:17:46
131
原创 0012.将C盘的Foxmail 7.2的Storage迁移到D盘
5、验证Foxmail 7.2可以正常工作后,再次推出正在运行的Foxmail 7.2,删除C:\Develop\Foxmail 7.2目录下的Storage文件后,再次重新启动Foxmail 7.2。在不卸载重装Foxmail 7.2的情况下,只是将Foxmail 7.2的Storage迁移到D盘,节省C盘的空间。2、将C:\Develop\Foxmail 7.2目录下的Storage文件夹复制到D:\Develop\Foxmail 7.2目录下。修改前的内容:Storage\xxx\。
2025-08-12 09:51:21
1155
原创 0014.搭建linux-0.12内核实验环境
rwx--xrwx 1 root root 48304 9月 22 2004 shoelace*-rw----rw- 1 root root 125440 4月 28 2005 Image。drwxr-xrwx 2 root root 880 3月 22 2004 bin/drwxr-xrwx 2 root root 336 3月 22 2004 dev/drwxr-xr-x 10 root root 192 4月 28 2005 ./
2025-08-04 10:01:27
56
原创 0008.STM32F030 HAL库中定时器使用注意事项
使用__HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__)无法将定时器中的值从新初始化,是由于APRE被置1了。而且在STM32Cube_FW_F0_V1.11.0库中并没有直接操作APRE的函数。解决方法:采用HAL_TIM_Base_Init函数对定时器从新初始化可以达到上述效果。但是需要使用__HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE)清除中断。
2025-07-31 17:07:01
63
原创 0007.STM32的备份寄存器和备份SRAM的区别
2、不同点:备份寄存器是4个字节一起读写的,不能使用memcpy进行拷贝读写,memcpy是对单字节进行操作的。备份SRAM和SRAM一样,都是可以单字节读写的,因此可以使用memcpy进行操作。3、A项目中使用的STM32F429VIT6是带备份寄存器和备份SRAM的,而B项目使用的STM32L476VGT6是带备份寄存器,但是无备份SRAM。1、相同点:两者都是掉电不丢失。
2025-07-31 17:06:06
121
原创 0006.STM32项目串口接收死机问题
需要将串口的Rx、Tx上接上拉电阻,或则软件配置为上拉模式。同样在串口线上串联33Ω左右电阻,匹配信号,保证波形正常。I2C/SPI/LTDC/SDRAM等信号类似,黑要考虑匹配电阻大小,并同时关注RE的问题。STM32调试串口接收引脚悬空--FE帧错误--TxXferCount置0--TxXferCount减1后为65535--内存溢出—HardFault。参考文章: https://blog.youkuaiyun.com/qq_34672688/article/details/117478889。
2025-07-31 17:04:49
213
原创 0005.STM32项目RGB接口的LCD显示屏随机出现短线
解决方案:最终确定是由于配置的LTDC的GPIO口的speed为too high导致的。将所有的LTDC的GPIO的speed配置为low便可解决该问题。
2025-07-31 17:03:51
63
原创 0004.STM32项目外部32.768kHz晶振不起振导致进入Error_Handler
现象:由于外部32.768kHz晶振不起振,导致程序SystemClock_Config初始化时异常,进入到Error_Handler中,通过Stlink工具在线仿真调试发现该问题。
2025-07-31 17:02:36
252
原创 0003.STM32项目确定配置的时钟是否准确
STM32CubeMX中通过配置RCC,选中Master clock output功能,通过MCO(PA8)脚,使用示波器检测该引脚输出的频率。用此方法可以判断配置的时钟是否准确。
2025-07-31 17:01:31
76
原创 0002.STM32项目外部32.768kHz晶振不起振
1、分析:与外部晶振相关的信息如下图所示,资料来源于AN2867文档。1、需要根据晶振的官方推荐,使用推荐的匹配电容。然后通过调整gm的值,保证计算gainmargin,保证其必须大于5。:每次修改完gm的值后,需要重新给芯片上电,然后再用示波器测量。如果没有重新上电,修改后的配置不起作用。4、如果调大gm的值后,晶振还是无法起振,需要修改匹配电容的值。2、如何修改gm的值,可以通过CubeMX修改gm的值。现象:使用示波器测量外部晶振管脚,没有波形输出。
2025-07-31 17:00:41
404
原创 0001.STM32项目的RTC误差很大的原因
原因:1、主要原因:使用了内部的LSI晶振,却使用了外部LSE晶振的分配。现象如下图所示:经过一夜的测试,发现时间慢了20分钟左右。2、次要原因:使用了内部的LSI晶振。
2025-07-31 16:59:16
182
原创 0009.不打开STM32CubeIDE,使用命令行和makefile的方式进行代码编译STM32
由于搭建jenkins系统,在jenkins上使用命令行的方式编译STM32:1、通过makefile中命令的方式找到make和arm-none-eabi-gcc所在的路径:2、将找到的路径临时添加到环境变量中:
2025-07-30 15:47:27
137
原创 0013.树莓派常用命令汇总
例如,假设你已经发布了程序并将其放在 /home/pi/myapp 目录下。参考:https://blog.youkuaiyun.com/weixin_45646893/article/details/119798141。在 /etc/systemd/system/ 目录下创建一个新的服务文件。通过命令获得温度值:cat /sys/bus/w1/devices/28-13b74b1f64ff/temperature。
2025-07-30 14:21:14
148
原创 0012.在windows下搭建.net.core开发环境、在linux下搭建.net.core运行环境
在windows上安装下载后的SDK: dotnet-sdk-3.1.109-win-x64.exe。2、下载后的压缩包:dotnet-runtime-3.1.9-linux-arm.tar.gz。1、在windows上先下载安装visual studio 2019的版本。默认安装在如下路径:C:\Program Files\dotnet。二、使用visual studio 2019开发.net应用程序。三、在嵌入式linux开发板上搭建.net的运行环境。
2025-07-30 13:47:26
69
原创 0011.imx6ull(ZLG IoT-6G2C-L)通过SD卡对256M的nand进行分区升级
2、修改内核设备树文件的方法:修改A7-linux-src/arch/arm/boot/dts/imx6g2c-256m.dts文件,一、配置uboot下环境变量的方法,加载tftp下的zImage、imx6g2c-256m.dtb,加载nfs 文件系统。二、对256M的nand分区的方法有两种:修改uboot中的mtdparts或者修改内核设备树文件。可以通过lsblk命令查看是否挂在成功:出现sdb代表挂载成功。4、对SD卡进行烧录的脚本:mk-sdcard.sh。
2025-07-22 18:49:13
86
原创 0009.Yocto编译过程中llvm报错解决
1、Yocto编译过程中出现如下错误:若还出现这个问题:则不要clean,直接再执行一次如下命令:2、Yocto编译过程中rust-llvm报错解决:不要clean,直接再执行一次如下命令:
2025-07-21 18:41:16
60
原创 0008.VirtualBox中ubuntu压缩磁盘以回收未使用的空间
注意:可以反复执行上述命令,但要注意ubuntu的剩余空间,不要一次性等待这个“sudo dd if=/dev/zero of=/empty”命令执行完成,中间可以使用Ctrl+c结束执行,以防剩余空间使用超出。步骤2:然后虚拟机关机,在windows下进行操作,在VirtualBox的安装目录下找到VBoxManage.exe。等待执行完成后,然后反复的执行步骤1和步骤2,直到无法压缩为止。
2025-07-21 18:37:56
156
原创 0007.通过yocto裁剪busybox中的udhcpd和udhcpc
此命令会在build目录下生成文件:yocto/poky/build/tmp/work/core2-64-poky-linux/busybox/1.36.1/fragment.cfg。创建bbapend文件并添加以下两行的内容到该bbapend文件:gedit recipes-core/busybox/busybox_%.bbapend。6、重新启动qemux系统(注意:以命令行的方式启动,带界面端的启动太卡了):runqemu qemux86-64 nographic。
2025-07-17 17:08:21
83
原创 0006.virtualbox中虚拟机ubuntu使用过程中的问题
2、如何在当前的terminal下启动一个新的同路径下的terminal,直接在当前的terminal界面下右击选择“New Window”即可:(注意:这种方法创建的新的terminal,若旧的terminal中有一些临时生效的环境变量,则在新的terminal中没有这些环境变量)3、如何隐藏显示terminal下的当前的用户名和用户组:(注意:只是当前terminal下临时生效的)
2025-07-17 13:23:44
77
原创 0005.通过linux下shell脚本:升级linux系统中的kernel和rootfs
在rootfs basic中,需要执行开机自动升级脚本,需要在etc/init.d/下增加文件S99update,S99update的内容如下,此脚本保证rootfs basic文件系统开机后自动执行sd-update.sh升级脚本。sd-update.sh脚本调用升级包中的update.sh脚本,在update.sh中对需要升级的包进行md5校验,只有校验通过后才进行升级;在rootfs basic的文件系统初始化的过程中,自动挂在kernel和rootfs所在的分区,位于fstab文件中;
2025-07-11 18:48:59
63
原创 0004.在SD卡上制作linux系统的脚本
e、在sdk文件夹下执行mk-sdcard.sh脚本,并等待脚本执行成功。1、通过linux下shell脚本:在SD卡上制作linux系统。g、然后会在windows下出现如下信息,全部选择“取消”
2025-07-11 18:43:25
43
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅