(81) 介绍 PWM :
++
++
++
++本板子上远见,就是一个无源的蜂鸣器:
(82) 接着开始查看说明书:
++
++
(83)介绍 PWM 的工作原理:
++
++
++ 每个 PWM 周期结束后都可以重新设置 TCMPBn 与 TCNTBn 寄存器,从而实现更复杂的波形 ,见 sheet 手册。
(84) 接着开始介绍代码编写:
++
++ 从下图可知,蜂鸣器的硬件电路用的是 PWM 的第一个输出:
++ 随后操作 GPIO 的 sheet 与 PWM 的说明书。
++ 由下图可见,虽然寄存器 GPD0CON 是32 bit ,每 4 个 bit 控制一个引脚的属性,但本寄存器只控制 4 个引脚,只用前 16 bit 。
++ 同理 GPD0DAT 与 GPD0PUD ,因为后续代码里 , PWM 配置了 PUD 寄存器,为 0 ,禁止上下拉电阻:
++
++ 继续总结:
++ 这里补充下下拉电阻的概念:
++
++ 利用 arm 汇编的地址访问特性。用结构体可以会更高效。因为 arm 指令恒定 32 位,限制了立即数的长度 。不像 intel 直接可以 mov 恒大的常量。这里的 TCFG0/1 的 CFG 应该就是 configure 的意思:
++开始设置 PWM 的一系列寄存器,配置输出频率。死区不用设置 :
++
++补充时钟频率的计算:
++
++
++上图装载时使用 0xff 的另一个解释就是设置了第 4 bit ,死区为 0 。
++
(85)
谢谢