一些概念
PCB设计规范
- 不走直角线。直角容易造成干扰。135度是权衡后的优选
- 对信号有要求的,会尽量不过孔或者少过孔
三种信号传输模式:单工
、半双工
、全双工
。
- 单工:只能发送,不能接收。类似汽车单行道。即只能a传给b。
- 半双工:发送与接收在同一时间只能进行其中一个。类似乡间小道,一次只能来或去一辆车。即a、b在不同时间里可以相互传播。eg.I2C、RS485。
- 全双工:发送与接收同时进行。需要至少 有两条线。类似双向道路可以同时行驶两个方向的车辆。 eg.SPI、RS232。
开关电源
- 自动化中常用
- 开关电源拥有宽电压输入范围。
- 开关电源将AC市电进行输入滤波,再以脉冲的方式对晶体管进行开、关(PWM),然后经过变压器降压,最后输出整流滤波得到直流电压DC。
- 会产生高次谐波,会造成电源污染。
- 相较于线性电源,能效比高、小体积、轻重量,能扩大输入电压范围。缺点是产生噪音、波纹较大
- 线性电源:高稳定、波纹较小、干扰和噪声较小。缺点:能效比低、体积重量更大。
面包板
- 面包板提供快速搭建电路的便利的同时,也引入了一些在高频电路、过长导线等因素下引发的诸如寄生参数、高频噪声等问题。
STM32命名规则
- STM32 系列:高性能、主流、低功耗、无线
产品规格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的情况。但这种方式隐藏了底层细节。