自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 串口通信02_加入协议解析

将新数据拷贝进数据包中,更新数据包实际长度,并判断更新buf_max_len,buf_max_len用于判断最大使用数量。找不到:index自增,跳进下一次for循环,向后一个字节,如此循环,直到找到或退出。buf_max_len:实际使用到的最大容量,用于调试时调整buf_size大小。buf_err_cnt:当存储的数据大小超出容量时会自增,用于错误计数。校验不通过:index自增,跳进下一次for循环,重新上面的步骤。找不到:index自增,跳进下一次for循环,重新上面的步骤。

2025-02-28 10:01:27 602

原创 嵌入式基础_10_RT_Thread_Nano移植

准备工作:1、一份F407的keil串口工程https://gitee.com/light_lzm/stm32_-study/tree/master/04_%E6%90%AD%E5%BB%BA%E5%B7%A5%E7%A8%8B%E6%A8%A1%E6%9D%BF/01_%E6%90%AD%E5%BB%BA%E8%A3%B8%E6%9C%BA%E5%B7%A5%E7%A8%8Bhttps://gitee.com/light_lzm/stm32_-study/tree/master/04_%E6%90%AD%

2025-02-25 19:12:19 609

原创 嵌入式基础_09_新建裸机工程模板

1、stm32fxxx.h文件中包含两个宏定义a、具体芯片类型宏,用于启用对应芯片的中断号b、外设头文件宏,用于启用stm32fxxx_conf.h2、内核寄存器文件,M3内核只需要core_cm3.c/h两个文件,M4内核需要core_cm4.h、core_cmFunc.h、core_cmInstr.h、core_cmSimd.h四个文件3、stm32fxxx_conf.h文件存放所有外设头文件4、如果将其从标准库换为HAL,则只需要将标准库所需文件换为HAL库即可。

2025-02-25 18:16:03 818

原创 嵌入式基础_08_Map文件分析

一般,代码段和代码的可执行域放在一起,所以这部分一般不需要拷贝,只需要将RW数据从代码段拷贝到数据的执行域即RAM中,由于RW数据与ZI数据都放在同一块RAM区,一般会选择打包处理,前面放RW,紧接着放ZI。从上图可以看到RW数据确实是到0x190结束的,多余的字节是初始化为0的部分,所以RAM的执行域是RW数据+ZI数据。

2025-02-22 21:03:54 678

原创 串口通信02_RTOS中DMA串口传输具体配置

4个模块。

2025-02-17 21:20:21 1043

原创 串口通信02_RTOS中DMA串口传输概述

严格说NVIC不属于外设,属于内核,这里只是将使用到的模块罗列出来。

2025-02-17 13:47:03 264

原创 串口通信01_裸机DMA双缓存+环形缓冲区具体配置

4个模块。

2025-02-14 15:43:45 777

原创 串口通信01_裸机DMA双缓存+环形缓冲区概述

严格说NVIC不属于外设,属于内核,这里只是将使用到的模块罗列出来。

2025-02-13 20:38:03 505

原创 嵌入式基础_07_STM32启动文件

复位中断服务程序会调用SystemInit函数配置时钟

2025-02-10 17:41:22 361 2

原创 嵌入式基础_06_Cotex_M内核基础介绍

我们常用的M3、M4内核的芯片采用的都是哈佛结构。内核结构分为两种:冯诺依曼结构与哈佛结构。

2025-02-09 21:31:17 865

原创 单片机复位电路

复位电平:高电平按下瞬间电平变化:按下:0V缓慢升高至5V松开:5V缓慢降低至0V。

2025-02-06 15:17:31 153

原创 嵌入式基础_05_结构体、联合体、位域与枚举

枚举:用于定义一组常量值的数据类型,常用于定义状态、选项或固定集合的值,使代码具有更好的可读性。字节不对齐:char类型的name也会被分配1字节的内存空间,后面不会留出空位。联合体:允许在相同的内存位置存储不同类型的数据,大小由其最大成员大小决定。字节对齐:char类型的name也会被分配4字节的内存空间。用于错误标志会比较方便,每个错误使用1位来表示。通常将一些状态使用枚举,常用上面的第一种。方式二:不声明,直接实例化匿名对象。方式一:先声明,再实例化对象。

2025-01-21 17:22:21 303

原创 嵌入式基础_04_拷贝一个函数

函数是一系列汇编指令,函数地址是这些指令的首地址。对照变量理解,一个char类型变量,访问它时会自动读取1字节数据。一个int类型的变量,访问它时会自动读取4字节数据,那么函数就是通过函数名,自动访问一块指令,长度大小和函数本身内容有关。

2025-01-20 13:53:53 593

原创 零碎常用知识点

fromelf--text-a-c--output=led.disObjects\led_c.axf生成反汇编文件依赖文件:led_c.axf,每次使用修改依赖文件名称。fromelf--bin--output=led.binObjects\led_c.axf/另一种:fromelf.exe--bin-o$L@L.bin#L。gitadd.上传缓存区,先打包再发送。gitcommit-m"""描述",添加说明。

2025-01-18 20:02:28 147

原创 嵌入式基础_03_栈的使用

这是因为在STM32中可以使用THUMB指令集、THUMB-2指令集和ARM指令集,所以LR寄存器存储的32位地址中bit0用于指示使用的指令集,bit0为1使用THUMB指令集,bit0为0使用ARM指令集,所以我们这里bit0被置1就是因为使用的是THUMB指令集。执行入栈操作,PUSH入栈三个寄存器,高地址放大编号寄存器,此时栈顶为0x20000660,向下入栈三个寄存器,执行后栈地址SP变为0x20000654。1、上电栈顶地址为0x20000660与前面计算一致,即SP的初始位置。

2025-01-18 19:34:57 800

原创 嵌入式基础_02_栈与堆

整体概述堆栈空间全部来自于RAM区,堆是由程序员分配与释放的空间,栈先入后出用于存储函数调用的返回地址、函数的参数、局部变量等。

2025-01-17 18:25:33 433

原创 嵌入式基础_01_变量与地址

综上,我们申请变量时就能够知道运行时变量的位置,对于较大的只读数据可以使用const修饰放入ROM中,比如显示器的字模数据。

2025-01-16 09:07:55 206

空空如也

空空如也

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

TA关注的人

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