0
点赞
收藏
分享

微信扫一扫

【STM32技巧】STM32 PWM互补输出设置

您好 2022-04-04 阅读 86

本例程是使用STM32CubeMX 6.5版本生成带代码

测试单片机型号:STM32F103VET6

  • 时钟设置72MHZ
    -在这里插入图片描述
  • 使用定时器1的通道1 和 通道2 配置PWM互补输出

在这里插入图片描述

  • 分频72分频(定时器频率为 72MHZ / 72 = 1MHZ),计数周期1000,也就是计数到1000溢出,所以,PWM频率就是1KHZ,周期是1ms (1s / 1000)

在这里插入图片描述

  • PWM占空比设置
    在这里插入图片描述
    注意: 红框是占空比设置,也就是比较器寄存器和计数器寄存器的数值所比较,相同后翻转引脚(大致就是这个意思)其它不要动

最后生成代码,生成的代码在 main 函数中添加一下几个函数,即可成功运行

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_TIM1_Init();
  MX_ADC1_Init();
  /* USER CODE BEGIN 2 */

  HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);						//启动 PWM 通道1信号输出		
  HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);						//启动 PWM 通道2信号输出		


  HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);				//启动 PWM 通道1 互补信号输出
  HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2);				//启动 PWM 通道2 互补信号输出
	
  __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,200);		//设置 PWM 通道1 占空比
  __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,800);		//设置 PWM 通道2 占空比
	
	

	printf("start up\n");
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

实际照片
在这里插入图片描述

举报

相关推荐

0 条评论