网站正能量点进去就能看,腾讯企业邮箱注册申请,优质企业网站开发,泉州网页设计制作一、基础知识
1、寄存器的配置
#xff08;1#xff09;GPIOX_AFRL#xff1a;GPIO复用功能低位寄存器
GPIOX_AFRH#xff1a;GPIO复用功能高位寄存器
#xff08;2#xff09;配置PA5 GPIOA-MODER#xff08;端口模式寄存器#xff09;#xff0c;10为复用功…一、基础知识
1、寄存器的配置
1GPIOX_AFRLGPIO复用功能低位寄存器
GPIOX_AFRHGPIO复用功能高位寄存器
2配置PA5 GPIOA-MODER端口模式寄存器10为复用功能是指除了普通输入/出还有其他功能TIM等
3GPIO-OTYPER0为推挽1为开漏输出推挽输出在示波器上看主要为方波形而开漏在示波器显示为锯齿波。但要注意使PUPDR设置为上拉电阻状态。
4GPIOX_OSPEED端口输出速度寄存器低速 2MHz中速 10~25MHz 高速 20~50MHz具体的大小与对应连接的电压和电容相关。
5设置AFRL寄存器AF0~15指GPIOX的16种模式一般AF0~7可改4~6仅限GPIOA8~15保留AFR[0]指GPIOX_AFRL寄存器管理0~7个管脚AFR[1]指GPIOX_AFRH寄存器管理8~15个管脚。
6TIM_CCER捕获使能寄存器使能输入捕获必须设置CC1E 1
7TIM_CCR1捕获/比较寄存器1用来存储捕获发生时TIMX_CNT值通过了一次上升沿捕获与下降沿捕获差值可算出高电平脉冲宽度。
2、占空比的计算
占空比(Duty Cycle)是脉冲信号中高电平持续时间与整个周期时间的比率。它通常用于描述脉冲宽度调制(PWM)信号其中信号在一定频率下在高电平和低电平之间切换。
设置寄存器ARR的值确定周期设置CCRx值设置占空比CNT小于CCR时输出为高CNT大于CCR输出为低占空比 CCR/ARR 高电平时间/周期 3、实现逻辑原理
1PWM波利用微处理器的数字输出来控制模拟电路
2STM32没有专门的PWM引脚所以采用IO口的复用模式
3TIM1是STM32高级定时器它的每个通道都有对应的互补通道来互补输出PWM
4STM32的定时器除了TIM6和TIM7其他定时器都可用来产生PWM输出。
5面积等效原理只要正弦波与t坐标轴围起来阴影面积相同不管哪种电压波形效果大概相同 二、功能需求
开发呼吸灯功能即LED灯一亮一灭亮灭交替周而复始。亮灭时长约为1s。
三、设计思路
将PA5配置为TIM2的CH1输出。采用定时器TIM2产生PWM波形周期为2s且占空比为50%即1s时长的低电平、1s时长的高电平。
四、软件流程图 五、程序设计
1、PWM输出端口初始化
采用PwmOutInit函数实现PA5复用为TIM2的CH1输出。代码如下
void PwmOutInit(void)
{RCC-AHB1ENR|10; //使能GPIOAGPIOA-MODER(GPIOA-MODER~(0x310))|(0x210); //设置PA5为AF复用、推挽输出、无上拉、无下拉、中速GPIOA-OTYPER~(15); GPIOA-PUPDR~(0x310);GPIOA-OSPEEDR(GPIOA-OSPEEDR~(0x310))|(110);GPIOA-AFR[0](GPIOA-AFR[0]~(0xF20))|(120); //设置AFRL寄存器将PA5复用为TIM2的CH1输出
}
2、定时器初始化函数
采用TimerInit函数实现定时器2的参数配置。
时钟源TIMCLK的频率为16MHz设计预分频系数N2000计数器分频系数M16000那么共320万个分频定时时长为M*N/TIMCLK 2s。因此预分频寄存器PSC的值为N-1 1999自动重载寄存器ARR的值为M-1 15999.比较寄存器为计数器自动重载值的一半即8000.具体代码如下
void TimerInit(void)
{RCC-APB1ENR |10; //使能TIM2TIM2-CR1 17; //配置为自重载预载使能、边沿对齐、向上计数工作模式TIM2-PSC 1999; //16MHz/2000 8KHzTIM2-ARR 15999; //8KHz/160000.5Hz,PWM周期为2sTIM2-CCMR1 (TIM2-CCMR1~(0x00FF))|0x68; //配置CH1为PWM1输出模式TIM2-CCER |1; //使能比较通道1作为输出TIM2-CCR1 8000; //占空比50%TIM-CR1 |1; //开启TIM2
}