stm32f103对定时器2通道34输出的pwn波记高电平次数标准库代码
时间: 2024-01-05 07:03:08 浏览: 22
以下是使用STM32F103定时器2通道3和4输出PWM波记高电平次数的标准库代码:
```
#include "stm32f10x.h"
void TIM2_PWM_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
/* 配置PA2和PA3为复用推挽输出 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 定时器TIM2基本参数配置 */
TIM_TimeBaseStructure.TIM_Period = 999; // PWM波的周期
TIM_TimeBaseStructure.TIM_Prescaler = 71; // 定时器分频
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/* PWM波通道3配置 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; // PWM波模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStructure.TIM_Pulse = 499; // 高电平持续时间
TIM_OC3Init(TIM2, &TIM_OCInitStructure);
/* PWM波通道4配置 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; // PWM波模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStructure.TIM_Pulse = 499; // 高电平持续时间
TIM_OC4Init(TIM2, &TIM_OCInitStructure);
/* 启动PWM波输出 */
TIM_Cmd(TIM2, ENABLE);
TIM_CtrlPWMOutputs(TIM2, ENABLE);
}
int main(void)
{
TIM2_PWM_Init();
while (1)
{
// do something
}
return 0;
}
```
要计算PWM波的高电平持续时间,可以使用以下公式:
高电平持续时间 = (TIM_Pulse + 1) / (TIM_Period + 1) * PWM波周期
在上面的代码中,TIM_Pulse的值为499,TIM_Period的值为999,PWM波周期为1/(72MHz/72) ≈ 1us。因此,高电平持续时间为:
(499 + 1) / (999 + 1) * 1us ≈ 500ns
如果要计算PWM波的周期,可以使用以下公式:
PWM波周期 = (TIM_Period + 1) * 定时器分频 / TIMx时钟频率
在上面的代码中,TIM_Period的值为999,定时器分频为72,TIMx时钟频率为72MHz。因此,PWM波周期为:
(999 + 1) * 72 / 72MHz ≈ 10us
要计算PWM波的频率,可以使用以下公式:
PWM波频率 = 1 / PWM波周期
在上面的代码中,PWM波周期为10us。因此,PWM波频率为:
1 / 10us ≈ 100kHz
以上是使用STM32F103定时器2通道3和4输出PWM波记高电平次数的标准库代码,供参考。