⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.c

📁 STM32F RFID通讯源代码(支持双向发送接收)
💻 C
字号:
#include "stm32f10x_lib.h"
#include "pwm.h"

TIM1_TimeBaseInitTypeDef  TIM1_TimeBaseStructure;
TIM1_OCInitTypeDef  TIM1_OCInitStructure;
TIM1_BDTRInitTypeDef TIM1_BDTRInitStructure;
extern GPIO_InitTypeDef GPIO_InitStructure;

void InitPWM(void) {

  // Enable GPIOA and GPIOB clock
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

  // GPIOA Configuration: Channel 1
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  // Enable TIM1 clock
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

  // TIM1 Peripheral Configuration
  TIM1_DeInit();

  // Time Base configuration
  TIM1_TimeBaseStructure.TIM1_Prescaler = 0x0;
  TIM1_TimeBaseStructure.TIM1_CounterMode = TIM1_CounterMode_Up;
  // TIM1_TimeBaseStructure.TIM1_Period = 0xFFF; // 12 bit
  TIM1_TimeBaseStructure.TIM1_Period = 0x3FF; // 10 bit
  TIM1_TimeBaseStructure.TIM1_ClockDivision = 0x0;
  TIM1_TimeBaseStructure.TIM1_RepetitionCounter = 0x0;
  TIM1_TimeBaseInit(&TIM1_TimeBaseStructure);


  // Channel 1 Configuration in PWM mode
  TIM1_OCInitStructure.TIM1_OCMode = TIM1_OCMode_PWM2;
  TIM1_OCInitStructure.TIM1_OutputState = TIM1_OutputState_Enable;
  TIM1_OCInitStructure.TIM1_OutputNState = TIM1_OutputNState_Enable;
  TIM1_OCInitStructure.TIM1_Pulse = 0x3FF;
  TIM1_OCInitStructure.TIM1_OCPolarity = TIM1_OCPolarity_Low;
  TIM1_OCInitStructure.TIM1_OCNPolarity = TIM1_OCNPolarity_Low;
  TIM1_OCInitStructure.TIM1_OCIdleState = TIM1_OCIdleState_Set;
  TIM1_OCInitStructure.TIM1_OCNIdleState = TIM1_OCIdleState_Reset;
  TIM1_OC1Init(&TIM1_OCInitStructure);

  // Automatic Output enable, Break, dead time and lock configuration
  TIM1_BDTRInitStructure.TIM1_OSSRState = TIM1_OSSRState_Enable;
  TIM1_BDTRInitStructure.TIM1_OSSIState = TIM1_OSSIState_Enable;
  TIM1_BDTRInitStructure.TIM1_LOCKLevel = TIM1_LOCKLevel_1;
  TIM1_BDTRInitStructure.TIM1_DeadTime = 0x05;
  TIM1_BDTRInitStructure.TIM1_Break = TIM1_Break_Disable;
  TIM1_BDTRInitStructure.TIM1_BreakPolarity = TIM1_BreakPolarity_High;
  TIM1_BDTRInitStructure.TIM1_AutomaticOutput = TIM1_AutomaticOutput_Enable;
  TIM1_BDTRConfig(&TIM1_BDTRInitStructure);

  // TIM1 counter enable
  TIM1_Cmd(ENABLE);

  // Main Output Enable
  TIM1_CtrlPWMOutputs(ENABLE);

}

void SetDutyPeriod(Int16U period) {

  TIM1_OCInitStructure.TIM1_Pulse = period;
  TIM1_OC1Init(&TIM1_OCInitStructure);

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -