STM32配置定时器1输出PWM控制电机(标准库)

       学习单片机配置一个所需要的功能,切记,切记,流程很重要,一定要多注意去总结,然后记录下来。

       今天我们现讲一下配置,定时器PWM功能的流程。

配置流程:

1、开启定时器时钟和PWM输出GPIO端口时钟;

RCC_APB2PeriphClockCmd()或者RCC_APB1PeriphClockCmd()函数

根据外设找时钟函数

RCC_APB1PeriphClockCmd():上挂接的外设;

RCC_APB2PeriphClockCmd():上挂接的外设;

 2、GPIO初始化               利用GPIO_Init()函数(复用推挽输出)

这个结构体的配置我就不粘出来了吧,就是点灯操作(哈哈哈)


3、定时器参数初始化;  利用TIM_Init()函数

利用TIM_TimeBaseInitTypeDef结构体进行配置,这是结构体里面的参数以及配置成什么样


4、输出比较初始化         利用TIM_OCxInit()函数   x:通道号

利用TIM_OCInitTypeDef结构体进行配置,这是结构体里面的参数以及配置成什么样

里面没有参数的都是高级定时器的参数配置,我就没有配置


5、使能定时器                利用 TIM_Cmd()函数

注:配置PWM输出时,一定先要看准定时器的输出通道,然后进行配置GPIO为复用推挽输出,先初始化定时器的基本内容,然后配置配置输出比较初始化函数(PWM是输出比较的一种模式),切记,一定看准这个初始化函数,是带数字的(数字表示通道数);

输出比较初始化函数原型,一共有四个,表示四个通道

还有两个库函数一定要记住

函数原型以及解析:

1、void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct)
这个函数是配置输出比较初始化结构体参数的,TIM_OCInitTypeDef:这个结构体参数有很多,有一半都是高级定时器(TIM1、TIM8)的参数,如果你用的通用定时器(TIM2~TIM5),那么一般的参数都不需要配置,但是,有参数不配置,在下次换成高级定时器时,会直接不好使,所以利用这个函数来,设置一下所有参数的值(这个值影响不到任何功能变化)。

2、void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1)

这个函数是改变占空比的,第一个参数选择定时器,第二个参数是数字,来改变占空比,也就是会直接改变输出比较初始化结构体里面的参数TIM_Pulse的数字;        

我感觉应该啥东西了,原理的话,自己找视频看吧。

定时器配置的源码:你们可以参考一下

void My_PWM_Init()
{
	GPIO_InitTypeDef GPIO_InitStruct;//GPIO结构体
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;//定时器结构体
	TIM_OCInitTypeDef TIM_OCInitStruct;//输出比较结构体
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);//开启GPIO时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启定时器时钟
	
	//2、初始化GPIO
	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);
	
	//3、初始化定时器
	TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;//时钟分频
	TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式
	TIM_TimeBaseInitStruct.TIM_Period=100-1;//重装载值,控制PWM周期
	TIM_TimeBaseInitStruct.TIM_Prescaler=720-1;//预分频器
	TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);
	
	//4、初始化输出比较模式、配置输出比较模式的结构体参数
	TIM_OCStructInit(&TIM_OCInitStruct);//配置输出比较结构体的参数
	
	TIM_OCInitStruct.TIM_Pulse=50; //配置CCR寄存器,控制占空比
	TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1; //配置输出比较模式
	TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;//控制输出的极性
	TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//输出使能
	TIM_OC1Init(TIM2,&TIM_OCInitStruct);
	
	//5、使能定时器
	TIM_Cmd(TIM2,ENABLE);
}


//TIM_SetCompare(x)()函数可以改变占空比

  • 13
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
标准库舵机PWM频率的配置可以通过以下步骤实现: 1. 使用HAL库函数或者库函数配置TIM定时器PWM模式。例如,使用HAL库可以使用函数`HAL_TIM_PWM_Init()`初始化TIM定时器,并使用`HAL_TIM_PWM_ConfigChannel()`配置通道。 2. 设置PWM的周期和预分频系数。可以使用函数`HAL_TIM_PWM_ConfigChannel()`设置PWM的周期和预分频系数。周期的计算公式为F频率 = APB时钟频率 / (预分频系数 * (周期 + 1)),其中APB时钟频率通常为72 MHz。 3. 根据具体需求选择合适的频率。一般情况下,选择200 Hz的PWM频率比较常用和方便。如果需要其他频率,需要根据计算公式自行计算,并确保频率为整数。 4. 根据具体舵机的控制要求,设置相应的PWM占空比。通过设置PWM的计数值来控制高电平的持续时间,可以使用函数`HAL_TIM_PWM_Start()`启动TIM定时器PWM输出。 通过以上步骤,可以配置标准库舵机的PWM频率。请注意,以上是一种常用的配置方法,具体实现可能因使用的库和芯片类型而有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【概念理解】单片机控制舵机之PWM波参数的设置](https://blog.csdn.net/m0_55251293/article/details/131614649)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [STM32F103 舵机控制控制程序PWM配置](https://blog.csdn.net/Jkingood/article/details/115368481)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫咪死了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值