STM32 PWM配置

有关时基单元公式:

计数器计数频率: CK_CNT = CK_PSC / (PSC + 1)
•计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1)

                                                    = CK_PSC / (PSC + 1) / (ARR + 1)

PWM 频率:   Freq = CK_PSC / (PSC + 1) / (ARR + 1)
PWM 占空比:   Duty = CCR / (ARR + 1)
PWM 分辨率:   Reso = 1 / (ARR + 1)

先看看需要配置的模块

首先配置时基单元:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//选择定时器,开启时钟
TIM_InternalClockConfig(TIM2);//选择内部时钟模式

//配置时基单元初始化
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_ClockDivision=;
TIM_TimeBaseInitStruct.TIM_CounterMode=;
TIM_TimeBaseInitStruct.TIM_Period=;
TIM_TimeBaseInitStruct.TIM_Prescaler=;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter=;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);

TIM_Cmd(TIM2,ENABLE);//指定开启外设,计数器开始计数

//配置输出比较单元初始化
TIM_OCInitTypeDef TIM_OCInitStruct;
TIM_OCStructInit(&TIM_OCInitStruct);
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_Pulse=;//CCR
TIM_OC1Init(TIM2,TIM_OCInitStruct);
	
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启时钟
	
//配置GPIO口初始化
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);

 再配置输出比较单元。

接着想突出PWM的功能,就需要不断更改CCR的值,也就是不断更改占空比。。。↓↓↓↓↓↓↓↓↓↓↓↓↓↓

void PWM_SetCompare1(uint16_t Compare)
{
	TIM_SetCompare1(TIM2,Compare);
}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32的通用定时器具备生成PWM波的功能,并且可以将PWM输出到定时器的通道引脚。在配置STM32PWM时,需要进行基础配置和定时器相关配置。基础配置包括设置定时器的时钟源、预分频因子、计数周期等参数,而定时器相关配置则包括设置PWM的占空比、周期以及极性等参数。 具体来说,配置STM32PWM可以通过CubeMX来完成。首先,选择对应的STM32型号,比如STM32G070CBT6。然后,根据需求选择定时器(如TIM3)作为PWM源,并进行相应的配置,包括选择输出引脚、设置频率、占空比、极性等。在完成配置后,生成代码并将其导入到开发环境中,即可开始使用配置好的PWM功能。 总结来说,配置STM32PWM需要进行基础配置和定时器相关配置,可以通过CubeMX等工具来简化配置过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [一文搞懂STM32 PWM配置](https://blog.csdn.net/chanchairen/article/details/131184538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [2023年电赛E题代码-stm32部分源码、jetson nano上的OpenCV源码及电路板PCB原理图设计](https://download.csdn.net/download/qq_32971095/88226738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值