OpenEdv-开源电子网

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

如何可以使TIM2通过CH4进行pwm输出

[复制链接]

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2015-10-5
在线时间
41 小时
发表于 2018-1-19 18:23:23 | 显示全部楼层 |阅读模式
各位大哥,小弟最近用stm32f429做pwm输出实验,就是想改一下原子哥的事例程序

l两种程序如下

原子哥程序:
void TIM3_PWM_Init(u32 arr,u32 psc)
{                              
    //此部分需手动修改IO口设置
    RCC->APB1ENR|=1<<1;        //TIM3时钟使能   
    RCC->AHB1ENR|=1<<2;       //使能PORTB时钟   
    GPIO_Set(GPIOB,PIN1,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//复用功能,上拉输出
    GPIO_AF_Set(GPIOB,1,2);    //PB1,AF2
   
    TIM3->ARR=arr;            //设定计数器自动重装值
    TIM3->PSC=psc;            //预分频器不分频
    TIM3->CCMR2|=6<<12;      //CH4 PWM1模式         
    TIM3->CCMR2|=1<<11;     //CH4 预装载使能      
    TIM3->CCER|=1<<12;       //OC4 输出使能   
    TIM3->CCER|=1<<13;       //OC4 低电平有效      
    TIM3->CR1|=1<<7;           //ARPE使能
    TIM3->CR1|=1<<0;        //使能定时器3                                             
}  


xt-size-adjust: auto; -webkit-text-strint main(void)
{
u16 led0pwmval=0;
u8 dir=1;
Stm32_Clock_Init(360,25,2,8);//设置时钟,180Mhz
delay_init(180); //初始化延时函数
LED_Init(); //初始化与 LED 连接的硬件接口
TIM3_PWM_Init(500-1,90-1); //1Mhz 的计数频率,2Khz 的 PWM.
while(1)
{
delay_ms(10);
if(dir)led0pwmval++;
else led0pwmval--;
if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;
LED0_PWM_VAL=led0pwmval;
}
}




小弟修改的程序:
void TIM2_PWM_Init(u16 arr,u16 psc)
{
    RCC->APB1ENR |= 1<<0;
    RCC->AHB1ENR |=1<<1;   //open the clock of GPIOB
    GPIO_Set(GPIOB,PIN1,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
    GPIO_AF_Set(GPIOB,1,1); //PB1,AF1
    TIM2->ARR =arr;
    TIM2->PSC =psc;
    TIM2->CCMR2 |= 6<<12;  //CH4 PWM1 模式
    TIM2->CCMR2 |= 1<<11;   //CH4 预装载使能
    TIM2->CCER|=1<<12; //OC4 输出使能
    TIM2->CCER|=1<<13; //OC4 低电平有效
    TIM2->CR1|=1<<7; //ARPE 使能
    TIM2->CR1|=1<<0; //使能定时器 2
}




int main(void)
{
    u16 led0pwmval=0;   
    u8 dir=1;
    Stm32_Clock_Init(360,25,2,8);
    delay_init(180);
    //uart_init(90,115200);
    LED_Init();
    //TIM2_Int_Init(5000-1,9000-1); //10Khz的计数频率,计数5K次为500ms
    TIM2_PWM_Init(500-1,90-1);
    //EXTIX_Init();
    LED0=0;
    //delay_ms(10);
    //delay_ms(300);
    //IWDG_Init(4,1000);
    //WWDG_Init(0x7f,0x5f,3);
    //WWDG_Init(u8 tr,u8 wr, u8 fprer);
    while(1)
    {
        
         delay_ms(10);     
        if(dir)
            led0pwmval++;
        else
            led0pwmval--;     
         if(led0pwmval>300)
            dir=0;
        if(led0pwmval==0)
            dir=1;                           
        LED0_PWM_VAL1=led0pwmval;   
    }
}

这个时候我怀疑定时器2有问题,就用定时器2做了定时器溢出中断实验 发现无任何异常,现在很困惑为什么TIM3能输出pwm,而TIM2就输出不了!!!!


















天是棺材盖,地是棺材底,无论闯哪里,总在棺材里
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2015-10-5
在线时间
41 小时
 楼主| 发表于 2018-1-19 19:07:24 | 显示全部楼层
定时器5也貌似不能输出PWM!!!
天是棺材盖,地是棺材底,无论闯哪里,总在棺材里
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1498
金钱
1498
注册时间
2014-1-3
在线时间
388 小时
发表于 2018-1-19 23:33:08 | 显示全部楼层
查了下资料,TIM2_CH4对应的引脚是PB11。你改一下定义的引脚试试。
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2015-10-5
在线时间
41 小时
 楼主| 发表于 2018-1-20 09:34:25 | 显示全部楼层
witlong 发表于 2018-1-19 23:33
查了下资料,TIM2_CH4对应的引脚是PB11。你改一下定义的引脚试试。

好,谢谢了,我试试!!!
天是棺材盖,地是棺材底,无论闯哪里,总在棺材里
回复 支持 反对

使用道具 举报

12

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1825
金钱
1825
注册时间
2017-9-7
在线时间
501 小时
发表于 2018-1-20 10:51:46 | 显示全部楼层
定时器2和5是32位的吧
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2015-10-5
在线时间
41 小时
 楼主| 发表于 2018-1-20 15:34:06 | 显示全部楼层
亦辰 发表于 2018-1-20 10:51
定时器2和5是32位的吧

是的定时器2和定时器5的确是32位
天是棺材盖,地是棺材底,无论闯哪里,总在棺材里
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2015-10-5
在线时间
41 小时
 楼主| 发表于 2018-1-20 15:38:05 | 显示全部楼层
结贴了,犯这个错误的主要原因是认为所有定时器都可以映射到任意引脚上,实际上这是一个误区,希望大家在以后的学习中注意到这点!!!
天是棺材盖,地是棺材底,无论闯哪里,总在棺材里
回复 支持 反对

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2019-11-21
在线时间
10 小时
发表于 2019-11-27 16:48:09 | 显示全部楼层
我想知道为什么要使能PORTB
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 06:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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