看手册流程
1、打开扩展板原理图、找到蜂鸣器、风扇、震动马达
找到对应的引脚
蜂鸣器:TIM4 CH1(第4个控制器第一个通道)
风扇:TIM1 CH1(第1个控制器第一个通道)
震动马达:TIM16 CH1(第16个控制器第一个通道)
------------------------------------------------------------
2、打开转接板的原理图,找到连接SOC的引脚
蜂鸣器:TIM4 CH1 PB6(接到B组的第6个引脚)GPIOB
风扇:TIM1 CH1 PE9(接到E组的第9个引脚)GPIOE
震动马达:TIM16 CH1 PF6(接到F组的第6个引脚)GPIOF
------------------------------------------------------------------------
3、确定TIM1、TIM4、TIM16、GPIOB、GPIOE、GPIOF、RCC(复位时钟控制器)
外设分别连接到哪根总线上、以及外设寄存器的基地址
TIM1--->总线 :APB2 基地址:0x44000000
TIM4--->总线 :APB1 基地址:0x40002000
TIM16--->总线 :APB2 基地址:0x44007000
GPIOB--->总线 :AHB4 基地址:0x50003000
GPIOE--->总线 :AHB4 基地址:0x50006000
GPIOF--->总线 :AHB4 基地址:0x50007000
RCC--->总线 :AHB4 基地址:0x50000000
--------------------------------------------------------------------
以蜂鸣器为例
----------------------------
4、分析RCC章节,使用GPIOB\TIM4外设的时钟源
RCC_MP_APB1ENSETR(APB1总线上的外设时钟源使能设置寄存器)
Address offset(偏移量): 0xA00
设置TIM4外设的时钟使能 RCC_MP_APB1ENSETR[2]
RCC->MP_APB1ENSETR |= (0x1 << 2);
RCC_MP_AHB4ENSETR(AHB4总线上的外设时钟源使能设置寄存器)
Address offset: 0xA28
设置GPIOB外设的时钟使能 RCC_MP_AHB4ENSETR[1]
RCC->MP_AHB4ENSETR |= (0X1 << 1);
pwm实验
pwm :脉冲宽度调制
频率(F):1s产生方波信号的个数,单位Hz
周期(T):每个方波信号的时间,单位s
周期和频率成倒数的关系:T = 1 / F F = 1 / T
占空比:一个方波信号中,高电平时间占整个方波信号周期的百分比。
PWM的使用的场合:蜂鸣器的声音的调节,电机的调速,呼吸灯,屏幕的背光
------------------------------------------------------
蜂鸣器
--------------
有源蜂鸣器:
------------------
有源蜂鸣器内部有一个RC震荡源,
只要给有源蜂鸣器提供一个电源信号,
就可以控制内部的RC震荡源产生一个一定频率的方波信号,
控制有源蜂鸣器发出声音。
因此有源蜂鸣器一般使用高低电平进行驱动。
有源蜂鸣器驱动简单,但是不可以发出不同的声音。
----------------------------------------------------
无源蜂鸣器:
---------------------
无源蜂鸣器内部没有RC震荡源,
因此无源蜂鸣器需要提供一个高低电平变化的信号,
一般使用PWM进行驱动。
改变PWM方波信号的频率,
就可以让无源蜂鸣器发出不同的声音。
---------------------------------------------------------
ARR:自动重载寄存器
CCRx :捕获比较寄存器
通用定时器
通用定时器 (TIM2/TIM3/TIM4/TIM5)
通用定时器包含一个 16 位或 32 位自动重载计数器,
该计数器由可编程预分频器驱动。
可用于多种用途,包括测量输入信号的脉冲宽度(输入捕获)
或生成输出波形(输出比较和PWM)。
这些定时器彼此完全独立,不共享任何资源。
TIM2/TIM3/TIM4/TIM5主要特性
通用 TIMx 定时器具有以下特性:
----------------------------------------------------
16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5)
递增、递减和递增/递减自动重载计数器。
---------------------------------------------------
16 位可编程预分频器,用于对计数器时钟频率进行分频
(可在运行时修改),分频系数介于 1 到 65535 之间。
--------------------------------------------------
多达 4 个独立通道,可用于:
– 输入捕获
– 输出比较
– PWM 生成(边沿和中心对齐模式)
– 单脉冲模式输出
使用外部信号控制定时器且可实现多个定时器互连的同步电路。
发生如下事件时生成中断/DMA 请求:
– 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
– 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
– 输入捕获
– 输出比较
支持定位用增量(正交)编码器和霍尔传感器电路
触发输入用作外部时钟或逐周期电流管理
------------------------------------------------------------
时基单元
----------------------------
可编程定时器的主要模块由一个16位/32位计数器
及其相关的自动重装寄存器组成。
计数器可递增计数、递减计数或交替进行递增和递减计数。
计数器的时钟可通过预分频器进行分频。
计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。
即使在计数器运行时也可执行读写操作。
------------------------------------------------
时基单元包括:
计数器寄存器 (TIMx_CNT)
预分频器寄存器 (TIMx_PSC)
自动重载寄存器 (TIMx_ARR)
-------------------------------------------------
自动重载寄存器是预装载的。
对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。
预装载寄存器的内容既可以立即传送到影子寄存器,
也可以在每次发生更新事件 (UEV) 时传送到影子寄存器,
这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 (ARPE)。
当计数器达到上溢值(或者在递减计数时达到下溢值)
并且 TIMx_CR1 寄存器中的 UDIS 位为0时,将发送更新事件。
该更新事件也可由软件产生。