[其他] MM32F013x芯片学习-TIM1发互补PWM波形

[复制链接]
 楼主| 9dome猫 发表于 2021-6-28 23:23 | 显示全部楼层 |阅读模式
调试过程中因为疏忽了一个位的操作,导致无输出,一番检查后发现MOE位必须要使能,否则,无波形输出.使能BDTR的MOE位后,波形正常输出,总体操作还是比较简单的,除了MOE没有使能外,其他寄存器的配置很顺利。
 楼主| 9dome猫 发表于 2021-6-28 23:24 | 显示全部楼层
该模块优点是操作简单,可互补输出,插入死区,通道极性可修改,灵活关闭通道,

缺点是当通道被关闭后,无法修改被关闭通道的电平,只能是默认的低电平,这里还不够灵活。
 楼主| 9dome猫 发表于 2021-6-28 23:27 | 显示全部楼层
  1. void TIM1_pwm_init(void)
  2. {
  3.     //pin mux
  4.     RCC->AHBENR |= RCC_AHBENR_GPIOB; //enable GPIOB clock

  5.     //B14->TIM1_CH1
  6.     GPIOB->CRH &=  ~(GPIO_CNF_MODE_MASK << GPIO_CRH_CNF_MODE_14_Pos);
  7.     GPIOB->CRH |= GPIO_CNF_MODE_AF_PP<< GPIO_CRH_CNF_MODE_14_Pos;

  8.     GPIOB->AFRH &= ~GPIO_AFRH_AFR14;
  9.     GPIOB->AFRH |= (GPIO_AF_MODE7 << GPIO_AFRH_AFR14_Pos);

  10.     //B13->TIM1_CH1N
  11.     GPIOB->CRH &=  ~(GPIO_CNF_MODE_MASK << GPIO_CRH_CNF_MODE_13_Pos);
  12.     GPIOB->CRH |= GPIO_CNF_MODE_AF_PP<< GPIO_CRH_CNF_MODE_13_Pos;    

  13.     GPIOB->AFRH &= ~GPIO_AFRH_AFR13;
  14.     GPIOB->AFRH |= (GPIO_AF_MODE2 << GPIO_AFRH_AFR13_Pos);

  15.     //init timer1
  16.     RCC->APB2ENR |= RCC_APB2ENR_TIM1;//enable clock

  17.     TIM1->PSC = 71;// 71+1
  18.     TIM1->ARR = 50;// 50us
  19.     TIM1->DIER |= TIM_DIER_UIEN;//enable update interrupt

  20.     TIM1->CCR1 = 25;//duty

  21.     //oc1 configure
  22.     TIM1->CCMR1 &= ~TIM_CCMR1_CC1S;//output
  23.     TIM1->CCMR1 |= TIM_CCMR1_OC1FE;
  24.     TIM1->CCMR1 |= TIM_CCMR1_OC1PE;
  25.     TIM1->CCMR1 |= TIM_CCMR1_OC1M_PWM1;

  26.     //output control
  27.     TIM1->CCER |= TIM_CCER_CC1EN;
  28.     TIM1->CCER &= ~TIM_CCER_CC1P;
  29.     TIM1->CCER |= TIM_CCER_CC1NEN;
  30.     TIM1->CCER &= ~TIM_CCER_CC1NP;
  31.     //TIM1->CCER |= TIM_CCER_CC1NP;

  32.     //set dead time
  33.     TIM1->CR1 |= TIM_CR1_CKD_DIV4;
  34.     TIM1->BDTR |= 36;// 2us
  35.     
  36.     TIM3->CR1 |= TIM_CR1_ARPE;   //ARPEenable
  37.     TIM1->CR1 |= TIM_CR1_CEN;//counter enable    
  38.     
  39.     TIM1->BDTR |= TIM_BDTR_MOEN;//主输出使能
  40.     

  41.     NVIC_SetPriority(TIM1_BRK_UP_TRG_COM_IRQn,1);
  42.     NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn);    
  43. }
  44.  

  45. void TIM1_BRK_UP_TRG_COM_IRQHandler(void)
  46. {
  47.     if(TIM1->SR & TIM_SR_UIF)
  48.     {
  49.         TIM1->SR &= ~TIM_SR_UIF;

  50.         LED1_TOGGLE;
  51.     }

  52. }
chenjun89 发表于 2021-7-3 08:22 来自手机 | 显示全部楼层
谢谢分享经验
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

1575

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部