【电机控制器】FM33LF015芯片——PWM输出
@TOC
前言
使用工具:
1.ARM仿真器/J-OBV2仿真器
提示:以下是本篇文章正文内容,下面案例可供参考
一、接线
VCC——3.3
GND——GND
SWDIO——SWDIO
SWCLK——SWCLK
二、32 位低功耗定时器(LPTIM32)
三、代码
#include "mf_config.h"
/**
* @brief LPTIM32_TimerBase Initialization function
* @param void
* @retval None
*/
/* 占空比:CRR/ARR=1-500/1000=50% */
/* PWM周期:ARR*PSC/PCLK=1000*8/8M=0.001s=1ms */
void MF_LPTIM32_TimerBase_Init(void)
{
FL_LPTIM32_InitTypeDef TimerBase_InitStruct;
TimerBase_InitStruct.clockSource = FL_CMU_LPTIM32_CLK_SOURCE_APBCLK;
TimerBase_InitStruct.prescalerClockSource = FL_LPTIM32_CLK_SOURCE_INTERNAL;
/* PSC=8 */
TimerBase_InitStruct.prescaler = FL_LPTIM32_PSC_DIV8;//FL_LPTIM32_PSC_DIV8
TimerBase_InitStruct.autoReload = 999;
TimerBase_InitStruct.mode = FL_LPTIM32_OPERATION_MODE_NORMAL;
TimerBase_InitStruct.onePulseMode = FL_LPTIM32_ONE_PULSE_MODE_CONTINUOUS;
TimerBase_InitStruct.triggerEdge = FL_LPTIM32_ETR_TRIGGER_EDGE_RISING;
TimerBase_InitStruct.countEdge = FL_LPTIM32_ETR_COUNT_EDGE_RISING;
FL_LPTIM32_Init(LPTIM32, &TimerBase_InitStruct);
}
/**
* @brief LPTIM32_Channel1 Initialization function
* @param void
* @retval None
*/
void MF_LPTIM32_Channel1_Init(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct;
FL_LPTIM32_OC_InitTypeDef LPTIM32_InitStruct;
GPIO_InitStruct.pin = FL_GPIO_PIN_8;
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_ENABLE;
GPIO_InitStruct.analogSwitch = FL_DISABLE;
FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
LPTIM32_InitStruct.compareValue = 799;//499
LPTIM32_InitStruct.OCPolarity = FL_LPTIM32_OC_POLARITY_NORMAL;
FL_LPTIM32_OC_Init(LPTIM32, FL_LPTIM32_CHANNEL_1, &LPTIM32_InitStruct);
}
void LPTIM32_Setup(void)
{
FL_LPTIM32_Enable(LPTIM32);
}
void LPTIM32_Loop(void)
{
}
四、PWM周期、占空比理论计算
/* 占空比:1-CRR/ARR=1-500/1000=50% /
/ PWM周期:ARR*PSC/PCLK=1000*8/8M=0.001s=1ms */
五、实验
1ms20%
1ms50%
2ms 50%
六、参考资料
PWM原理 PWM频率与占空比详解
STM32 PWM占空比和信号周期的控制因素分析
总结
本文仅仅简单介绍了【电机控制器】FM33LF015芯片——PWM输出,评论区欢迎讨论。