首页 > 编程知识 正文

STM32中文参考手册,stm32f

时间:2023-05-05 04:13:36 阅读:16313 作者:666

一、stm32最小系统

stm32的最小系统结构如下(stm32芯片除外)。

1、电源模块、3.3V电源必须使用稳压装置,有时需要在电容感网络上生成用于stm32的模拟电源。

2、时钟模块、有源或无源晶振可以使用高达25MHz的有源晶振或4-16MHz的无源晶振,常用为外部8M无源晶振,负载电容可选择22pf。

以下分别为低速外部时钟(RTC用提供)和高速外部时钟。

3、复位电路、RC复位或独立IC复位,stm32的复位端子内置40k的电阻,可以外置0.1uf电容器,复位到地面,可以增加复位按钮。 当然复位电路大家

我习惯从外部打捞。 这不是必须的,但是只要能确保复位时间就完全没有问题。

4、引导选择,stm32有引导0和引导1两个引脚,用于设置系统启动方式,可以从片上闪存、系统存储器或片上SRAM启动。 从系统内存启动时可以使用固定

化的bootloader实现程序是从USART1加载的。 从电影内SRAM开始。 这个还没有研究,但我很感兴趣。

5、程序下载和调试接口可以通过jtag接口实现下载调试功能,在空间有限的情况下,也可以通过USART1下载程序。

二、stm32启动模式

1、引导1=x引导0=0从用户的闪存启动是正常工作模式。

2、BOOT1=0 BOOT0=1从系统存储器启动,以该模式启动的程序功能由制造商设定。 ISP

3、BOOT1=1 BOOT0=1从内置SRAM启动。 此模式可用于调试。

三、开发工具

keil c51相对于51单片机系列。

keil MDK-ARM是针对arm开发的。 其中V5和V4版本差别很大,V5版本需要单独安装芯片封装。

下载方式比较(SWD和JTAG )

1. SWD模式在高速模式下比JTAG更可靠。 对于大数据量,JTAG下载程序将失败,但出现SWD的概率相当低。

如果基本上使用JTAG模拟模式,则只要仿真器支持,就可以直接使用SWD模式。 所以我建议你用这个模型。

2 .当大家的GPIO刚好缺一个的时候,可以使用SWD模拟。 此模式支持更少的管脚。

3 .大家主板体积有限的时候,建议使用SWD模式。 那需要的引脚少,当然需要的PCB空间小。 例如,你可以选择小的

将2.54间距的5芯端子作为仿真连接器。

四、存储器、寄存器

ARM内核具有存储器,例如cortex-M4具有4GB的存储空间。 或者,制造商可以在内存中对Flash、RAM、外围设备等进行地址分配,称为内存映射。

为具有特定功能的存储单元添加别名。 此别名是寄存器,而为其添加别名的过程是寄存器映射。

寄存器的地址=存储器的基址偏移地址

因为操作寄存器的地址很麻烦,所以用c语言封装了寄存器,使开发变得容易了。

五、编程开发

常用的是c语言和汇编语言。 我不说其他语言。 一些初学者认为c语言足以代替汇编,但事实并非如此。 他们各有所长:

C语言:开发比较简单,适用于大型工程汇编语言:适用于小型工程或某些特殊场合(要求性能、存储量、军事)。 因此,一般来说,c语言嵌入式汇编的方式是一种比较好的编程方法。

六、STM32注意事项

在设计过程中,我们会遇到各种型号的软件包,这就要求我们了解每个型号的含义。 以STM32F103ZET6为例,ST代表意大利半导体,其中ARM有三个

系列分别为a、r、m,因此m表示该芯片为m系列,f表示芯片的子系列。 103是增强型系列(101是基本型),z是针数,) Z-144针,

E-100脚.),后面的字符表示Flash容量(E-512K、D-348K、C-256K ),字符" t "表示LQFP封装,字符"6"表示)-40到85。 具体的

标准如下图所示。

我们在开始编程之前,需要在工程中放入启动文件。 不同型号的stm芯片的启动文件也不同。 以stm32F10x为例,如下图所示。

- startup _ STM 32 F10 x _ LD _ VL.s : forstm 32 low density

Value line devices 
- startup_stm32f10x_ld.s: for STM32 Low density devices 
- startup_stm32f10x_md_vl.s: for STM32 Medium density Value line devices 
- startup_stm32f10x_md.s: for STM32 Medium density devices 
- startup_stm32f10x_hd.s: for STM32 High density devices 
- startup_stm32f10x_xl.s: for STM32 XL density devices 
- startup_stm32f10x_cl.s: for STM32 Connectivity line devices 

cl:互联型产品,stm32f105/107系列 
vl:超值型产品,stm32f100系列 
xl:超高密度产品,stm32f101/103系列
ld:低密度产品,FLASH小于64K 
md:中等密度产品,FLASH=64 or 128 
hd:高密度产品,FLASH大于128

  除了利用这些配置相应的启动文件外,还要在下载程序配置中进行选择芯片,如图所示:

  此外,在项目中使用stm32标准外设库(STM32F10x Standard Peripherals Library)的时候,我们会在项目的选项中预定义两个宏定

义:USE_STDPERIPH_DRIVER, STM32F10X_MD,如下图:

  这两个宏的作用是什么呢?

1、 USE_STDPERIPH_DRIVER : to use or not the peripheral’s drivers in application code (i.e. code will be based on direct access to

peripheral’s registers rather than drivers API) , this option is controlled by the #define USE_STDPERIPH_DRIVER

    即这个定义控制了是否在应用中启用外设驱动。我们使用标准外设库本来就为了方便控制外设,所以要添加这个定义,以启用外设驱动。

2、STM32F10X_MD:在上面已经提到,有多种类别,每种类别都有所区别,例如sram或者flash或者外设数量不一样,所以stm32标准外设库

必须根据你使用的处理器来做相应的预处理。如图所示:

 

 

转载于:https://www.cnblogs.com/steed/p/7603310.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。