st7735s驱动教程(st7920驱动)

st7735s驱动教程(st7920驱动)俗话说万事开头难 学习一门新的知识 难的往往不是知识本身 而是如何快速上手 需要什么资料和开发环境 一旦上手后 深入的学习就相对容易些了 1 1 初学者重要提示 1 2 开发环境说明 1 3 STM32H7 和 F1 F4 系列的区 1 4 STM32H7 开发资源查找 1 5 HAL 库介绍 1 6 CMSIS 软件包 1 7 STM32CubeMX 图形平台 1 8 STM32H7 调试方法 1 9

大家好,我是讯享网,很高兴认识大家。



俗话说万事开头难,学习一门新的知识,难的往往不是知识本身,而是如何快速上手,需要什么资料和开发环境。一旦上手后,深入的学习就相对容易些了。

1.1 初学者重要提示

1.2 开发环境说明

1.3 STM32H7和F1,F4系列的区

1.4 STM32H7开发资源查找

1.5 HAL库介绍

1.6 CMSIS软件包

1.7 STM32CubeMX图形平台

1.8 STM32H7调试方法

1.9 STM32H7出现硬件异常的解决办法

1.10总结

 

 

1、  关于学习方法问题,可以看附件章节A。

2、  学会 STM32H7相关资源的获取方法,做到心中有数,否则心里老是没底。

3、  关于MDK和IAR两种编译器,推荐都掌握,以其中一个为主,另一个为辅。因为很多时候我们需要参考的工程代码不是自己熟悉的编译器,就会很被动。

4、  相对于F1、F4系列,H7最大的区别的还是MPU和Cache的配置,这两个配置会贯穿整个教程为大家做讲解,而外设的学习大同小异。

5、  H7携带了DTCM和ITCM,ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上的其它RAM主频都是200MHz,所以要充分发挥TCM的性能。

6、  STM32H7系列只有HAL库,没有再配套标准库了,这点要知道。HAL库的优点是配置方便,特别是配合图形开发工具STM32CubeMX时,缺点是源代码稍显臃肿,封装的有点多。

7、  这几年涌现出好几款非常棒的调试工具(如Event Recoder,SEGGER RTT),教程的后面章节会为大家做讲解。

 

1、  IDE:支持两种IDE开发环境,MDK和IAR

        a.  MDK推荐使用MDK5.26正式版及其以上版本。

        b.  IAR固定使用IAR8.3版本,由于IAR向下兼容性稍差,其它版本未做支持。

2、  调试器使用JLINK,CMSIS-DAP,ULINK或者STLINK均可。

3、  配套开发板是安富莱的:STM32-V7开发板,MCU是STM32H743XIH6。

使用STM32H7跟F1,F4系列的区别。

1、  最大的区别H7是多了一个L1 Cache一级缓存,这个缓存在为低速存储器带来加速的同时,也为程序设计带来了一些问题,其中最为主要的是数据一致性问题。

2、  STM32H7的自带外设比较之前的任何STM32型号都要生猛,算是大换血了,换了ADC,DMA,USART等重要外设,性能比之前要强劲很多。比如ADC换成了3.6Msps 16位分辨率,DMA支持任意互联了,USART也支持波特率自适应。

3、  到了STM32H7系列,ST官方仅提供了HAL库,没有再提供标准库,而对于F1,F4系列,标准库和HAL库都是有的。

4、  F1是M3内核,F4是M4内核,而STM32H7是M7内核,从编程的角度来说,几乎没有区别。而性能上区别可以看此贴:

http://forum.armfly.com/forum.php?mod=viewthread&tid=21850

 

总的来说,主要有上面这四点不同,其它地方与使用F1,F4系列是相同的。

学习一款新的芯片,需要大家从官方获取两方面的资料,一个是相关的技术文档,比如参数手册、数据手册、应用笔记等;另一个是软件包,官方在软件包中提供了外设驱动库和基于此库的大量例程。

1.4.1      开发文档

学习STM32H7主要下载哪些相关手册呢?主要有以下几个,这几个手册是我们经常要使用到的,不光学习STM32需要这类手册,学习FPGA、DSP也是这些类型的手册,熟练查阅和使用这些手册也是电子工程师必备的知识之一。

参考手册(Reference Manual)

对芯片每个外设的具体描述和功能介绍,比如我们要查USART,SPI,DMA相关寄存器和功能的介绍就可以使用这个手册。

数据手册(Data Sheet)

在我们要画PCB的时候用到这个手册的情况比较多,这个手册上面有关于这个系列芯片的引脚定义、电气特性、机械封装、料号定义等信息。

勘误手册(Errata Sheet)

描述了芯片某些功能的局限性,并给出解决办法。这个手册也比较重要,有时候我们觉得有些地方调试老是出问题,就需要查找一下,看看是否是硬件bug。

闪存编程手册(Flash Programming Manual)

芯片的片上Flash操作指南,比如芯片的擦除,编程,闪存读写保护,选项字节信息等。

内核编程手册(Cortex-M Programming Manual)

对内核的系统控制块的介绍。这个手册有时候也要用到,比如我们需要了解NVIC和SysTick相关的寄存器,就需要使用这个手册。这个手册可以在ARM官方网站下载,也可以到ST官网下载,区别是ARM官网下载的手册是通用的,而ST的是针对自家芯片做的。有时候在参考手册上面找不到相关寄存器的信息时,就需要用到这个手册。

应用笔记(Application Note)

针对不同应用主题的描述性文档,部分笔记还会有配套的固件例程。应用笔记的重要性不言而喻,很多时候官方对一些应用做出了解决方案,都会以应用笔记的形式发布。

用户手册(User Manual)

一般是对某个软件库的说明文档。

Cortex-M3/M4权威指南

这也是非常重要的参考资料,对于有兴趣了解M3/M4内核的同学,这个资料相当重要,了解了内核才能更好的利用M3/M4。虽然是STM32H7是M7内核,大部分内容跟M3/M4都是一样的。论坛下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=2161 。

了解了这些手册的作用以后,我们学习如何在官网上面查找这些文档。前几年ST官方升级后,通过页面超链接的方式查找非常不方便,当前推荐直接在官方右上角的方框里面检索即可,比如使用的是STM32H7,直接输入STM32H7检索:

第1步:进入ST官方地址www.st.com,右上角输入STM32H7检索。

hk32f030mf4p6使用stm32cubemx_M4
讯享网

第2步:检索后会弹出所有STM32H7的芯片(随着时间推移,会增加新型号)。

hk32f030mf4p6使用stm32cubemx_php_02

第3步:比如我们用的是STM32H743XI,点击进入第2步截图中的STM32H743XI选项即可。进入后,所有的相关资源就都在这个页面下了。

数据手册标识:

 

hk32f030mf4p6使用stm32cubemx_php_03

应用笔记标识:

 

hk32f030mf4p6使用stm32cubemx_开发工具_04

参考手册标识:

 

hk32f030mf4p6使用stm32cubemx_php_05

编程手册标识:

 

hk32f030mf4p6使用stm32cubemx_php_06

勘误手册标识:

hk32f030mf4p6使用stm32cubemx_M3_07

基本上大家所需的开发文档都在这个页面下了。

1.4.2      软件包

 通过上面小节整理完毕相关文档后,就是STM32H7软件包的下载了。软件包也比较好找,同样推荐1.4.1小节的方式。

第1步:进入ST官方地址www.st.com ,右上角输入STM32CubeH7检索。

hk32f030mf4p6使用stm32cubemx_M4_08

第2步:检索后会弹出STM32CubeH7的软件包选项。

hk32f030mf4p6使用stm32cubemx_php_09

第3步:进入STM32CubeH7的页面地址后,就在页面的最底端看到这个软件包了(随着时间推移,版本会不断更新)。

hk32f030mf4p6使用stm32cubemx_M3_10

第4步:点击按钮“Get Software”后,弹出如下界面

hk32f030mf4p6使用stm32cubemx_开发工具_11

点击ACCEPT进入下面界面:

hk32f030mf4p6使用stm32cubemx_M3_12

点击Login/Register

hk32f030mf4p6使用stm32cubemx_M4_13

通过上面四步就获取了STM32H7的软件包。软件包的目录结构如下:

hk32f030mf4p6使用stm32cubemx_M4_14

HAL库就包含在大家下载的STM32CubeH7软件包里面。软件包的框图如下:

hk32f030mf4p6使用stm32cubemx_php_15

HAL库全称Hardware Abstraction Layer,即硬件抽象层,其实就是STM32H7的外设驱动包。代码文件位于路径:DriversSTM32H7xx_HAL_Driver。如下是部分截图:

hk32f030mf4p6使用stm32cubemx_php_16

单从人性化角度,这些外设驱动写的还是比较用心的,特别是每个C文件开头的使用说明。比如文件stm32h7xx_hal_gpio.c开头的说明:

 

HAL库的使用方法跟之前F1,F4系列的标准库差不多,只是HAL库封装的稍显臃肿。事情都是两面的,代码臃肿了,易用性会好些。

CMSIS(微控制器软件接口标准,Cortex Microcontroller Software Interface Standard)是ARM官方设计的驱动包,框图如下:

hk32f030mf4p6使用stm32cubemx_M4_17

ARM推出CMSIS软件包意在统一各大芯片厂商的外设驱动,DSP数字信号处理,下载器和各个主流RTOS的API统一。几年下来,各个厂商一直是各自为战,所以CMSIS的驱动一直没有被各个芯片厂商采用。而且ARM做得也不够完善,没有ADC、DAC、定时器之类的外设驱动。

这两年情况好了不少,特别是ARM为ST做的CMSIS-Driver明显完善了很多。针对我们这个教程来说,当前还用不到这些东西,主要用到CMSIS软件包里面的如下头文件即可(不同版本,截图中的文件可能不同,这个软件包是一直在更新中的,下面的截图的版本是V5.3.0):

hk32f030mf4p6使用stm32cubemx_M3_18

这个软件包可以在三个地方获取:

1、STM32CubeH7软件包里面。

每个版本的Cube软件包都会携带CMSIS文件夹。

2、MDK安装目录(下面是5.3.0版本的路径)。

大家安装了新版MDK后,CMSIS软件包会存在于路径:ARMPACKARMCMSIS5.3.0CMSIS。

3、GitHub。

通过GitHub获取也比较方便,地址:https://github.com/ARM-software/CMSIS_5 。点击右上角就可以下载CMSIS软件包了。

hk32f030mf4p6使用stm32cubemx_M3_19

当然,也可以在ARM官网下载,只是这两年ARM官网升级得非常频繁,通过检索功能找资料非常麻烦。所以不推荐大家到ARM官网下载资料了。

下面为大家简单介绍下CMSIS软件包里面这几个文件夹:

hk32f030mf4p6使用stm32cubemx_php_20

Core

Cortex-M处理器内核和外设的API。 它为Cortex-M0,Cortex-M0 +,Cortex-M3,Cortex-M4,Cortex-M7,Cortex-M23,Cortex-M33,SC000和SC300提供了标准化接口。 还包括用于Cortex-M4,Cortex-M7和Cortex-M33 的SIMD指令。当前这个文件下只有一个示例文件,还用不上。

Core_A

同上,只是用于Cortex-A5/A7/A9。

DAP

这个是ARM官方推出的下载器固件,也就是大家所说的CMSIS-DAP下载器。

Documentation

这个是CMSIS软件包的Help文档,打开后效果如下:

hk32f030mf4p6使用stm32cubemx_嵌入式_21

Driver

这个是ARM做好的驱动框架,支持的外设如下:

hk32f030mf4p6使用stm32cubemx_M4_22

针对不同厂商,ARM会出一个完整的驱动包,比如STM32H7系列,在MDK安装目录的此路径下(前提是大家安装了STM32H7软件包):ARMPACKKeilSTM32H7xx_DFP2.1.0CMSISDriver。

hk32f030mf4p6使用stm32cubemx_M3_23

ARM做的这个驱动跟HAL库有什么区别呢?ARM做的这个库要调用到HAL的一些API,然后封装了一些比较好用的API,方便用户调用。

DSP_Lib

这个是ARM提供的DSP库,此库支持以CM0、CM3、CM4以及CM7为内核的所有MCU,含源码。详细介绍可以看我们的DSP教程:http://forum.armfly.com/forum.php?mod=viewthread&tid=3886 。

Include

这个文件比较重要,虽然是头文件,但是封装了很多内核方面的API,是大家工程里面务必包含的路径。

Lib

这个文件是GCC和MDK格式的DSP库文件。

NN

这个是ARM新出的神经网络库,框图如下:

hk32f030mf4p6使用stm32cubemx_开发工具_24

Packs

这个文件没什么用,大家不用管。

RTOS

这个是RTX4以及CMIS-RTOS V1封装层,含源码,免费,Apache-2.0授权。

RTOS2

这个是RTX5以及CMIS-RTOS V2封装层,含源码,免费,Apache-2.0授权。

SVD

SVD的全称是System View Description,系统视图描述。对芯片的外设、存储器等进行了详细描述,编译器要用到这个文件,不同系列芯片有不同的SVD文件。以STM32H7为例,在MDK的option选项里面可以看到以svd为后缀的文件被调用。

hk32f030mf4p6使用stm32cubemx_嵌入式_25

Utilities

这个文件里面提供了一些实用的小软件或者文件。

 

关于CMSIS软件包就为大家介绍这么多,后面用到哪个文件时,再为大家详细介绍。

STM32CubeMX是ST在2014年推出的图形开发软件,方便用户配置时钟、外设、引脚以及RTOS和各种中间件。整体框图如下:

hk32f030mf4p6使用stm32cubemx_M3_26

通过这个图形软件,可以让大家方便地生成工程代码,支持MDK,IAR,TrueSTUDIO等编译器。针对STM32CubeMX的使用,后面会专门做几期专题教程。

STM32H7的调试方法主要分为两大类:

1、MDK和IAR编译器自带的调试

    MDK调试方法在第5章进行了详细讲解。

    IAR调试方法在第7章进行了详细讲解。

2、终极调试组件Event Recoder的使用方法。

    在8章节进行了详细讲解。

大家做项目时,经常会遇到硬件异常问题,所以专门为此做了一个章节(具体在11章节进行了详细讲解)。

本章节就为大家讲解这么多,建议初学者花些时间对 STM32H7的开发文档的章节结构了解一下,随着以后的学习最好可以达到熟练查看这些开发文档的程度。

 

小讯
上一篇 2025-06-07 12:15
下一篇 2025-04-18 11:53

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/171177.html