您的位置 首页 应用

根据stm32单片机使用通用定时器输出PWM

基于stm32单片机利用通用定时器输出PWM-第一步:开启时钟使能

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

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

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

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

通用定时器(以下以通用定时器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 位 //使能计数器

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/347126.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部