一些概念

PCB设计规范

  • 不走直角线。直角容易造成干扰。135度是权衡后的优选
  • 对信号有要求的,会尽量不过孔或者少过孔

三种信号传输模式:单工半双工全双工

  • 单工:只能发送,不能接收。类似汽车单行道。即只能a传给b。
  • 半双工:发送与接收在同一时间只能进行其中一个。类似乡间小道,一次只能来或去一辆车。即a、b在不同时间里可以相互传播。eg.I2C、RS485。
  • 全双工:发送与接收同时进行。需要至少 有两条线。类似双向道路可以同时行驶两个方向的车辆。 eg.SPI、RS232。

开关电源

  • 自动化中常用
  • 开关电源拥有宽电压输入范围。
  • 开关电源将AC市电进行输入滤波,再以脉冲的方式对晶体管进行开、关(PWM),然后经过变压器降压,最后输出整流滤波得到直流电压DC。
  • 会产生高次谐波,会造成电源污染。
  • 相较于线性电源,能效比高、小体积、轻重量,能扩大输入电压范围。缺点是产生噪音、波纹较大
  • 线性电源:高稳定、波纹较小、干扰和噪声较小。缺点:能效比低、体积重量更大。

面包板

  • 面包板提供快速搭建电路的便利的同时,也引入了一些在高频电路、过长导线等因素下引发的诸如寄生参数高频噪声等问题。

STM32命名规则

  • STM32 系列:高性能、主流、低功耗、无线

img

芯片命名规则

产品规格PDF(en)

  • 系列:主流系列STM32F1
  • 内核:ARM Cortex-M3
  • 频率:72MHz
  • RAM:20KB(即SRAM)
  • ROM:128KB(即FLASH)
  • 供电:2.0V–3.6V(标准电压3.3V)
  • 封装:LQFP48(即48个引脚)

STM32F1 片上资源(外设)Peripheral

  • 片上资源(外设)就是将要学习的主要内容。通过程序配置外设,完成所需的功能
  • 此处列出的外设为系列全部外设,部分芯片型号无部分外设。具体可查数据手册。
英文 名称 简介
NVIC 嵌套中断控制器 配置中断优先级Nested Vectored Interrupt Controller
SysTick 系统定时器 给操作系统提供定时服务的定时器
RCC 复位和时钟控制器 配置时钟、使能各模块时钟(操作外设前必须先使能其时钟)
GPIO 通用输入输出 控制IO口
AFIO 复用IO口 控制引脚复用
EXTI 外部中断 配置外部中断
TIM 定时器 控制定时器(最常用)
ADC 模数转换器 STM内置的12位转换器,将IO口模拟电压转为数字电压
DAC 数模转换器 在IO口直接输出模拟电压
DMA 直接内存访问 将数据从内存拷贝到外设,或从外设拷贝到内存,方便快速传输数据
USART 同步、异步串口通信 串口通信,用于调试,或数据传输
I2C 通信协议,串行总线 用于多设备通信,如传感器等。输出时序波形
SPI 通信协议,串行总线 用于单片机与外设通信,如SD卡等。输出时序波形
CAN 通信协议,串行总线 用于多设备通信,如车机等。输出时序波形
USB 通信协议,串行总线 用于多设备通信,如电脑、手机等。输出时序波形
RTC 实时时钟 用于记录时间年月日时分秒,可接外部电池
CRC CRC校验 用于判断数据的正确性
PWR 电源管理 控制电压、电流、温度等。可让芯片进入睡眠模式来省电
BKP 备份寄存器 用于保存一些数据,如时间、温度等,可接外部电池
IWDG 独立看门狗 芯片被电磁干扰、程序死循环导致死机时复位,保证系统的稳定
WWDG 窗口看门狗 芯片被外部信号导致死机时复位,保证系统的稳定
SDIO SD卡接口 用于单片机与SD卡通信
FSMC 可变静态存储控制器 可用于扩展内部存储,或配置成其他总线协议
USB OTG USB主机接口 让STM32作为USB主机,控制(读取)其他USB设备

启动配置

在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。

BOOT1 BOOT0 启动模式 描述
X 0 主闪存存储器 主闪存存储器被选为启动区域(正常模式)
0 1 系统存储器 系统存储器被选为启动区域(“刷机”模式)
1 1 内置SRAM 内置SRAM被选为启动区域(不常用)

在系统复位后,SYSCLK的第四个上升沿,BOOT引脚的值将被锁存。用户可用通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。

STM32的开发方式

  • 基于寄存器。用程序直接配置寄存器达到我们想要的功能,这是最底层、最直接、高效的方式。但由于STM32的结构复杂、寄存器太多,所以此方式不推荐。
  • 基于函数库的方式。使用ST官方提供封装好的函数。通过调用这些函数来简介地配置寄存器。
  • 基于HAL库的方式,可以用图形化界面快速配置STM32。比较适合快速上手STM32的情况。但这种方式隐藏了底层细节。