资 源 简 介
STM32 系列微控制器均含有 DMA 和 通 用 时 钟
TIMx模块。其低端型号中仅包含 DMA1,支 持 7 个 通
道;高端型号还包括 DMA2,支 持5个 通 道。它 的 每 个 通
道可任意指定工作模式,如内存到内存、内存到外设或外设
到内存等。当涉及到外设时,一 般 是 由 外 设 来 触 发 DMA
的一次传输,如串口收到数据的标志位可触发 DMA。
DMA 的每次传输都分为4个阶段:申请仲裁、地址计
算、总线存取和应答。除总线存取阶段,其 他3个 阶 段 都
只需要一个系统周期,并且不占用总线,可 在 DMA 控 制
器内部并发地执行。总线存取阶段,每 个 字(4字 节)的 传
输需要3个系统周期。DMA 和 CPU 工作在交替方式下,
不会相互阻塞。DMA 各个通道可独立设置优先级,当 访
问同一资源时高优先级通道先获得资源。
DMA 的 使 用 比 较 简 单,每 路 DMA 仅 包 括4个 寄 存
器,用于指定 DMA 的工作模式、源地址、目标地址 和 传 输
次数。ST公司提供了很好的驱动库,简化了外设的使用,
方便阅读和移植。本文采用库函数来展示功能。
其通用时钟是很有特色的外围模块,可实现多种复杂
的功能。时钟模块内部主要包含一个计数器和4个 通 道
的比较/捕获寄存器。时钟可工作在捕获或比较模式。在
捕获模式下,若有对应 的 触 发 信 号,计数器的值会保存到
比较/捕获寄存器,并触发中断或 DMA;在比较模式下,若
计数器的值与比较/捕获寄存器的值相等,则 对 外 输 出 预
选设定好的信号,如高电平、低电平或电平反转等。