STM32总结

以下内容大部分是根据零死角玩转STM32这篇文档,写的非常好。这个总结只是写了基础的部分,包括STM32的简介及STM32的IO口操作、中断配置,总结在此处方便以后的回顾。

一、Cortex简介

ARM Cortex 系列是新一代的,一个为广泛的技术需求提供标准架构的处理器。与其他的ARM 处理器不同,Cortex 系列是一个完整的处理器核心,一个标准的CPU 和系统架构。

Cortex-M3的4Gbyte地址空间被分成明确定义的区域:代码区,SRAM区,外设区和系统外设区。与ARM7不同的是,Cortex-M3是一个哈佛结构的处理器,所以有多条总线,允许执行并行操作,提高其整体性能。与早期的ARM架构不同,Cortex 系列允许未对齐的数据访问。这将确保最有效地利用内部SRAM。Cortex 系列还有一个称为位带的方法,支持在两个1Mbyte 的内存区域里进行位设置和清除。这样可以有效地访问位于SRAM存储器的外设寄存器和标志,而不需要一个完整的布尔处理器。

Cortex CPU 是一个有加载和存储体系结构的RISC处理器。为了执行数据处理指令,操作数必须被加载到一个中央寄存器,数据操作必须在这些寄存器上执行,并且把结果回存到内存上。

二、STM32简介

STM32的核心是Cortex-M3 处理器。Cortex M3 处理器是一个标准化的微控制器,包括32 位CPU,总线结构,嵌套的中断单元,调试系统和标准内存布局。

M3处理器支持两种处理器的工作模式,还支持两级特权操作
两种工作模式: 处理模式 handler mode  线程模式 thread mode。
引入两个模式的本意,在于区别普通应用程序代码和异常服务程序,包括中断服务程序代码
M3的特权分级: 特权级  用户级可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。这也是一个基本的安全模型。当处理器运行主应用程序时(线程模式),既可以使用特权级,也可以使用用户级,但是异常服务程序必须在特权模式下执行。复位后,处理器默认进入线程模式,特权级访问。在特权级下,程序可以访问所有的存储器空间(除非被MPU设置禁用),并且可以执行所有指令。(特权级进入用户级后就只能处理在用户级的状态下能做的功能,想要回到特权级只有触发异常)在非特权模式下某些指令将被禁用(如允许访问xPSR 和它的别名的MRS 和MSR指令。

三、开发工具

MDK 是一个集代码编辑,编译,链接和下载于一体的集成开发环境(KDE)。

Translate 就是翻译当下修改过的文件,说明白点就是检查下有没有语法错误,并不会去链接库文件,也不会生成可执行文件。
Build 就是编译当下修改过的文件,它包含了语法检查,链接动态库文件,生成可执行文件。
Rebuild 重新编译整个工程,跟Build 这个按钮实现的功能是一样的,但有所不同的是它编译的是整个工程的所有文件,耗时巨大。

四、STM32

在 51 单片机的程序开发中,我们直接配置 51 单片机的寄存器,控制芯片的工作方式,如中断,定时器等。配置的时候,我们常常要查阅寄存器表,看用到哪些配置位,为了配置某功能,该置1 还是置 0。这些都是很琐碎的、 机械的工作,因为 51 单片机的软件相对来说较简单,而且资源很有限,所以可以直接配置寄存器的方式来开发。 STM32 库是由 ST 公司针对 STM32 提供的函数接口,即 API(Application Program Interface),开发者可调用这些函数接口来配置 STM32 的寄存器,使开发人员得以脱离最底层的寄存器操作,有开发快速,易于阅读,维护成本低等优点。

库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器的接口。

所谓库函数,就是 STM32的库文件中为我们编写好的函数接口,我们只要调用这些库函数,就可以对 STM32 进行配置,达到控制目的。我们可以不知道库函数是如何实现的,但我们调用函数必须要知道函数的功能、 可传入的参数及其意义、和函数的返回值。

五、为什么采用库来开发?

对于 STM32,因为外设资源丰富,带来的必然是寄存器的数量和复杂度的增加,这时直接配置寄存器方式的缺陷就突显出来了:
1) 开发速度慢
2) 程序可读性差
这两个缺陷直接影响了开发效率,程序维护成本,交流成本。库开发方式则正好弥补了这两个缺陷。而坚持采用直接配置寄存器的方式开发的程序员,会列举以下原因:
1) 更直观
2) 程序运行占用资源少
初学 STM32 的读者,普遍因为第一个原因而选择以直接配置寄存器的方法来学习。认为这种方法直观,能够了解到是配置了哪些寄存器,怎样配置寄存器。事实上,库函数的底层实现恰恰是直接配置寄存器方式的最佳例子,想深入了解芯片是如何工作的话,只要追踪到库的最底层实现就能理解,相信你会为它严谨、优美的实现方式而陶醉。

相对于库开发的方式,直接配置寄存器方式生成的代码量的确会少一点,但因为 STM32 有充足的资源,权衡库的优势与不足,绝大部分时候,我们愿意牺牲一点资源,选择库开发。一般只有在对代码运行时间要求极苛刻的地方,才用直接配置寄存器的方式代替,如频繁调用的中断服务函数。


六、Cortex 微控制器软件接口标准

因为基于 Cortex的某系列芯片采用的内核都是相同的,区别主要为核外的片上外设(如芯片内部的模数转换外设ADC、串口UART、定时器TIM)的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的 Cortex微控制器软件的兼容性问题,ARM 与芯片厂商建立了 CMSIS 标准(Cortex MicroController SoftwareInterface Standard)。

CMSIS 标准中最主要的为 CMSIS 核心层,它包括了:
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 智能控制:STM32智能育苗系统采用了高性能的STM32芯片作为控制核心,能够实现智能化的控制,具有高精度、高稳定性和高可靠性等优点。 2. 多种功能:STM32智能育苗系统支持多种功能,包括灌溉、温度控制、湿度控制、光照控制等,能够满足不同植物的生长需求。 3. 数据采集:STM32智能育苗系统能够实现对植物生长环境的数据采集,包括温度、湿度、光照等参数的实时监测和记录,为用户提供科学的种植数据支持。 4. 网络连接:STM32智能育苗系统支持网络连接,可以通过WiFi、蓝牙等方式与智能手机、平板电脑等设备进行连接,实现远程监控和控制。 5. 易于操作:STM32智能育苗系统操作简单,用户可以通过触摸屏等方式进行设置和操作,提高了使用的便捷性。 6. 环保节能:STM32智能育苗系统采用了先进的节能技术,能够实现对能源的有效利用,减少能源浪费,达到环保节能的目的。 7. 适应性强:STM32智能育苗系统适用于不同的种植环境和不同的植物种类,具有较强的适应性和灵活性。 8. 维护简单:STM32智能育苗系统维护简单,用户可以通过软件升级等方式进行维护和升级,保证系统的稳定性和可靠性。 综上所述,STM32智能育苗系统是一款具有多种功能和优点的智能化植物生长系统,能够满足不同用户的需求,实现高效、智能的植物生长控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值