打印

stm32 定时器1 的pwm波输出通道 印象 是不是不正常?

[复制链接]
2372|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子好学者|  楼主 | 2013-3-18 21:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有人遇到吗?
沙发
jiaxinhui| | 2013-3-18 21:55 | 只看该作者
怎么个情况,请说清楚一点,这样大家好帮你分析。

使用特权

评论回复
板凳
电子好学者|  楼主 | 2013-3-19 11:41 | 只看该作者
        //此部分需手动修改IO口设置
     RCC->APB2ENR|=1<<5;

        RCC->APB2ENR|=1<<0;// 打开辅助功能时钟
    RCC->APB2ENR|=1<<11;// 代开定时器1时钟   实际上就开定时器1 的时钟就行了
    RCC->APB2ENR|=1<<6;    //使能PORTe时钟  
        AFIO->MAPR|=3<<6;                  //TIM1完全映射
               
        GPIOE->CRH&=0XF00F0F0F;//Pe9,11,13,14输出
    GPIOE->CRH|=0X0BB0B0B0;//复用输出
            
    TIM1->ARR=arr;//设定计数器自动重装值
        TIM1->PSC=psc;//预分频器不分频
       
        TIM1->CCMR1|=6<<12;  //CH2 PWM2模式                 
        TIM1->CCMR1|=1<<11; //CH2预装载使能          

        TIM1->CCMR1|=6<<4;  //CH1 PWM2模式       
        TIM1->CCMR1|=1<<3;        //CH1预装载使能

               
        TIM1->CCMR2|=6<<12;  //CH4 PWM2模式       
        TIM1->CCMR2|=1<<11;  //CH4

               
        TIM1->CCMR2|=6<<4;  //CH3 PWM2模式       
        TIM1->CCMR2|=1<<3;  //CH3 PWM2模式       

        TIM1->CCER|=1<<4;   //OC2 输出使能 开关位          
        TIM1->CCER|=1<<0;   //OC1 输出使能 开关位
        TIM1->CCER|=1<<8;   //OC3 输出使能 开关位
    TIM1->CCER|=1<<12;  //OC4 输出使能 开关位
        TIM1->BDTR|=1<<15;
    TIM1->CR1|=1<<7; //        APRE使能

        TIM1->DIER|=1<<0;   //允许更新中断                               
        TIM1->DIER|=1<<6;   //允许触发中断                  
        TIM1->DIER|=1<<4;   //允许触发中断
        MY_NVIC_Init(0,1,TIM1_UP_IRQChannel,2);//抢占0,子优先级2,组2       
        MY_NVIC_Init(0,2,TIM1_CC_IRQChannel,2);//抢占0,子优先级2,组2
                                                                                                                                  
         
       
        PWM0_VAL=0;                                                                //设置PWM位为10khz 占空比50%
        PWM1_VAL=0;
        PWM2_VAL=0;
        PWM3_VAL=0;
       

使用特权

评论回复
地板
电子好学者|  楼主 | 2013-3-19 11:42 | 只看该作者
jiaxinhui 发表于 2013-3-18 21:55
怎么个情况,请说清楚一点,这样大家好帮你分析。

        //此部分需手动修改IO口设置
     RCC->APB2ENR|=1<<5;

        RCC->APB2ENR|=1<<0;// 打开辅助功能时钟
    RCC->APB2ENR|=1<<11;// 代开定时器1时钟   实际上就开定时器1 的时钟就行了
    RCC->APB2ENR|=1<<6;    //使能PORTe时钟  
        AFIO->MAPR|=3<<6;                  //TIM1完全映射
               
        GPIOE->CRH&=0XF00F0F0F;//Pe9,11,13,14输出
    GPIOE->CRH|=0X0BB0B0B0;//复用输出
            
    TIM1->ARR=arr;//设定计数器自动重装值
        TIM1->PSC=psc;//预分频器不分频
       
        TIM1->CCMR1|=6<<12;  //CH2 PWM2模式                 
        TIM1->CCMR1|=1<<11; //CH2预装载使能          

        TIM1->CCMR1|=6<<4;  //CH1 PWM2模式       
        TIM1->CCMR1|=1<<3;        //CH1预装载使能

               
        TIM1->CCMR2|=6<<12;  //CH4 PWM2模式       
        TIM1->CCMR2|=1<<11;  //CH4

               
        TIM1->CCMR2|=6<<4;  //CH3 PWM2模式       
        TIM1->CCMR2|=1<<3;  //CH3 PWM2模式       

        TIM1->CCER|=1<<4;   //OC2 输出使能 开关位          
        TIM1->CCER|=1<<0;   //OC1 输出使能 开关位
        TIM1->CCER|=1<<8;   //OC3 输出使能 开关位
    TIM1->CCER|=1<<12;  //OC4 输出使能 开关位
        TIM1->BDTR|=1<<15;
    TIM1->CR1|=1<<7; //        APRE使能

        TIM1->DIER|=1<<0;   //允许更新中断                               
        TIM1->DIER|=1<<6;   //允许触发中断                  
        TIM1->DIER|=1<<4;   //允许触发中断
        MY_NVIC_Init(0,1,TIM1_UP_IRQChannel,2);//抢占0,子优先级2,组2       
        MY_NVIC_Init(0,2,TIM1_CC_IRQChannel,2);//抢占0,子优先级2,组2
                                                                                                                                  
         
       
        PWM0_VAL=0;                                                                //设置PWM位为10khz 占空比50%
        PWM1_VAL=0;
        PWM2_VAL=0;
        PWM3_VAL=0;
       

使用特权

评论回复
5
电子好学者|  楼主 | 2013-3-19 11:43 | 只看该作者
jiaxinhui 发表于 2013-3-18 21:55
怎么个情况,请说清楚一点,这样大家好帮你分析。

这个是我的代码  我想实现的功能 是 有1ms 中断  还有 在通道 产生 匹配中断      pwm波输出   现在程序是有1ms 中断 和pwm波输出  但是匹配中断好奇怪啊

使用特权

评论回复
6
电子好学者|  楼主 | 2013-3-19 16:39 | 只看该作者
jiaxinhui 发表于 2013-3-18 21:55
怎么个情况,请说清楚一点,这样大家好帮你分析。

我是想写  我设置的是 1ms 溢出中断     71+1分频 arr值为1000    那么 我要实现的是    我通道1 和通道2  输出两路pwm波  比如占空比为 500   百分之五十   那么 我通道的4 的占空比就为 250  也就是百分之二十五   那么我设置的是  cnt值为250 时 就会和通道4  ccr4 值匹配  (TIM1->DIER|=1<<4;   //允许触发中断                    MY_NVIC_Init(0,2,TIM1_CC_IRQChannel,2);//抢占0,子优先级2,组2   )中断   然后再 1ms到时   (                       TIM1->DIER|=1<<0;   //允许更新中              TIM1->DIER|=1<<6;   //允许触发中断
  MY_NVIC_Init(0,1,TIM1_UP_IRQChannel,2);//抢占0,子优先级2,组2) 溢出中断  我程序是这样设置的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

119

帖子

1

粉丝