- 博客(272)
- 收藏
- 关注
原创 编写最简单的BootLoader
1、最基本的功能1、最基本的功能启动其他程序:上电后,BootLoader先运行。他的目的是启动APP。2、Flash划分bootloader和app都烧写到Flash上,BootLoader直接跳到APP位置即可。(1)所用芯片Flash的起始地址为0x8000000,大小为0x100000;(2)BootLoader起始地址0x8000000,大小0x40000;即0x8000000 — 0x803FFFF。(3)APP起始地址,大小0x60000;
2025-11-13 10:44:52
576
原创 异常处理深入分析_保存现场
在FIQ模式下,它既然能使用自己的R8-R12,SP,LR,自然不需要去保存被中断的程序的"R8-R12,SP,LR"了。上图中深色的寄存器,表示该模式下的"Banked"寄存器,比如SPSR寄存器,在很多模式下都有自己的、单独的寄存器。比如IRQ模式下访问SPSR时,访问到的是IRQ模式下自己的SPSR_irq,别的模式下无法访问SPSR_irq。(3)比较值得关注的是FIQ模式,名为"快中断",它有很多"Banked"寄存器:R8-R12,SP,LR。的程序的地址就行了吗?
2025-11-07 10:46:46
837
原创 gcc编译过程详解
预处理:C/C++源文件中,以“#”开头的命令被称为预处理命令,如包含命令“#include”、宏定义命令“#define”、条件编译命令“#if”、“#ifdef”等。预处理就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西输出到一个“.i”文件中等待进一步处理。(2)上面一连串命令比较麻烦,gcc会对.c文件默认进行预处理操作,使用-c再来指明了编译、汇编,从而得到.o文件, 再将.o文件进行链接,得到可执行应用程序。(1)库文件在哪里?
2025-11-04 09:56:50
719
原创 break 和 continue的区别
2、continue:跳过本次循环剩余部分,继续下一次循环。1、break:跳出整个循环。1、break:跳出整个循环。
2025-11-03 11:32:38
223
原创 KeilIDE背后的命令
(1)IDE指集成开发环境(Integrated Development Environment)。我们开发STM32F103等单片机程序时使用是Keil就是一种IDE。
2025-11-03 11:05:28
881
原创 UART编程
PA9有多种功能:PA9/TIM1_CH2/I2C3_SMBA/U1_TX/DCMI_D0/OTG_FS_VBUS。PA10也有多种功能:PA10/TIM1_CH3/U1_RX/OTG_FS_ID/DCMI_D1。串口的TX和RX引脚使用了GPIOA,所以需要使能GPIOA模块。肯定有一个数据寄存器,程序读取这个寄存器,就可以获得先前接收到的数据。(1)选择串口1:TX对应PA9引脚;(3)数据寄存器:写、读这个寄存器,就可发送、读取串口数据。发送状态:判断数据是否发送出去?(4)停止位:配置1个停止为。
2025-11-02 22:46:24
413
原创 串口硬件介绍
要发送数据时,CPU控制内存将要发送的数据通过FIFO传给UART单位,UART里面的移位器,依次将数据发送出去,在发送完成后产生中断提醒CPU传输完成。(2)ARM芯片上得串口都是TTL电平的,通过板子上或者外接的电平转换芯片,转成RS232接口,连接到电脑的RS232串口上,实现两者的数据传输。(4)校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。(4)不同的电平接口,ARM芯片的串口编程都是一样的。(5)停止位:它是一个字符数据的结束标志。
2025-11-02 10:56:39
330
原创 C与汇编深入分析
作用:芯片上电后,CPU 会自动把这里的值加载到 MSP 寄存器(R13寄存器)。作用:这个段通常用来存放中断向量表(Vector Table),它会被链接器放到 Flash 的起始地址(0x00000000)。解释:告诉汇编器接下来的代码是 THUMB 指令集(16 位压缩指令集),而不是 ARM 指令集(32 位)。跳转:CPU从0x08000004得到地址值,根据它的BIT0切换为ARM状态或Thumb状态,然后跳转。r4-r11:函数可能被使用,所以在函数的入口保存它们,在函数的出口恢复它们。
2025-11-01 16:36:42
780
原创 进制的介绍
(1)十进制的表示:直接用生活中的数表示即可(2)八进制的表示:数值前加一个0表示八进制(3)十六进制的表示:数值前加一个0x表示十六进制(4)二进制的表示:C程序中不能识别二进制,现实中一般用0b表示二进制。
2025-10-31 17:52:19
268
原创 LVGL的介绍
(1)demos文件夹:LVGL官方演示代码(2)docs文件夹:LVGL文献,解析部件的使用方法6、学习LVGL之前建议掌握的知识。
2025-10-31 14:49:48
535
串口/网络数据调试助手
2024-05-27
51单片机辅助开发工具:单片机小精灵
2022-08-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅