当前位置:网站首页 > 探索 > 一、准备(STM32F4探索者)

一、准备(STM32F4探索者)

一、准备(STM32F4探索者)初衷这些文章属于本人在学习STM32F4所记录的笔记,只建议参考,不属于教程。文章中会讲解一些基础的知识,记录一些资源所在的渠道,注意事项等问题。

初衷

这些文章属于本人在学习STM32F4所记录的笔记,只建议参考,不属于教程。文章中会讲解一些基础的知识,记录一些资源所在的渠道,注意事项等问题。这些文章都有以下要求:

结合参考手册,但只会讲解用到的外设功能等知识点,以及找出关键部分。文章会去讲解外设底层的实现原理,让读者了解个大概,程序会直接参考正点原子的,但不会贴出,有空会更新github,也可以参考其它文章。不会重复讲解教材中的内容,因为大部分教材都是参考官方的教材,建议直接看官方的文档。不属于教程,只是笔记。其中难免会对知识的误解,疏忽,还请大家见谅,并提出。有一些知识,只会列出索引,帮助初学者了解STM32或其它MCU的学习方法,不会注重去讲解,因为原作者的是最好的。硬件资源平台

硬件开发的平台使用的是正点原子的STM32F4探索者,版本是V2.26。拥有的资源如下:

探索者_探索者_探索者

STM32F4探索者 V2.26

关于上面的所有资源的介绍,详细讲解请见正点原子的《STM32F4开发指南-XXX版本_V1.2》(XXX:HAL库、库函数、寄存器)文档的硬件篇第1、2章节。

了解完上面的硬件开发平台的资源后,下面就是如何找相关的教程和参考的资源了

1. 正点原子

毋庸置疑,开发板采用的是他家的,所以第一份资料就需要在这里找包括教程,资料的下载,论坛等等都可以找到。B站STM32教程,正点原子资料下载中心,开源电子网。

2. ST官方网站

这款开发板的主控芯片采用的是ST(意法半导体)的STM32F407ZGT6,所以关于这款芯片的详细信息,如电气参数,里面的资源都可以在ST找到。像数据手册,参考手册,应用手册等等。

3. ARM官方网站

主芯片的内核采用的是ARM的Cortex-M4,所以需要在该官网找到相关的资料。

芯片

前面已经介绍过探索者开发板的一些硬件资源及所采用的芯片了,下面是摘抄了ST官方对STM32F407ZG的描述:

The STM32F405xx and STM32F407xx family is based on the high-performance Arm® Cortex®-M4 32-bit RISC core operating at a frequency of up to 168 MHz. The Cortex-M4 core features a Floating point unit (FPU) single precision which supports all Arm single-precision data-processing instructions and data types. It also implements a full set of DSP instructions and a memory protection unit (MPU) which enhances application security.

The STM32F405xx and STM32F407xx family incorporates high-speed embedded memories (Flash memory up to 1 Mbyte, up to 192 Kbytes of SRAM), up to 4 Kbytes of backup SRAM, and an extensive range of enhanced I/Os and peripherals connected to two APB buses, three AHB buses and a 32-bit multi-AHB bus matrix.

All devices offer three 12-bit ADCs, two DACs, a low-power RTC, twelve general-purpose 16-bit timers including two PWM timers for motor control, two general-purpose 32-bit timers. a true random number generator (RNG). They also feature standard and advanced communication interfaces.

有关于该芯片的详细信息请见STM32F407ZG数据手册。

内核

通过上面的ST官方的描述,该芯片的内核采用的是ARM的Cortex-M4。根据ARM官方的介绍,该内核拥有以下特点:

探索者_探索者_探索者

简介

探索者_探索者_探索者

框架

关于Cortex-M4的详细信息请见Cortex-M4 Processor Datasheet。

软件环境

开发STM32F4主要用到两种开发工具。STM32CubeMX和Keil MDK,前者是ST官方推出的一款图形化代码生成工具,主要是用来生成一些芯片外设的驱动、组件(GUI、RTOS)等等。后者是常用的MCU开发软件,相信接触过51的都不陌生,当然还有一款是IAR。Keil以前是不支持ARM内核芯片的,自从被ARM收购后,开发了一款Keil MDK用来开发采用ARM内核的MCU/MPU。

STM32CubeMX

该软件是ST官方为自家MCU/MPU产品推出的一款以图形化的方式来生成代码的工具。使用后可以极大的缩短项目的开发周期,可以用它来生成外设的驱动部分、生成一些组件(如FREERTOS、FATFS)等等,但是不建议初学者用,因为它极大的屏蔽了底层的实现方式,对初学者了解底层不太友好。生成的对应程序所使用的API库有两种,HAL和LL。后者比较偏向底层,可以用来熟悉芯片外设的配置方法,工作流程。至于它的安装方式这里就不解释了,网上有大部分的文章进行说明。STM32CubeMX。

Keil5 MDK

大部分学者入门单片机很多第一都是接触这款软件。至于该软件的起源这里就不多介绍了,1982年由Günter(君特)和 Reinhard (莱因哈德)两人联合创办。它有付费和免费版,或者去找一些破解版的也行(但只建议用来学习)。2005年它被ARM收购了,在编写该文章前,已经发展到第6版了2023,不过建议采用和正当原子教程一致的Keil5 MDK。它的安装方法网上也有很多。资料、教材上也有提供软件包和安装方法。Keil官方网站。

学习方法

绝大部分初学者,或者之前有接触过类似的MCU,如51、Arduino等等MCU的学者。大多数上来就入手一款资源丰富(完全手把手教),心想跟着教程走就能学会,如前面提到的正点原子的STM32F4探索者。但是学到越往后就越迷茫,完全不知道如何做项目,甚至出现问题都手忙脚乱,完全不知道从哪下手。要命的是连最基础的原理图都看不懂,CH340G电路是怎样实现程序通过串口自动下载的?,又是什么原理?。BOOT又是什么?。参考手册,数据手册那么难看,还不如教程的视频,书籍香,根本就不需要什么知识储备就能学会。我大致把上面提到的问题,分为下面几点:

不会分析原理图,甚至不会去看不看官方手册,只看合作伙伴推出的教程越往后学起来越吃力,好像只会调用官方提供API库,怎么实现的也不知道,好想放弃遇到问题,直接上搜索引擎,论坛、交友群提问,大部分的问题都不思考,不分析。提出的问题模糊不清,如为什么我跟着教程编译的程序会出错?、为什么编译的程序下载不进去等等。最后,一个非常要命的问题,很多人遇到问题,都觉得不是自己产生的问题,各种甩锅,各种狡辩。

上面讲的是,属于一劳永逸的做法,入手资源丰富,教程简单的教材以及会出现的一些问题等内容。下面是收集一些关于硬件资源紧张,软件资源参考的一些优势和弊端。

大部分初学者,由于资金紧张或单单是为了其它目的往往,刚开始不会买一些硬件资源非常丰富的开发板。通常都只采用系统板,而学习资源则是参考官方或合作伙伴推出的教程。这类学者相比前面的,可以掌握的知识更多,如下:

他们会主动去收集资料,阅读各种资料,对比从而找出合适的,而不是被动的手把手的喂。遇到问题会主动的分析,因为他们采用的开发板和教程中的不一致会主动去阅读官方文档,分析做对比但是也避免不了一个问题,非必要时不会去阅读相关的文档,有API用就不折腾的原则。这样的现象在创客中比较多,因为他们只是使用者,不是开发者,大部分很少去了解底层的原理。

说完了优点来说说缺点,如下:

由于采用的资源比较匮乏,学习到的知识比较杂,不系统,耗费精力比较多最后,还是不知道做什么。找的项目,其中有些知识点没有掌握,理解起来比较吃力。就算成功复刻了,其中的内容理解也比较有限。建议初学者建议先入手一块最小系统板,把一些入门的知识掌握先(如学习方法,一些常用外设的使用)。如果想深入学习的话,还是建议入手一款资源丰富的开发板,因为系统学习真的很重要。除了学习的时候跟着教程走,必要时阅读官方提供的手册(数据、参考手册),看懂原理图,做分析框架图、些笔记等等。遇到问题,不要在那想,就算想到了耗费的时间也是巨大的。先用脑图软件先列出前因后果、思考解决方案并实施。实在无法解决了再借助工具。最后把遇到的问题、解决过程、答案记录下来。也可以分享到别的社交平台。多动手,多思考,多总结。多去逛一些相关的论坛。不要只是停留在学阶段,多找一些项目来做,分析它的框架、实现原理。做项目的时候,先在开发板中验证后,再进行开发会省心很多。

只看教程,永远都学不好,最多只是学会!,很多知识是教材中找不到的

上一篇: 澳大利亚的气候分布特点及主要气候类型有哪些
下一篇: 2022广东省半导体产业技术峰会成功举办

为您推荐

发表评论