当前位置:首页 > 单片机 > 单片机
[导读]通用定时器(以下以通用定时器3,通道3 为例):第一步:开启时钟使能RCC->APB1ENR:1 位 //开启定时器3 时钟使能第二步:设置定时器分频与装载计数值(以一周期 1ms)TIM3->PSC = 7199; //系统时钟为 72M 经 (7199+

通用定时器(以下以通用定时器3,通道3 为例):

第一步:开启时钟使能

RCC->APB1ENR:1 位 //开启定时器3 时钟使能

第二步:设置定时器分频与装载计数值(以一周期 1ms)

TIM3->PSC = 7199; //系统时钟为 72M 经 (7199+1) 分频后,定时器时钟为 10k(一周期为0.1ms)

TIM3->ARR = 9; //计数周期为 0.1ms * (9+1) = 1ms

第三步:使能定时器

TIM3->CR1:0 位 //开启计数器,开始计时

第四步:溢出中断使能

TIM3->DIER:0 位 //开启溢出中断

第五步:

void TIM3_IRQHandler(void);

利用通用定时器输出 PWM(以下以通用定时器3,通道3 为例):

第一步:开启时钟使能

RCC->APB1ENR:1 位 //开启定时器3 时钟使能

RCC->APB2ENR:3 位 //定时器3 对应 PB0 口,开启 GPIOB 时钟使能

RCC->APB2ENR:0 位 //开启复用功能时钟使能

第二步:配置 PB0 口模式

GPIOB->CRL &= 0xFFFFFFF0; //清空 PB0 模式配置

GPIOB->CRL |= 0x0000000B; //复用推挽输出

GPIOB->ODR |= 0x00000001; //拉高

第三步:设置定时器分频与装载计数值(以一周期 1ms)

TIM3->PSC = 7199; //系统时钟为 72M 经 (7199+1) 分频后,定时器时钟为 10k(一周期为0.1ms)

TIM3->ARR = 9; //计数周期为 0.1ms * (9+1) = 1ms

TIM3->CR1:7 位 //1 当修改TIM3->ARR 时会马上修改 ARR,0 会在下一个计数周期才修改

第四步:设置 PWM 输出模式,有效电平为高

TIM3->CCMR2 &= ~(7<<4); //清空定时器3,通道3 的PWM输出模式

TIM3->CCMR2 |= 6<<4; //设置定时器3,通道3 为 PWM模式1

TIM3->CCER: 1 位 //0 有效电平为高,1 有效电平为低

第五步:设置高电平占空比(CCRx,x 代表该定时器的通道)

TIM3->CCR3 //当 TIM3->CNT 计数器当前值小于 TIM3->CRR3 时,输出有效电平

第六步:使能计数器

TIM3->CR1: 0 位 //使能计数器


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭