我是靠谱客的博主 秀丽钻石,最近开发中收集的这篇文章主要介绍STM32——STM32简介与创建工程一、stm32简介二、软件安装三、新建工程四、其他,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、stm32简介
    • stm32MCU:
    • ARM:
    • 命名规则:
    • 片上资源/外设:
    • 系统结构:
    • 引脚的定义
      • 功能引脚介绍:
      • 最小系统引脚介绍:
      • 电源引脚介绍:
    • 启动配置
    • 最小系统电路
  • 二、软件安装
  • 三、新建工程
    • 固件库文件夹
    • 型号分类及缩写
    • 新建工程步骤
    • 工程架构
  • 四、其他

一、stm32简介

stm32MCU:

特点:

  • STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器
  • STM32特色:硬件自动化,各个外设相互链接

stm32分类:
在这里插入图片描述

ARM:

ARM

  • ARM既指ARM公司,也指ARM处理器内核
  • ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构
  • ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片

ST设计与ARM设计的关系:
在这里插入图片描述

ARM分类:
在这里插入图片描述

命名规则:

关于STM32F103C8T6的命名规则:
在这里插入图片描述
关于STM32 & STM8 等其他芯片的命名规则:
在这里插入图片描述
STM32F103C8T6的一些参数:

  • 系列:主流系列STM32F1
  • 内核:ARM Cortex-M3
  • 主频:72MHz(单片机的主频越高,其运算速度一般是越快;如果准确的时钟,需要使用外部晶振)
  • RAM:20K(SRAM:存储介质)
  • ROM:64K(Flash:闪存介质)程序存储器( 在断电情况下仍能保持所存储的数据信息 )
  • 供电:2.0~3.6V(标准3.3V)(51单片机是5V,USB供电是5V,如果需要给32供电要稳压芯片)
  • 封装:LQFP48

片上资源/外设:

STM32F103C8T6片上资源/外设:(深色是内核内的外设,其他是内核外的外设)

在这里插入图片描述

  • 外设:硬件电路,直接通过读写数据寄存器就可以完成发送和接收数据

STM32F103C8T6片上资源/外设的简单介绍:

在这里插入图片描述

  • F1芯片最后四个外设没有

系统结构:

在这里插入图片描述

  • ICode是用来加载程序指令的,Cortex-M3的控制器可以接收主存(Flash存储器)里面的指令操作码

  • 由于主存的读取速度与Cortex-M3的读取速度不一致,所以中间需要Flash接口,

  • DCode是用来传输数据的,比如常量和调试数据等,所以连接Flash闪存(程序)

  • FSMC为可变静态存储器控制器,扩展静态内存

  • SRAM用于存储程序运行时的变量,可以用作高速缓冲存储器

  • 桥接器:用于连接不同的总线,具有数据缓冲,转换和控制功能

  • AHB系统总线是挂载主要外设

  • AHB和APB2是72MHZ,APB1是36MHZ

  • DMA负责数据搬运,例如ADC的连续转化+扫描模式需要DMA

  • DMA拥有和CPU一样的总线控制权,绕过CPU直接访问内存与IO设备,主要是一些高速外设会发起DMA请求,DMA控制器会获取总线的访存控制权,此时CPU没有该控制器,会涉及总线控制权的争夺

  • SDIO:安全数字输入输出,定义了一种外设接口。

引脚的定义

颜色分类

  • 红色是电源相关引脚,类型为S
  • 蓝色是最小系统引脚
  • 绿色是IO口,功能口
    在这里插入图片描述

功能引脚介绍:

  • IO口电平为FT表示可以接收5v电压
  • 功能为VBAT是备用电池供电引脚,负责给外设RTC和BKP供电
  • TAMPER侵入检测,功能是电平变化时清空数据
  • RTC引脚用来输出RTC校准时钟,闹钟脉冲,秒脉冲
  • 34号接32.758KHZ的晶振,电路经过2的15次方分频,生成1秒的时间信号
  • VSSA和VDDA是模拟部分的电源,例如ADC,RC振荡器
  • wkup可以唤醒处于待机的STM32
  • 34/37-40是调试端口(下载端口),支持SWD(2根线)和JTAG(5根线)

最小系统引脚介绍:

  • 复位:NRST表示低电平复位引脚(n表示低电平)
  • 启动配置:BOOT0、BOOT1引脚是用来配置启动模式
  • 晶振:5、6号接8MHZ的主晶振,芯片内部有锁相环电路,对8MHZ频率进行倍频,产生72MHZ的主时钟。
  • 下载端口:34/37是调试端口(下载端口),支持SWD

在这里插入图片描述

电源引脚介绍:

  • VSSA_1_2_3和VDDA_1_2_3是系统的主电源口,因为采用分区供电方式,所以有多个引脚

在这里插入图片描述

启动配置

在这里插入图片描述

  • BOOT用来指定程序开始运行的位置,一般是主闪存存储器
  • 系统存储器模式用做串口下载,该存储器存储的是BootLoader程序,执行该程序可以将pc端代码数据刷新到主闪存中,当所有的调试接口都作为普通IO口时,可以采用这种方法
  • 执行跳线帽的变换后要点reset开关

最小系统电路

在这里插入图片描述

  • 连接最小系统引脚以及所需功能区的电源引脚
  • 复位电路的设计:上电瞬间是先低电平后高电平
    • 点击K1,上电的瞬间,相当于短路,给电容充电,NRST为低电平
    • K1复位,电容充满电的时候相当于断路,此时NRST被电源上拉为高电平
  • 滤波电容的作用是保证供电电压稳定,连接方式是一端接高电平,一端接地

二、软件安装

  • 安装Keil5 MDK(keil5 c51是给51单片机。keil5 MDK给ARM架构的芯片)
  • 安装器件支持包(因为芯片更新特别快,软件无法一直更新,通过器件支持包的形式来支持对应的芯片,例如stm32支持包)
  • 软件注册
  • 安装STLINK驱动
  • 安装USB转串口驱动

三、新建工程

固件库文件夹

在这里插入图片描述

  • 固件库主要文件在Libraries里面

型号分类及缩写

选择器件型号,因为启动文件要根据芯片型号和Flash内存大小

在这里插入图片描述

新建工程步骤

工程文件下载:stm32f103c8t6工程模板

  • 建立工程文件夹,Keil中新建工程,选择器件型号(此处选stm32f103c8t6)

  • 工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹

    • Start文件夹里面包含如下文件【工程架构中会介绍文件的作用】
      在这里插入图片描述

    • 以上文件的本地路径分别是

      • STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x
      • STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm
      • STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport
  • 工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里

    • 将文件夹内的文件添加到工程分组里在这里插入图片描述
    • 选择所有文件
      在这里插入图片描述
  • 工程选项中添加头文件路径:点击魔术棒,C/C++,Include Paths内声明所有包含头文件(即含有.h的文件)的文件夹(因为是自己移入工程的)

    • 在这里插入图片描述
  • 工程里新建User文件夹并新建main.c文件

    • 添加User文件夹
      在这里插入图片描述
    • 添加新文件
      在这里插入图片描述
    • 选择文件类型和文件路径(主要要选择已经建立好的文件夹下)
      在这里插入图片描述
  • 添加Library文件夹,将该本地路径STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_DriversrcSTM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driverinc下的库函数文件都添加到该文件夹下

  • 还需要在user文件夹下添加下列文件,文件所在的本地路径是STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template
    在这里插入图片描述

  • 工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER,使用库函数就必须声明

  • 工程选项,Debug,下拉列表选择对应调试器ST-Link Debugger,点击右边Settings,Flash Download里勾选Reset and Run,下载程序后会立马复位执行

工程架构

在这里插入图片描述

  • startup_stm32f10x_md.s文件
    • 中断函数中调用了复位中断和其他中断(其他函数的参数用到的中断函数名就在该文件查询),完成设置初始SP(堆栈指针)、设置初始PC(程序计数器)、配置时钟系统

    • 复位中断首先调用SystemInit()函数,该函数在system_stm32f10x.h中定义(-system_stm32f10x.c和system_stm32f10x.h用来配置时钟)

      • 复位后函数调用顺序:startup_stm32f10x_cl.s(启动文件) → SystemInit() → SetSysClock () → SetSysClockTo72()
    • main函数文件中引入"stm32f10x.h"的头文件,该头文件中又引入 “stm32f10x_conf.h”(头文件包含关系配置)。因为"stm32f10x.h"使用条件编译的条件是USE_STDPERIPH_DRIVER,所以需要在Define内定义,在stm32f10x_conf.h中引入了Library中所有的库函数头文件
      在这里插入图片描述

    • 其他中断的函数定义不在"stm32f10x_it.h"中而在"startup_stm32f10x_md.s"文件中

    • stm32f10x.h是stm32的外设寄存器描述文件,作用和51单片机的REGX52.H一样,描述寄存器及其地址(外设描述文件)

    • core_cm3.h是内核寄存器描述文件

工程文件命名:

  • hardware——存储于硬件相关的程序
  • system——存储无硬件的程序
  • library——库函数程序
  • user——主程序

工程模板文件中执行keilkill.bat,会把Listings和Object里面的文件清空

四、其他

  • 对于所使用的硬件,其实是了解如何初始化时序图和读写时序图,也就是说硬件编程是看时序写驱动

  • 对于外设,需要了解其触发方式、通道配置、输出到哪里,写外设文件函数一般包含初始化函数和触发函数

  • W25Q64 Flash模块,存储数据并用SPI总线进行通信

  • 旋转编码器包含编码电机的霍尔传感器输出和光电传感器的输出两种

参考视频:江科大自化协

最后

以上就是秀丽钻石为你收集整理的STM32——STM32简介与创建工程一、stm32简介二、软件安装三、新建工程四、其他的全部内容,希望文章能够帮你解决STM32——STM32简介与创建工程一、stm32简介二、软件安装三、新建工程四、其他所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部