自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Cortex-M3/M4权威指南:第十章OS支持特性

Cortex-M处理器在设计之初,就考虑了对OS的支持。

2026-07-28 09:20:48 199

原创 ESP32-IDF修改工程名

2.修改CmakeList.txt文件。3.删除build文件夹。

2026-07-27 11:29:53 26

原创 Cortex-M3/M4权威指南:第九章低功耗和系统控制特性

系统控制块(SCB)中存在一个名为配置控制寄存器(CCR)的寄存器,它可以调整处理器的某些行为以及控制高级特性。可以控制处理器其他的相关行为。一般用于调试。

2026-07-27 00:20:40 194

原创 Cortex-M3/M4权威指南:第八章深入了解异常处理

本章对大多数开发人员不重要,但是对了解异常和中断的调试很有用。中断等待表示从中断请求开始到中断处理开始执行间的时间。对于Cortex-M3和Cortex-M4处理器,若中断系统为零等待的,而且假定系统设计允许取向量和压栈同时执行,则中断等待为12个周期,其中包括寄存器压栈、取向量以及取中断处理的指令。不过多数情况,都不止12个周期。

2026-07-26 16:45:19 347

原创 Cortex-M3/M4权威指南:第七章异常和中断

异常处理流程一般是:1.外设发起中断请求2.处理器暂停当前任务3.处理器执行中断服务函数,在中断服务函数里面,可能需要清除中断4.处理器继续执行之前暂停的任务Cortex-M3/M4的NVIC支持最多240个IRQ(中断请求)、1个不可屏蔽中断(NMI,通常由看门狗定时器或掉电检测器等外设产生)、1个SysTick(系统节拍)定时中断及多个系统异常。中断还可以利用软件生成。中断保存和恢复由硬件自动完成。

2026-07-25 16:58:09 530

原创 Cortex-M3/M4权威指南:第六章存储器系统

介绍了一些存储器系统的特性,比如指令和数据共用存储空间、哈佛架构、非对齐传输等等。就是可以读写位段区域的某一个位。有两个位段区域:1.SRAM区域的第一个1MB;2.外设区域的第一个1MB。这两个区域可以像普通存储器一样进行访问,也可以通过位段别名进行访问。位段别名就是一块32MB的存储空间,位段区域的每一位都对应位段别名区域的一个32位地址。比如写操作,假设位段别名的地址为0x2200_0000,你往这个地址写入0x0000_0001,那么这个别名对应的位段区域的某一个位就会置1,写0就置0。

2026-07-23 17:58:05 353

原创 Cortex-M3/M4权威指南:第五章指令集

Cortex-M处理器使用了Thumb-2技术,一个操作状态可以32位和16位指令混合使用。ARM处理器是ARM和Thumb状态进行切换。ARM处理器编译时,部分应用程序编译成32位,部分编译成16位,这样可以提高代码密度。其实本质是,arm处理器有一个译码器,它会将16位的指令映射成32位,然后再执行。Cortex-A/R处理器保留了这两种运行状态。相对于Cortex-M3多了DSP处理指令就是有些指令,是普通C代码编译出来的。比如存储器屏障指令,要使用这些指令,只能通过其他方式。

2026-07-22 23:26:15 328

原创 Cortex-M3/M4权威指南:第四章架构

Cortex-M3和Cortex-M4都是基于ARMv7-M架构。Cortex-M4发布时,架构中又额外增加了新的指令和特性,改进后的架构有时也被称为ARMv7E-M.嵌入式开发,只需要了解编程模型、异常(如中断)如何处理、存储器映射、如何使用外设以及如何使用微控制器供应商提供的软件驱动文件等。

2026-07-22 00:04:17 424

原创 Cortex-M3/M4权威指南:第三章

本文章相当于学习笔记,摘录总结。推荐自行观看相关书籍(权威指南),不足之处,请指点。

2026-07-15 15:54:09 176

原创 Cortex-M3/M4权威指南:第二章

CMSIS由ARM开发,它使微控制器和软件供应商可以使用一致的软件结构来开发Cortex微控制器的软件。CMSIS的目标包括:提高软件重用性。在不同的Cortex-M工程间重用软件代码更加容易,减少了推向市场和测试验证的时间。提高软件兼容性。由于有了统一的软件架构(例如,处理器内核访问函数的API、系统初始化方法以及定义外设的通用方式),不同来源的软件可以配合工作,降低了集成的风险。易于学习。CMSIS允许使用C语言访问处理器内核特性。

2026-07-14 22:24:13 194

原创 Cortex-M3/M4权威指南:第一章

介绍Cortex-M3/M4以及特点。

2026-07-14 12:04:59 255

原创 STM32F407学习记录(四)环形缓冲区

这时候,发现tail已经来到了buffer的最后一个位置,如果再往里面写一个数据,tail应该回到开头,也就是现在head所在的地方,但这时候会发现head==tail和一开始缓冲区为空的时候一致。就是往ring_buffer数组中tail所指向位置写入一个数据,然后tail移动至下一个需要写入的位置。注意:取模操作比较费时,如果对速度有要求,可以将缓存区的大小设置为2的幂次方,例如32、64、256。就是从head所指示的位置读取数据,然后将head移动至下一个可以读的位置。至此形成了一个环形的缓冲区。

2026-07-12 17:30:12 165

原创 STM32F407学习记录(三)内存管理

STM32F407具有192KB的SRAM:借用正点原子探索者开发指南第五章5.3.3小节的表5.3.3.2和表5.3.3.3所示:能够发现STM32F407的内存由3个部分组成:1.CCM的RAM:这是一个特殊的RAM,只能由内核访问,外设不能访问,比如DMA2.SRAM13.SRAM2内存的分配方式:1.静态分配:全局变量、静态变量2.动态分配:通过运行malloc/free申请释放:创建一个巨大的数组作为一个内存池,然后需要多大的内存,从这个内存池中取。

2026-07-11 18:54:27 228

原创 STM32F407学习记录(二)C语言基础

编译器一看 while(flag == 0),心想:“这个 flag 在循环里又没被修改,何必每次都去内存(RAM)里读?”,于是它把 flag 的值从内存取出,放在CPU的寄存器R0里,然后判断 R0 == 0。因为R0永远是0,循环永远不退出,哪怕中断把内存里的 flag 改成了1,CPU读的依然是寄存器R0里的旧值(0)。:“执行到这里,必须把前面所有的内存写操作(Store)全部冲刷到实际物理地址上,确认完成,再执行后面的写操作!(写DR的结果不影响写CR),它为了效率,可能。

2026-07-10 20:44:42 204

原创 STM32F407学习记录(一)创建一个寄存器工程

个人吐槽(不喜勿喷):我已经毕业1年了,在小私企做嵌入式开发,这一年来,我做得感觉好杂啊。要画PCB、要写固件、还要写对应的上位机,有点杂而不精,虽然确实对于我刚毕业那会,进步了太多,但这一年来我都没有好好去沉淀我的能力。这一年来,确实也参与了几个项目,比如核电子学的模拟多道、基于树莓派的上位机系统。玩过stm32、pico rp2350、esp32、树莓派,但都不深入,都是基于sdk开发的,甚至都没有用到freeRtos,纯裸机状态机进行开发。

2026-07-08 22:49:06 578

空空如也

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

TA关注的人

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