stm32f103使用定时器输出指定频率的PWM脉冲

使用stm32f103c8t6的定时器4的通道3输出100KHZ的脉冲

先查看定时器使用的时钟源(确定定时器的主频为72MHZ)
在这里插入图片描述

查看定时器4的通道3默认的PWM输出IO(如果不使用默认IO口,需要确定使用的芯片必须支持输出通道的重映射到其它IO口,不然无法实现输出)
在这里插入图片描述
定时器4的通道3输出IO口初始化
static void TIM4_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/** 开启GPIO挂载的时钟源 **/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}

输出100KHz的脉冲,定时器需要设计响应周期:1 / 100KHz
定时器响应周期计算:(1 / 72MHz) * (TIM_Period+1) * (TIM_Prescaler+1)
定时器频率配置
static void TIM4_Mode_Config(void)
{
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

/** 开启定时器时钟源 **/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

/** 设置定时器预装载值(10-1) **/
TIM_TimeBaseStructure.TIM_Period=9;
/** 设置定时器预分频值(72-1) **/
TIM_TimeBaseStructure.TIM_Prescaler= 71;
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;	//设置时钟分割:TDTS = Tck_tim	
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //TIM向上计数模式	
TIM_TimeBaseStructure.TIM_RepetitionCounter=0;	 //重复计数器值
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 	//选择定时器模式:TIM脉冲宽度调制模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;	//输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //输出极性:TIM输出比较极性高
/** 此值决定PWM脉冲的占空比,计算:TIM_Pulse/(TIM_Period+1) 就是占空比 **/
TIM_OCInitStructure.TIM_Pulse = 5;    //设置待装入捕获比较寄存器的脉冲值
TIM_OC3Init(TIM4, &TIM_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化外设TIMx

// TIM_CtrlPWMOutputs(TIM1,ENABLE);	//MOE 主输出使能,注意:使用高级定时器时必须使能
TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable); //CH1预装载使能
TIM_Cmd(TIM4);  //使能TIM3

//	TIM_SetCompare3(TIM4, 1);     //用于修改占空比函数

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值