《STM32学习笔记》2——开发环境的建立

接上文,文中的图片知识,大多数来自视频的截图(来自洋桃电子)。
欢迎大家批评指正!

STM32学习笔记-专栏

文章目录

    • 一、接口定义
      • 1 芯片引脚整体简介
      • 2 各部分引脚介绍
    • 二、开发板简介
    • 三、ISP下载
      • 1 安装 USB 驱动
      • 2 ISP程序下载——FlyMcu
          • 2.1 烧入FLASH:
          • 2.2 烧入SRAM:(烧写快,断电丢失)
    • 四、最小系统电路
      • 1 基本内部组成
      • 2 最小系统电路
    • 五、KEIL
      • 1 KEIL软件介绍
      • 2 安装
      • 3 工程结构
      • 4 固件库
          • 4.1 定义
          • 4.2 运行原理
          • 4.3 下载安装固件库
    • 六、编程语言介绍
      • 1、C语言
      • 2、对比
    • 七、固件库的调用和添加工程文件
      • 1、固件库
      • 2、添加文件
      • 3、移除文件

一、接口定义

杜老师戏称洋桃开发板是故宫布局,很有意思!

《STM32学习笔记》2——开发环境的建立_第1张图片

1 芯片引脚整体简介

  • 芯片1脚位置(引脚数逆时针递增)
《STM32学习笔记》2——开发环境的建立_第2张图片
  • F103(48pin)引脚分布:
《STM32学习笔记》2——开发环境的建立_第3张图片
《STM32学习笔记》2——开发环境的建立_第4张图片

2 各部分引脚介绍

《STM32学习笔记》2——开发环境的建立_第5张图片
《STM32学习笔记》2——开发环境的建立_第6张图片
《STM32学习笔记》2——开发环境的建立_第7张图片
《STM32学习笔记》2——开发环境的建立_第8张图片

二、开发板简介

《STM32学习笔记》2——开发环境的建立_第9张图片
《STM32学习笔记》2——开发环境的建立_第10张图片

开发板功能 :

  • 2 路继电器
  • 1 个 5 线步进电机接口
  • 1 个 RS232 接口
  • 1 个 RS485 接口
  • 1 个 CAN 总线接口
  • 1 个模拟量游戏摇杆
  • 4 个电容式触摸按钮
  • 1 个旋转编码器按钮
  • 8 位数码管及驱动芯片
  • 8 个 LED流水灯
  • 1 个 MicoUSB 接口
  • 1 个 TF 卡槽
  • 1 个 MP3 播放控制芯片
  • 1 个 U 盘或 USB 鼠标键盘接口
  • 1 个 5V 舵机接口
  • 1 个 JTAG 调试接口
  • 1 个面包板
  • 1 个复位按钮
  • 1 个唤醒按钮
  • 1 个 OLED 显示屏
  • 1 个光敏电阻
  • 1 个电压调节电位器
  • 核心板插座
  • 核心板接口扩展插座
    (所有功能均可用跳线帽与单片机的 IO 接口连接或断开)

三、ISP下载

1 安装 USB 驱动

CH340-USB转串口驱动

2 ISP程序下载——FlyMcu

2.1 烧入FLASH:
  • 搜索串口
  • 配置波特率
  • 打开hex文件
  • 勾上 编程前重装文件、校验、编程后执行、编程到FLASH时写选项字节
  • 设置选项等字节—— FF——设成FF阻止读出
  • 开始编程,即烧写成功
《STM32学习笔记》2——开发环境的建立_第11张图片
2.2 烧入SRAM:(烧写快,断电丢失)
  • 在开发板上按键,切换ISP模式。
  • 勾选上 使用RAMIsp
  • 步骤同上,烧写成功

四、最小系统电路

1 基本内部组成

  • 内核
  • 存储器
  • 时钟和启动
  • 复位
  • 电源管理

2 最小系统电路

《STM32学习笔记》2——开发环境的建立_第12张图片
  • BAT1——纽扣电池:为内部RTC供电
  • 右边6个——滤波电容:去除电源电压的波动干扰。应围绕单片机周围布局布线,以达到最佳滤波效果。
  • K3——手动复位按键
  • Y1、Y2——外部晶振
  • 左边4个——起振电容:帮助晶体振荡器稳定的工作
  • 30、31——串口1的收发脚:USB下载口
  • 40、20——BOOT0、1:启动模式选择引脚
《STM32学习笔记》2——开发环境的建立_第13张图片

五、KEIL

1 KEIL软件介绍

KEIL 是一款用于微控制器的软件开发平台。

  • 把用户的 C 语言、汇编语言、 C ++语言等转换成 HEX 或 BIN 等文件 (编译)
  • KEIL 就是将程序编辑、编译、调试仿真等功能集合在一个叫 uVision 的软件中,这就是集成开发环境
  • KEIL 软件用于STM32的 ARM 内核编译器叫 KEIL MDK
  • KEIL MDK 有多个版本,包括 MDK-Pro(专业版)、 MDK-ARM(标准版)、MDK-CortexM(Cortex版)、 C-MDK-ARМ(中国版)、 MDK-Lite(试用版)。
  • KEIL 原是一家德国公司,后被 ARM 公司收购。
  • 目前主流的集成开发环境有 KEIL 和 IAR ,二者的使用方法大同小异。

2 安装

  • 安装
  • 获得MDK编译内核的序列码,破解(可与51内核共存)

3 工程结构

《STM32学习笔记》2——开发环境的建立_第14张图片
  • CMSIS——内核驱动程序: 包含c⽂件,ST公司官⽅提供的,对arm内核和mcu系统的基础⽂件,⼀般不做修改。
  • LIB——内部功能的基本函数库: 包含c⽂件,st公司提供,需要根据⽤户的需求对其进⾏增减。
  • STARTUP——单⽚机启动程序: 包含asm⽂件,st公司提供,负责启动,⼀般不做修改。
  • USER——⽤户程序(包括主函数): 包括main.c⽂件和stm32f10x_it.c⽂件。前者为⽤户程序,需要⽤户进⾏修改;后者不要修改。
  • BASIC——内部功能的驱动函数: 包括dealy.c和sys.c。前者为⽤户编写的延时程序;后者为st公司提供,不作修改。
  • HARDWARE——外部硬件的驱动程序: 包括led.c和key.c两个⽂件,驱动如led,oled、继电器、微动开关之类。均为⽤户⾃⼰编写,需根据需求修改。

4 固件库

4.1 定义

固件库: 工程文件主要由 底层硬件驱动程序 + 上层用户应用程序 组成。ST官方将通用的底层硬件程序文件写好并封装成文件包,即为固件库。

4.2 运行原理
《STM32学习笔记》2——开发环境的建立_第15张图片
  • 功能配置寄存器: SRAM 里特定的部分,专门用于软件和硬件的连接。
  • 用户程序通常存放在FLASH,运行时被ARM内核调用。内核根据程序指令,调用功能配置寄存器。功能寄存器每一位置零或置一,都可以操作硬件的状态。
《STM32学习笔记》2——开发环境的建立_第16张图片
  • 基于运行原理的三种编程方案
    • 寄存器操作:用户直接操作底层寄存器。简单,效率高,占用内存小,但学习复杂繁琐
    • 标准固件库:官方封装各种驱动程序为特定函数,用户直接调用函数即可。
    • STM32Cube:图形化编程方案,官方最近主推。HAL、LL模式各有优缺点,互相弥补。
《STM32学习笔记》2——开发环境的建立_第17张图片
4.3 下载安装固件库
  • 在官方途径下载固件库
  • 新建工程文件夹,在内分别新建 CMSIS、Lib、Startup、User文件夹
  • 将官方固件库的文件复制进去
  • keil 新建工程在工程文件夹,选择芯片型号
  • keil 红绿白方块的图标的按钮,新建上述四个文件,并分别导入四个文件夹的文件
  • keil 魔术棒按钮。target——8.0MHz;Output——create HEX;C/C++——Preprocessor Symbols——Define输入USE_STDPERIPH_DRIVER,STM32F10X_MD。Include Paths选择文件夹CMSIS、Lib\inc、Lib\src、Startup、User。
  • 在main.c里修改。
  • 编译

六、编程语言介绍

C语言和汇编语言都是人类易学易懂的语言,通过编译器(keil这样的软件)将代码转换为HEX或Bin文件,即单片机认识的语言,可直接在FLASH里读取运行的机械语言。

1、C语言

C 语言: 单片机开发主要学习的语言。"高级但又不太高级"的语言,和底层依旧可以保持一定的联系。因此,可以不需要任何运行环境支持便能运行,且具有良好的跨平台特性。

《STM32学习笔记》2——开发环境的建立_第18张图片

2、对比

汇编语言 C语言
低级语言 高级语言
直接操作底层寄存器 更偏向用户
执行效率最高 效率不如汇编
不易移植 易移植
不易编写和读懂 易编写和读懂
学习难度大 学习难度小

七、固件库的调用和添加工程文件

1、固件库

ST 官方有固件库说明书,涵盖STM32各个模块,可调用库函数,引脚等。

2、添加文件

添加自定义驱动文件:

  • 在工程文件夹中新建文件夹,例如 Hardware
  • 在其中新建功能模块文件夹,例如 LED
  • 在其中新建 “.c ”、“.h”文件,例如 led.c、led.h
  • 在 keil 打开该工程,点击三个小方块(红白绿)的按钮,在 Groups 新建 Hardware 文件夹
  • 点击添加文件,添加 led.c ,OK
  • 点击魔术棒按钮,C/C++选项卡,Include Paths 选择刚刚的文件夹,Hardware/LED ,OK

3、移除文件

  • 在 keil 打开该工程,点击三个小方块(红白绿)的按钮,在 Groups 删除 Hardware 文件夹
  • 删除 led.c ,OK

以上操作可以不必编译不需要的文件,减少资源占用,实际工程文件夹依旧有该文件,但不作编译,也不出现在keil工程侧栏文件目录里。
根据工程情况,删除不必要的驱动程序或固件库的函数等。

你可能感兴趣的:(STM32学习,stm32,学习,单片机)