STM32F407ZGT6 双路 互补PWM

2019-07-20 19:10发布

求救:   要做一个  STM32F407ZGT6  双路 互补PWM    网上找的一个程序,可以编译通过,下载,但是为什么在探索者开发板  的PE8, PE9, 等相关脚示波器没有波形 ?

/************************************  
    标题:死区互补PWM  
    软件平台:IAR for ARM6.21  
    硬件平台:stm32f4-discovery  
    主频:168M  

    描述:三对死区互补PWM、一路普通PWM  
          PE8 ----- TIM1_CH1N  
          PE9 ----- TIM1_CH1  
          PE10 ----- TIM1_CH2N  
          PE11 ----- TIM1_CH2  
          PE12 ----- TIM1_CH3N  
          PE13 ----- TIM1_CH3  
          PE14 ----- TIM1_CH4  

    author:小船  
    data:2012-02-09  
******************************************
//         配置步骤:
//1.     使能相关时钟。
//2.     配置相关的引脚模式、速度、以及复用功能。
//3.     使能TIM时钟
//4.     设置分频。
//5.     设置周期。(ARR的值)周期=(PSC+1)* ARR / TIMx时钟
//6.     产生一次更新事件,更新影子寄存器的值。
//7.     在CCMR中设置PWM模式。
//8.     设置各通道占空比。占空比= CCRx / ARR。
//9.     使能比较输出。
//10.  启动预装载。
//11.  死区时间设定,使能输出。
//12.  打开定时器。

*************************************/  

#include <stm32f4xx.h>   

int main (void)  
{     

  SCB->AIRCR = 0x05FA0000 | 0x400;  //中断优先级分组 抢占:响应=3:1  

  RCC->AHB1ENR |= (1<<4); //打开GPIOE时钟  
  GPIOE->MODER |= 0X2AAA0000;//PE8、9、10、11、12、13、14第二功能  
        //推挽输出  
  GPIOE->OSPEEDR |= 0x3fff0000;//速度100m  
  GPIOE->PUPDR |= 0x15550000;//上拉   

  //PE8、9、10、11、12、13、14第二功能AF1  
  GPIOE->AFR[1] |= 0x01111111;  

  RCC->APB2ENR |= (1<<0); //打开TIM1时钟  
  TIM1->PSC = 167; //对时钟168M进行168分频,使得计数频率为1M  
  TIM1->ARR = 10000;  //周期10ms  
  TIM1->EGR |= 1; //产生一次更新事件  

  TIM1->CCMR1 |= 0x6060;//PWM模式1  
  TIM1->CCMR2 |= 0x6060;//PWM模式1  

  TIM1->CCR1 = 8000;//设置占空比  
  TIM1->CCR2 = 6000;  
  TIM1->CCR3 = 4000;  
  TIM1->CCR4 = 2000;  

  TIM1->CCER |= 0x1ddd;//使能比较输出  

  TIM1->CCMR1 |= 0x0808;//启动预装载  
  TIM1->CCMR2 |= 0x0808;  

  TIM1->BDTR|=1<<15;    // 刹车使能位置1,开启所有输出通道  
  TIM1->BDTR|=0xCD;     // 死区时间设定  
  TIM1->CR1 |= 1; //开始计时  

  while(1)  
  {  
  };  
}  


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。