网站底部导航制作,净化网络环境网站该怎么做,招聘网站开发计划书,17做网站联系功能
它有基本定时器所有功能#xff0c;还增加以下功能
TIM2、TIM3、TIM4、TIM5
多种时钟源#xff1a;
外部时钟源模式1#xff1a;
每个定时器有四个输入通道
只有通道1和通道2的信号可以作为时钟信号源
通道1 和通道2 的信号经过输入滤液和边缘检测器
外部时钟源…功能
它有基本定时器所有功能还增加以下功能
TIM2、TIM3、TIM4、TIM5
多种时钟源
外部时钟源模式1
每个定时器有四个输入通道
只有通道1和通道2的信号可以作为时钟信号源
通道1 和通道2 的信号经过输入滤液和边缘检测器
外部时钟源模式2
可以向上计数也可以向下计数还可以两者都用中央对其模式
输入捕获
输出比较
PWM生成
支持针对定位的增量正交编码器和霍尔传感器电路。
框图 通用定时器相关寄存器
捕获比较寄存器TIMx_CCMR1有四个输入捕获输出比较
输出比较8种模式三位来控制 冻结 强制输出高电平条件计数器比较寄存器 强制输出低电平条件计数器比较寄存器 输出翻转等于60 会将电平翻转 强制输出高电平无条件 强制输出低电平无条件 PWM模式1CNTCCR 输出低电平 CNTCCR 输出高电平 PWM模式2CNTCCR 输出低电平 CNTCCR 输出高电平 OC1M和OC2M是相同的。 先配置CC2S位配置输入还是输出。 CCM2 剩下两个通道 CCEN 使能 CCR1 比较的值 计数器寄存器TIM_CNT 计数器的值 CR1控制寄存器 配置计数方式中央 案例1LED呼吸灯——PWM脉冲
需求
使用通用定时器的输出比较功能
(输出比较功能)专门输出PWM脉冲
输出占空比可调的PWM波形作用到二极管使二极管LED2呈现呼吸灯的效果。
PWM波 PWMPuls-width modulation脉冲宽度调制不停地修改高电平的宽度。一般用于控制点击、LED亮度调节等应用。 被控制的电路必须要有一定的“惯性”。 所谓惯性时指比如LED即使断电了也不会立即熄灭点击断定了也不会立即停止。 三个参数周期、频率、占空比 正脉冲的持续时间与脉冲总周期的比值。 输出比较原理
比较寄存器的值和计数器的进行大小比较
根据比较结果 不同产生不同的输出高电平或者低电平。
比较寄存器中的值不会变计数器的值会变大或者变小
tim5.c
#include tim5.hvoid TIM5_Init(void){//1. GPIO PA1的配置是默认复用功能不需要AFIO1//1.1 放时钟RCC-APB2ENR | RCC_APB2ENR_IOPAEN;//复用推挽GPIOA-CRL | GPIO_CRL_CNF1_1;GPIOA-CRL ~GPIO_CRL_CNF1_0;GPIOA-CRL | GPIO_CRL_MODE1;//2.定时器 tim5 的配置//2.1 先放时钟RCC-APB1ENR | RCC_APB1ENR_TIM5EN;//三大块// 控制器时钟源配置 默认不改就是就是72MHz//时基单元//输入和输出通道//2.2 时基单元//2.2.1 计数方向默认像上其实可以不用配置TIM5-CR1 | TIM_CR1_DIR;//2.2.2 预分频 TIM5-PSC 7200 - 1;//2.2.3 自动重装载TIM5-ARR 100 - 1;//3 输入输出通道//3.1 让通道2使用输出模式默认就是输出可以不用配置TIM5-CCMR1 ~TIM_CCMR1_CC2S;//3.2 配置比较寄存器 具体的比较模式 8选1 我们选择PWM模式1TIM5-CCMR1 | (TIM_CCMR1_OC2M_1|TIM_CCMR1_OC2M_2);TIM5-CCMR1 ~TIM_CCMR1_OC2M_0;//3.3 低电平有效为了让CCR的值 能很好地表示亮度TIM5-CCER | TIM_CCER_CC2P;
}void TIM5_PWMStart(void){//计数器是使能TIM5-CR1 | TIM_CR1_CEN;//通道2使能TIM5-CCER | TIM_CCER_CC2E;
}void TIM5_PWMStop(void){//关闭计数器使能TIM5-CR1 ~TIM_CR1_CEN;//关闭通道2使能TIM5-CCER ~TIM_CCER_CC2E;
}void TIM5_SetDuty(uint16_t duty){TIM5-CCR2 duty;
}tim5.h
#ifndef __TIM5_H__
#define __TIM5_H__#include stm32f10x.hvoid TIM5_Init(void);void TIM5_PWMStart(void);void TIM5_PWMStop(void);void TIM5_SetDuty(uint16_t duty);#endif /* __TIM5_H__ */main.c
#include usart1.h
#include string.h
#include stdio.h
#include m24c02.h
#include i2c.h
#include led.h
#include systick.h
#include tim6.h
#include tim5.htypedef enum {LIGHT,DARK}LED_DIRCT;int main(void)
{TIM5_Init();TIM5_PWMStart();LED_DIRCT direct LIGHT;while (1){if (direct LIGHT){for (uint8_t i 0; i 100; i){TIM5_SetDuty(i);Delay_ms(10);}direct DARK;}else if(direct DARK){for (uint8_t i 0; i 100; i){TIM5_SetDuty(99-i);Delay_ms(10);}direct LIGHT;}}
}