目录

  • STM32f1库函数开发学习
    • 硬件基础
      • 一. 硬件资源
      • 二. 部分拓展硬件
        • 1. 启动方式
        • 2. JTAG
        • 3. EEPROM
        • 4. 液晶显示
        • 5. PS/2 接口

STM32f1库函数开发学习


硬件基础


一. 硬件资源

可能用到的硬件资源:

  • HS0038 红外接收
  • DS18B20 数字温度传感器
  • 24C02 EEPROM
  • JTAG/SWD
  • CH340G
  • AMS1117-3.3 电源稳压芯片
  • PS/2 接头
  • SD卡
  • W25Q64 64M FLASH 芯片
  • NRF24L01 无线通信

芯片命名规则

  • ST代表意法半导体
  • STM32代表ST品牌Cortex-Mx系列内核(ARM)的32位MCU
  • 下一个字母( F/L/W )
    • F:通用快闪(FlashMemory)
      • F0xx和F1xx系列为2.0~3.6V
      • F2xx和F4xx系列为1.8~3.6V
    • L:低电压(1.65~3.6V)
    • W:无线系统芯片,开发版
  • 103代表是增强型系列(101是基本型)
  • Z是引脚数,(Z-144脚、E-100脚…)
  • 接下来的字母代表Flash容量(E-512K、D-348K、C-256K…)
  • 封装:
    T:LQFP
    H:BGA
    U:VFQFPN
    Y:WLCSP/WLCSP64
  • 温度范围:
    6:-40℃-85℃ (工业级)
    7:-40℃-105℃(工业级)

例如STM32F103RBT6:

图片转载自电子发烧友网:http://m.elecfans.com/article/597931.html


 

二. 部分拓展硬件

以STM32F103RCT6为例,并讲解一部分外设应用:

STM32F103RCT6
———————资源———————
48KB SRAM
256KB FLASH
2 个基本定时器
4 个通用定时器
2 个高级定时器
2 个 DMA 控制器,共 12 个通道
3 个 SPI、2 个 IIC
5 个串口、1 个 USB、1 个 CAN
3 个 12位 ADC、1 个 12 位 DAC
1 个 SDIO 接口及 51 个通用 IO 口


1. 启动方式

处理器基本原理都相似,简单理解都是取指令、执行指令。从哪里取指令就涉及到存储介质了,ROM和RAM其实就是两种不同的存储介质(一个可以掉电保存,一个掉电不保存),他们都可以做为存储指令的介质。

关于ROM,RAM,FLASH等存储介质有关内的介绍,参见下文:


ROM,RAM,FLASH等存储介质的区别介绍

所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。

STM32有3种启动方式,我们可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。

  • 用户闪存存储器启动模式(Main Flash memory)
    正常的用户工作模式,通过jtag和swd模式进行下载程序,重启后也直接从这启动程序。

  • 系统存储器启动模式(system memory)
    从系统存储器启动,这种模式启动的程序功能是由厂家设置的。

  • SRAM启动(Embedded Memory)
    SRAM,没有程序存储的能力,这个模式一般用于程序调试。

假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,在将程序下载到SRAM中。

查看BOOT所在位置的原理图:

ISP下载,即In-System Programming,在线编程下载
选择ISP下载模式的时候,需要:
BOOT0 = 1,BOOT1 = 0
启动系统存储器用于串口下载,然后复位,下载,下载结束还需要将BOOT0接GND,手动复位,这样STM32才可以从Flash中启动。

关于STM32启动模式的详细阐述,参见下文:


STM32启动模式浅析

2. JTAG

SWD 和 JTAG 接口共用,而SWD 只需要最少 2 根线 (SWCLK 和 SWDIO) 就可以下载并调试代码,跟串口下载代码差不多,而且速度更快,可调试。

推荐使用SWD下载调试(详见后期软件调试内容),摒弃JTAG

关于调试方法的区别,参见下文:


浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别

3. EEPROM

  • EEPROM (Electrically Erasable Programmable read only memory),带电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片,是用户可更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程(重写)。
  • EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。
    一般用于即插即用(Plug and Play,PnP),自动配置低层计算机中的板卡和其他设备,然后告诉对应设备都做了什么。
  • 区别于EPROM(Erasable Programmable ROM)芯片,EEPROM不需从计算机中取出即可修改,而EPROM一旦编程完成后,只能用强紫外线照射来擦除。

常用的24C02芯片:

  • 容量:2Kbit,256字节
  • A0-A3:器件地址线
  • WP: 写保护引脚
  • SCL/SDA:二线串行接口,服从I2C总线协议
  • VCC/GND:电源/地线

关于 Flash,RAM,ROM 存储的基本区别,参见下文:


Flash,RAM,ROM区别

4. 液晶显示

通用液晶接口TFT_LCD

使用TFTLCD时

  • LCD_LED 对应 PC10
  • LCD_CS 对应 PC9
  • LCD _RS 对应 PC8
  • LCD _WR 对应 PC7
  • LCD _RD 对应 PC6
  • LCD _D[17:1]对应 PB[15:0]

使用OLED时:

  • OLED_CS 对应 PC9;
  • OLED_RS 对应 PC8;
  • OLED_WR 对应 PC7;
  • OLED_RD 对应 PC6;
  • OLED_D[7:0]对应 PB[7:0];

引脚注解:

  • CS:片选信号
  • RST(RES):硬复位
  • DC:命令/数据标志 (0读写命令;1读写数据)
  • SCLK:串行时钟线,在 4 线串行模式下,D0 信号线作为串行时钟线 SCLK
  • SDIN:串行数据线,在 4 线串行模式下,D1 信号线作为串行数据线 SDIN



5. PS/2 接口

PS/2,一种鼠标和键盘的专用接口,是一种6针的圆型接口。PS/2接口是输入装置接口,而不是传输接口。所以PS2口没有传输速率的概念,只有扫描速率


鼠标的PS/2的接口是绿色,而键盘的PS/2接口是紫色,二者不能接反。

原理图:

PS/2只有四个脚有意义。它们分别是 Clock、Data、VCC 和 GND

DATA接口在使用的时候需要开启内部上拉电阻





坚持写作的第二天,继续加油!