OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2992|回复: 2

关于定时器2、3、4、5的PWM波输出问题

[复制链接]

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2016-3-1
在线时间
17 小时
发表于 2016-3-28 21:06:30 | 显示全部楼层 |阅读模式
15金钱
我仿照例程里TIM1的PWM输出实验,分别写了TIM2、3、4、5的PWM输出实验,仿真时候成功输出了TIM2、3的PWM波,但是仿真不出TIM4、5的波形?具体程序如下:


void TIM2_PWM_init(u16 arr,u16 psc)
{
        RCC->APB1ENR|=1<<0; //TIM2 时钟使能
       
        RCC->APB2ENR|=1<<2;    //使能PORTA时钟         
        GPIOA->CRL&=0XFFFFFFF0; //PA8 清除之前的设置
        GPIOA->CRL|=0X0000000B; //复用功能输出
       
        TIM2->ARR=arr; //设定计数器自动重装值
        TIM2->PSC=psc; //预分频器设置
       
        TIM2->CCMR1|=7<<4; //CH1 PWM2 模式
        TIM2->CCMR1|=1<<3; //CH1 预装载使能
        TIM2->CCER|=1<<0; //OC1 输出使能(通道2)
//        TIM2->BDTR|=1<<15; //MOE 主输出使能
        TIM2->CR1=0x0080; //ARPE 使能
        TIM2->CR1|=0x01; //使能定时器 1
}

void TIM3_PWM_init(u16 arr,u16 psc)
{
        RCC->APB1ENR|=1<<1; //TIM3 时钟使能
       
        RCC->APB2ENR|=1<<2;    //使能PORTA时钟         
        GPIOA->CRL&=0XF0FFFFFF; //PA8 清除之前的设置
        GPIOA->CRL|=0X0B000000; //复用功能输出
       
        TIM3->ARR=arr; //设定计数器自动重装值
        TIM3->PSC=psc; //预分频器设置
       
        TIM3->CCMR1|=7<<4; //CH1 PWM2 模式
        TIM3->CCMR1|=1<<3; //CH1 预装载使能
        TIM3->CCER|=1<<0; //OC1 输出使能
//TIM3->BDTR|=1<<15; //MOE 主输出使能
        TIM3->CR1=0x0080; //ARPE 使能
        TIM3->CR1|=0x01; //使能定时器 1
}

void TIM4_PWM_init(u16 arr,u16 psc)
{
        RCC->APB1ENR|=1<<2; //TIM4 时钟使能
       
        RCC->APB2ENR|=1<<3;    //使能PORTb时钟         
        GPIOA->CRL&=0XF0FFFFFF; //PA8 清除之前的设置
        GPIOA->CRL|=0X0B000000; //复用功能输出
       
        TIM4->ARR=arr; //设定计数器自动重装值
        TIM4->PSC=psc; //预分频器设置
       
        TIM4->CCMR1|=7<<4; //CH1 PWM2 模式
        TIM4->CCMR1|=1<<3; //CH1 预装载使能
        TIM4->CCER|=1<<0;  //OC1 输出使能
//TIM4->BDTR|=1<<15; //MOE 主输出使能
        TIM4->CR1=0x0080;  //ARPE 使能
        TIM4->CR1|=0x01;   //使能定时器 1
}

void TIM5_PWM_init(u16 arr,u16 psc)
{
        RCC->APB1ENR|=1<<3; //TIM5 时钟使能
       
        RCC->APB2ENR|=1<<2;    //使能PORTA时钟         
        GPIOA->CRL&=0XFFFFFF0F; //PA8 清除之前的设置
        GPIOA->CRL|=0X000000B0; //复用功能输出
       
        TIM5->ARR=arr; //设定计数器自动重装值
        TIM5->PSC=psc; //预分频器设置

        TIM5->CCMR1|=7<<4; //CH1 PWM2 模式
        TIM5->CCMR1|=1<<3; //CH1 预装载使能
        TIM5->CCER|=1<<4; //OC1 输出使能
//TIM5->BDTR|=1<<15; //MOE 主输出使能
        TIM5->CR1=0x0080; //ARPE 使能
        TIM5->CR1|=0x01; //使能定时器 1
}


main程序:
        TIM1_PWM_init(7200,10000);//周期1s
        TIM3_PWM_init(7200,5000);//周期0.5s
       
        TIM2_PWM_init(7200,20000);
        TIM4_PWM_init(7200,10000);
        TIM5_PWM_init(7200,10000);
       
       
        PWM1_VAL=3600;
        PWM2_VAL=3600;
        PWM3_VAL=3600;
        PWM4_VAL=3600;
        PWM5_VAL=3600;


顺带提一下,TIM4输出脚是PB6,TIM5输出脚是PA1,应该没错吧!

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2016-3-1
在线时间
17 小时
 楼主| 发表于 2016-3-28 21:06:31 | 显示全部楼层
回复

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2016-3-1
在线时间
17 小时
 楼主| 发表于 2016-3-28 21:07:41 | 显示全部楼层
求助原子大哥哥!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 16:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表