自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 arm linux 移植 udhcp 与 使用

在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址。udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDHCPc)。前提:在KERNEL中需要将 Packet socket(CONFIG_PACKET)和IP: DHCP support(CONFIG_IP_PNP_DHCP)编译进内核或编译成模块。

2026-08-28 15:00:18 209

原创 一个tftp服务器

tftp -g -r a.txt 192.168.1.50 #从服务器get a.txt文件。

2026-08-28 14:42:42 170

原创 V821 AvaotaF1 Pico _ 全志Vision 如何运行smart IPC

1. 编译内核-加入ftp功能2. 加入smart IPC保存,退出。make -j2等待 SDK 编译完成,会在out目录下生成固件.将固件拷贝出来,准备烧录。

2026-08-15 09:55:47 224

原创 esp32 IDF使用方法

esptool.py --port COM3 --baud 115200 write_flash -z 0x0 TFCAM.bin #下载。idf.py set-target esp32s3 #配置环境。idf.py build #编译。flash #下载。

2026-08-09 14:38:35 222

原创 虚拟机配置NFS服务器,开发板可直接运行程序

1. ubuntu虚拟机端安装nfs服务器。2.ubuntu虚拟机开启共享文件夹。3.ubuntu虚拟机配置共享权限。4.ubuntu虚拟机查看共享结果。

2026-08-05 14:25:39 189

原创 vscode远程访问ubuntu虚拟机写代码(ssh远程控制)

2.vscode安装Remote - SSH。1.ubuntu需要安装并打开ssh。

2026-08-02 16:06:11 46

原创 如何创建esp32s3 WROOM -1 N16R8工程

如何创建esp32s3 WROOM -1 N16R8工程

2026-07-08 22:22:58 269

原创 如何统计代码行数

使用vscode的 VS Code Counter 插件。

2026-07-06 09:14:04 34

原创 野火串口工具

单品机调试 必然用到的串口调试工具,使用野火的串口工具支持utf-8编码格式,可以显示中文。

2026-05-01 09:35:01 268

原创 使用imu控制上位机实体的一个例子

2026-04-30 14:13:04 36

原创 C语言弱定义

一般用在库文件中,库文件中定义一个弱函数,用户可以重写这个弱函数,比如嵌入式C库中的fputc函数,定义为弱函数,用户可以在自己的工程中重写这个函数,把打印输出到串口。1.弱函数不能在同一个文件中出现(这样也没意义);2.一般用在嵌入式编译其中,桌面编译器没有这种定义。// 默认空实现 / 或者半主机调试。

2026-04-23 11:59:59 31

原创 定义自己的调试函数

/自己的串口打印函数。有些情况,系统可能关闭了fputc函数,导致printf不起作用,那如何定义自己的“printf”呢?// 自己的打印函数(替代 printf)

2026-04-23 11:33:49 27

原创 软件使用教程

编译ESP32 的 IDF。

2026-04-22 16:57:27 34

原创 如何转换 c语言代码的编码格式

我们经常接触到 不同项目的C语言代码,然而编码格式可能大不相同,有的是GB/utf-8/windows等。我写了一个python 转换格式的代码。统一转化为utf-8。

2026-04-20 10:00:30 29

原创 STM32F103C8T6 使用IIC,写oled屏幕

引脚PB7 ------>SDA。引脚PB6 ----> SCL。

2026-04-19 17:09:59 23

原创 stm32编译完成后 查看一下空间占用情况

原作者:https://gitee.com/DinoHaw/keil-build-viewer

2026-04-16 12:30:11 34

原创 使用vscode查看c语言工程代码

/ 全局搜索:只包含 .c .h,排除所有其他文件。// 只隐藏非 .c/.h 的文件(文件夹完全保留)这样可以在vscode中只显示 c h文件。

2026-04-16 11:15:39 106

原创 stm32f103c8t6使用PWM控制舵机

通常需要 20ms (也就是 50Hz) 的总周期。这是它的“心跳”,如果心跳太快或太慢,舵机可能不工作或乱抖。:在这个 20ms 的周期里,高电平持续多久,决定了舵机转到哪个角度。外部 MCU(如 Arduino/STM32)输出固定宽度的 PWM。上面这些参数直接设置为固定的即可,周期正好是20ms。// 舵机 PWM 标准:20ms 周期。只要你给它一个固定宽度的脉冲,它就会转到。实际角度 < 目标角度 → 电机正转。实际角度 > 目标角度 → 电机反转。:实时检测当前输出轴角度。

2026-04-15 10:36:52 256

原创 stm32f103c8t6呼吸灯

江科大的例子。

2026-03-10 20:58:56 33

原创 stm32f103c8t6 定时器中断

/定时器3的频率为72M/7200=10K,自动重装载为5000-1,那么定时器周期就是500ms。//定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.//Ft=定时器工作频率,单位:Mhz。//arr:自动重装值。//psc:时钟预分频数。

2026-02-16 17:31:26 57

原创 使用stm32CubeProgrammer连续升级程序

目前为了批量升级方便,初步整理了一个快速升级stm32程序的方法(虽然还不是很快,但作为第一版记录一下)1. 安装SetupSTM32CubeProgrammer-1.3.0.exe。3.点击 连刷.bat 开始自动刷机。2.根据自己的环境配置路径。

2026-02-06 15:16:12 55

原创 stm32f103c8t6的栈底、栈大小、栈顶怎么查看

0x20001ae0(栈底) +0x800(栈大小 ) = 0x2002ee0(栈顶)RAM存放 .data + ZI + 栈 + 堆。bin文件中的前四个字节就是栈顶。最后一行就是分配的栈信息。查看.map文件中的。

2026-01-23 22:08:49 152

原创 stm32f103c8t6 bin文件中被优化的数据

但没有使用,会在.map文件的Removing Unused input sections from the image.假如有一些全局变量没有使用,keil编译过程中会直接剔除他们。

2026-01-21 16:08:03 151

原创 stm32f103c8t6 bin文件 flash数据布局

这个还是从.map文件中查看。找到 Execution Region ER_IROM1可以看到0x8000000处是存放堆栈指针和异常向量表。后续一次是代码段,最后的data其实不是数据段,而是数据段从flash拷贝到ram时的拷贝规则。解释: Execution Region ER_IROM1 这代表这个flash内存布局仅仅列出了可执行的flash文件(这个是我猜测的,还不太确定)。数据段可定在flash中存放着,但Execution Region ER_IROM1 中并未给出。但在 Execut

2026-01-21 16:00:22 233

原创 stm32f103c8t6 bin文件中前4个字节是什么?

是栈顶地址!系统上电后会先读这个地址给MSP寄存器。

2026-01-20 19:07:40 273

原创 stm32f103c8t6 bin文件内存布局

stm32f103c8t6 bin文件内存布局可以从.sct文件中查看。

2026-01-20 18:53:52 174

原创 stm32f103c8t6 裸机延时函数

delay_Config(72);delay_ms(1000);//不能超过 1864ms

2026-01-17 07:40:59 214

原创 stm32f103c8t6 DWT 时间戳(用来计算软件代码执行时间)

以上代码是在72M时钟下计算的,最长统计时长约为60s。时钟频率 36MHz:最长计时 ≈ 120s。时钟频率 48MHz:最长计时 ≈ 90s。时钟频率 64MHz:最长计时 ≈ 67s。

2026-01-16 14:03:47 146

原创 一个栈溢出的例子

任务栈大小一开始设为80,DEBUG_BUFFER_SIZE为1024,当没有这个memset时,系统正常运行,当加上这个memset后,把整个栈给清零了。本来应该是串口收到数据后才打印,结果变为收到数据(仅仅发了一次)后便疯狂打印。这是因为清0了太多数据,导致破坏了OSQPend的阻塞。这是一个串口接收任务。

2026-01-16 08:54:01 168

原创 stm32f103c8t6串口清中断

代码表述上可以写成一样的格式,因为USART_GetITStatus函数内部读取了状态寄存器SR。接收完成中断(IDLE ): 读状态寄存器(SR) + 读数据寄存器(DR)。溢出中断(ORE):读状态寄存器(SR) + 读数据寄存器(DR)。接收中断(RXNE):读数据(ReceiveData)就能清。

2026-01-15 14:13:54 156

原创 串口接收流程

以上中断函数,串口收到‘A’后,进入接收中断,之后打印111111,打印过程中后续数据B到来并放到DR寄存器后,一直没有读取(CPU正在忙于打印11111),导致后续的CDE无法被放入DR,产生数据溢出中断,最后又产生接收完成中断。所以后续会打印222222.假如串口对端在发送ABCDE。

2026-01-15 12:31:46 191

原创 GD32F303RCT6 UCOS 实现串口收发框架

基于GD32F303RCT6 UCOS 实现串口收发框架,并添加了 事件、消息队列的使用示例。

2026-01-11 09:55:38 95

原创 stm32f103c8t6 呼吸灯

开启pwm后cnt开始向上计数,小于500时,输出有效电平,大于500时输出无效电平,最终涨到1000时,归0重新计数。设置 TIM_SetCompare2(TIM2, 500);即比较寄存器值为500,代表计数到500次后翻转电平;比如:stm32f103c8t6单片机 主频是72M,设置72分频,频率变为1M,每1us跳一下。另外,TIM_SetAutoreload(TIM2, 999);这个函数可以重新设置ARR寄存器。设置计数周期 (ARR) 设为 999 (代表每个周期跳动 1000 次);

2026-01-09 11:14:13 193

原创 C语言 1字节对齐

收到数据时,直接强制转换为目的数据类型,这样比采用指针移动复制拷贝转化数据类型的方式好太多了。这样节省传输数据量。

2026-01-09 10:51:00 267

原创 C语言字符串拼接

/多个相邻的字符串字面量(用双引号包裹),仅用空白字符(空格、换行、制表符)分隔,编译器就会自动拼接,和是否用宏无关。

2026-01-08 12:38:28 131

原创 C语言调试语句

【代码】C语言调试语句。

2026-01-08 12:34:38 114

原创 逻辑分析仪抓取串口数据

同时调试串口通信的上下位机时,为了避免上位机和下位机人员相互扯皮,上位机说我发数据了,但是下位机没回复数据。下位机人员又说我没收到上位机的数据!还有一点,如果想看看通信双方的时序,比如发送数据后多少ms收到数据,逻辑分析仪便派上用场了。这时候有逻辑分析仪,抓取一下数据就一目了然了。这里把两根线两两连在一起了,是为了同时连接逻辑分析仪。第一步:先用串口连一下:收、发、地。设置逻辑分析仪,选择uart协议。这样连线完成,就可以抓数据了。点击run 就可以抓取数据了。下面再连上逻辑分析仪。

2026-01-07 15:25:25 286

原创 C语言 位操作

多用在传输协议中,为了减少传输字节数,用一个字节表示多个 标志位。代码中FlagsReg仅仅占用1个字节便可以表示3个数。位操作:直接操作某个比特位。主要来节省存储空间。

2026-01-06 19:17:52 121

原创 stm32f103c8t6 FLASH被锁定了怎么办?

2. flash被写锁定了(执行过FLASH_EnableWriteProtection(某几个页));),如果下载需要用到“那几个页”导致无法下载程序;1. flash被读锁定了(执行过FLASH_ReadOutProtection(ENABLE);),导致无法下载程序;这样就可以连上了,然后擦除整个芯片(点击橡皮擦)。3.后者想查看一下flash中存储的内容。去掉写锁定 apply即可。

2026-01-06 10:37:32 267

原创 获取stm32f103c8t6的芯片ID

在 STM32F103 系列中,全球唯一 ID(96位,即12字节)存储在系统存储区中。这个 ID 在芯片出厂时烧录,对于 STM32F103C8T6,UID 的基地址是 0x1FFFF7E8。

2026-01-05 09:08:28 505

一个tftp服务器,好用

windows tftp服务器

2026-08-28

串口工具,可以使用utf-8 keil的野火

串口工具,可以使用utf-8 keil的野火

2026-05-01

使用imu控制上位机实体的一个例子

使用imu控制上位机实体的一个例子

2026-04-30

如何转换 c语言代码的编码格式

如何转换 c语言代码的编码格式

2026-04-20

STM32F103C8T6 使用IIC,写oled屏幕

STM32F103C8T6 使用IIC,写oled屏幕

2026-04-19

stm32编译完成后 查看一下空间占用情况

stm32编译完成后 查看一下空间占用情况

2026-04-16

stm32f103c8t6使用PWM控制舵机

stm32f103c8t6使用PWM控制舵机

2026-04-15

stm32f103c8t6呼吸灯

stm32f103c8t6呼吸灯

2026-03-10

stm32f103c8t6 呼吸灯

stm32f103c8t6 实现呼吸灯

2026-02-23

使用stm32CubeProgrammer连续升级程序

使用stm32CubeProgrammer连续升级程序

2026-02-07

使用stm32CubeProgrammer连续升级程序

使用stm32CubeProgrammer连续升级程序

2026-02-06

GD32F303RCT6 UCOS 实现串口收发框架

GD32F303RCT6 UCOS 实现串口收发框架

2026-01-11

stm32f103c8t6 串口收发框架

stm32f103c8t6 串口收发驱动

2026-01-11

stm32f103c8t6 呼吸灯

stm32f103c8t6 实现呼吸灯

2026-01-09

stm32f103c8t6 串口收发框架

stm32f103c8t6 串口收发驱动

2026-01-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除