STM32-HAL库04-PWM输出
所用材料:
STM32F103C6T6(最小系统板)
STM32cubemx(HAL库软件)
MD5(编程软件)
示波器(DS100)
本节所学内容:
通过TIM2定时器输出500HZ频率的PWM波;
修改部分参数实现PWM波频率的改变;
第一步-新建工程
1.选择MCU-F103C6Tx
第二步-SYS设置
将DEBUG选线设置为Serial Wire
第三步-RCC设置
选择高速外部时钟
第四步-PWM配置
- Timers-TIM2-Channel1-(PWM Generation CH1)
- Parameter Settings-Counter Settings-Prescale-(71)
- Parameter Settings-Counter Settings-Counter Period-(1999)
- Parameter Settings-Counter Settings-auto reload preload-Enable
- Parameter Settings-PWM Generation CH1-Pluse-(1000)
其中Prescale为预分频值,Counter Period为计数值,两者共同决定PWM波的频率,而Pluse用于确定PWM波的占空比,具体公式如下:
/*--------------------------------------------------
PWM波频率:F=72M/[(ARR+1)*(PSC+1)]
占空比: Q=Pluse/(ARR+1)
本文中为输出500HZ频率的占空比为50%的PWM波,故PSC取值为71,
ARR取值为1999,Pluse取值为1000.
--------------------------------------------------*/
第五步-时钟配置
第六步-文件配置
第七步-程序编写
- 打开MDK5
- 烧录程序设置:魔术棒-DEBUG(选择STlink)-Settings-Flash Download-勾选Reset and run
- 实现输出500HZ的PWM波
在main.c中添加如下程序:
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
其中主函数具体如下:
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
- 实现修改参数输出目标频率的PWM波
通过修改参数PSC或ARR可以改变PWM波的频率:目标5000HZ,改ARR,PSC不变
__HAL_TIM_SET_AUTORELOAD(&htim2, 199); //可以改变arr以改变频率
通过修改参数Pluse可以改变PWM波的占空比:目标为40%文章来源:https://www.toymoban.com/news/detail-400982.html
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, 80); //修改占空比比较值,一直保持占空比50%
其中主函数如下:文章来源地址https://www.toymoban.com/news/detail-400982.html
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
HAL_Delay(500);
__HAL_TIM_SET_AUTORELOAD(&htim2, 199); //可以改变arr以改变频率
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, 80); //修改占空比比较值,一直保持占空比50%
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
到了这里,关于STM32-HAL库04-PWM输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!