• 大小: 10KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: 其他
  • 标签: SPWM  STM32F10  波形  

资源简介

使用STM32的内部定时器和DMA来产生一路或两路互补的SPWM波

资源截图

代码片段和文件信息

#include “stm32f10x.h“

#define TIM1_CCR3_Address    0x40012C3C
#define MAX_TABLE 180

TIM_TimebaseInitTypeDef  TIM_TimebaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
uint16_t SRC_Buffer[MAX_TABLE] = {
1000103310661099113211651198123012621294132513561386141614461475
1503153115581585161116361660168317061728174917691788180618231839
1854186818811893190419131922192919361941194519481949195019491948
1945194119361929192219131904189318811868185418391823180617881769
1749172817061683166016361611158515581531150314751446141613861356
13251294126212301198116511321099106610331000 967 934 901 868 835
 802 770 738 706 675 644 614 584 554 525 497 469 442 415 389 364
 340 317 294 272 251 231 212 194 177 161 146 132 119 107  96  87
  78  71  64  59  55  52  51  50  51  52  55  59  64  71  78  87
  96 107 119 132 146 161 177 194 212 231 251 272 294 317 340 364
 389 415 442 469 497 525 554 584 614 644 675 706 738 770 802 835
 868 901 934 967
};
ErrorStatus HSEStartUpStatus;

/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void DMA_Configuration(void);

int main(void)
{
  RCC_Configuration();
  GPIO_Configuration();
  DMA_Configuration();

  /* TIM1 Peripheral Configuration --------------------------------------------*/
  /* Time base configuration */
  TIM_TimebaseStructure.TIM_Prescaler = 0;
  TIM_TimebaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimebaseStructure.TIM_Period = 2000-1;//72M/x=frq R*C=0.025 R=100Kc=100000p=0.1uf=0.0000001f
  TIM_TimebaseStructure.TIM_ClockDivision = 0;
  TIM_TimebaseStructure.TIM_RepetitionCounter = 2;

  TIM_TimebaseInit(TIM1 &TIM_TimebaseStructure);

  /* Channel 3 Configuration in PWM mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 50;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

  TIM_OC3Init(TIM1 &TIM_OCInitStructure);

  /* TIM1 Update DMA Request enable */
  TIM_DMACmd(TIM1 TIM_DMA_Update ENABLE);

  /* TIM1 counter enable */
  TIM_Cmd(TIM1 ENABLE);

  /* Main Output Enable */
  TIM_CtrlPWMOutputs(TIM1 ENABLE);

  while (1)
  {}
}

void RCC_Configuration(void)
{
  SystemInit();

  /* TIM1 GPIOA and GPIOB clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA |
                         RCC_APB2Periph_GPIOB ENABLE);
  /* DMA clock enable */
  RCC_AHBPeriphClock

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4478  2013-07-22 18:58  User\main.c

     文件       3259  2011-04-04 19:03  User\stm32f10x_conf.h

     文件       4405  2011-04-04 19:03  User\stm32f10x_it.c

     文件       2086  2011-04-04 19:03  User\stm32f10x_it.h

     文件      36557  2011-04-04 19:03  User\system_stm32f10x.c

     目录          0  2013-07-06 16:05  User\MyCHFile

     目录          0  2013-07-22 18:58  User

----------- ---------  ---------- -----  ----

                50785                    7


评论

共有 条评论