本例程是使用STM32CubeMX 6.5版本生成带代码
测试单片机型号:STM32F103VET6
- 时钟设置72MHZ
-![在这里插入图片描述](https://img-blog.csdnimg.cn/a1444d7daf9043a6a958f03940eec688.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP55-z5aS05pyJ5aSn5YaF5ra1,size_20,color_FFFFFF,t_70,g_se,x_16)
- 使用定时器1的通道1 和 通道2 配置PWM互补输出
![在这里插入图片描述](https://img-blog.csdnimg.cn/a6d0b97a4fab439c9e9374d0d3b1ae32.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP55-z5aS05pyJ5aSn5YaF5ra1,size_20,color_FFFFFF,t_70,g_se,x_16)
- 分频72分频(定时器频率为 72MHZ / 72 = 1MHZ),计数周期1000,也就是计数到1000溢出,所以,PWM频率就是1KHZ,周期是1ms (1s / 1000)
![在这里插入图片描述](https://img-blog.csdnimg.cn/47305bf43f08497a8ce780f6d0a93644.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP55-z5aS05pyJ5aSn5YaF5ra1,size_20,color_FFFFFF,t_70,g_se,x_16)
- PWM占空比设置
![在这里插入图片描述](https://img-blog.csdnimg.cn/c6f43adca7254a41bc894eda325ff6f7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP55-z5aS05pyJ5aSn5YaF5ra1,size_20,color_FFFFFF,t_70,g_se,x_16)
注意: 红框是占空比设置,也就是比较器寄存器和计数器寄存器的数值所比较,相同后翻转引脚(大致就是这个意思)其它不要动
最后生成代码,生成的代码在 main 函数中添加一下几个函数,即可成功运行
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_TIM1_Init();
MX_ADC1_Init();
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2);
__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,200);
__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,800);
printf("start up\n");
while (1)
{
}
}
实际照片
![在这里插入图片描述](https://img-blog.csdnimg.cn/fa0b5f72dd624544a60976a6bd05add5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP55-z5aS05pyJ5aSn5YaF5ra1,size_17,color_FFFFFF,t_70,g_se,x_16)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)