您当前的位置: 首页 >  stm32

风间琉璃•

暂无认证

  • 2浏览

    0关注

    337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

STM32G4之方波和PWM波输出

风间琉璃• 发布时间:2022-01-27 23:22:23 ,浏览量:2

文章目录
  • 前言
  • 一、方波输出
    • 1. 原理
    • 2.STM32CubeMX配置
    • 3.部分源码
  • 二、PWM波输出
    • 1.原理
    • 2.STM32CubeMX配置
    • 3.部分源码
  • 总结

一、方波输出 1. 原理

利用引脚PA11和PA12对应的定时器4通道1/2输出波形 在这里插入图片描述 输出比较原理图 在这里插入图片描述 输出通道有8中模式,这里采用的是比较输出模式(2),即电平翻转模式。当匹配时,引脚状态翻转。步进电机控制常用的模式

假设CCR寄存器里面的值设定为100,那么计数器从0开始计数,每隔100次,电平将会翻转一次,这样就通过设定CCR寄存器里面的值就可以输出不同频率的方波

假设1M作为计数时钟,计一个数需要t=1e-6s, 波的频率 1/[2*( 100*t)] =5khz

2.STM32CubeMX配置

(1)配置定时器4的模式和通道 在这里插入图片描述 (2)配置定时器4计数器的参数和输出比较通道参数,通道模式设置的是电平翻转,比较值设定的是100,每隔100计数,电平翻转一次 在这里插入图片描述 (3)配置定时器的输出引脚,输出速率设置为高 在这里插入图片描述

(4)配置定时器的中断优先级 在这里插入图片描述

3.部分源码
//  方波输出中断
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM4)   // 定时器判断
	{
		if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)  // 通道1
		{
			// 每次中断计数器的值加100
			__HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_1, (__HAL_TIM_GetCounter(htim)+100)); // 5khz
			
		}
		else if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)   // 通道2
		{
			// 每次中断计数器的值加500
			__HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_2, (__HAL_TIM_GetCounter(htim)+500));
		}	
	}
}
二、PWM波输出 1.原理

生成PWM波采用的是定时器15的通道1和通道2对应引脚为PA2和PA3 在这里插入图片描述 输出比较模式选择PWM模式,PWM(脉冲宽度调制)模式可以产生一个由TIMx_ARR寄存器确定频率(周期)、由TIMx_CCRx寄存器确定占空比的PWM信号

PWM模式分为PWM1互为PWM2 在这里插入图片描述 在递增计数模式下,计数器从 0 计数到自动重载值( TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事,在中, ARR=999, CCR=300, CNT 从 0 开始计数,当 CNT

关注
打赏
1665385461
查看更多评论
立即登录/注册

微信扫码登录

0.0368s