收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
STM32控制舵机(多个舵机、附代码)
1、基本介绍
2、代码
#include "bsp\_servo.h"
void Servo\_PWM\_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;//定义定时器结构体变量
TIM_OCInitTypeDef TIM_OCInitStructure;//定义输出比较结构体变量
GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量
RCC\_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //GPIOB时钟使能
RCC\_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能TIM4的时钟
RCC\_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能复用时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;//配置GPIO引脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//配置GPIO速率
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//配置GPIO为复用推挽输出
GPIO\_Init(GPIOB,&GPIO_InitStructure);//GPIO初始化函数
TIM_TimeBaseStruct.TIM_Period=9999;//设置自动重装载的周期值,计算方法多了
TIM_TimeBaseStruct.TIM_Prescaler=143;//设置预分频系数
TIM_TimeBaseStruct.TIM_ClockDivision=0;//设置时钟分割,0同TIM\_CKD\_DIV1
TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式
TIM\_TimeBaseInit(TIM4,&TIM_TimeBaseStruct);//定时器初始化函数
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//PWM模式1
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//输出比较极性高
//多舵机,怎么控制,当然是同一个定时器下的4个通道了,所以,下面的8句就很重要。
TIM\_OC1Init(TIM4,&TIM_OCInitStructure);//比较输出初始化函数,通道1
TIM\_OC2Init(TIM4,&TIM_OCInitStructure);//比较输出初始化函数,通道2
TIM\_OC3Init(TIM4,&TIM_OCInitStructure);//比较输出初始化函数,通道3
TIM\_OC4Init(TIM4,&TIM_OCInitStructure);//比较输出初始化函数,通道4
TIM\_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable); //输出比较1预装载寄存器使能
TIM\_OC2PreloadConfig(TIM4,TIM_OCPreload_Enable);//输出比较2预装载寄存器使能
TIM\_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);//输出比较3预装载寄存器使能
TIM\_OC4PreloadConfig(TIM4,TIM_OCPreload_Enable);//输出比较4预装载寄存器使能
TIM\_Cmd(TIM4,ENABLE);//TIM4使能,忘了就前功尽弃了
}
头文件
#ifndef \_\_SERVO\_H
#define \_\_SERVO\_H
#include "stm32f10x.h"
#include "stm32f10x\_rcc.h"
#include "stm32f10x\_tim.h"
void Servo\_PWM\_Init(void);
#endif
最后,最关键的来了,如何使用呢?当然是一句函数了。修改定时器下某一个通道的函数,TIM_SetCompare1(TIM4, 500); 注意:修改哪一个通道的占空比,就要把那个数字1修改为几。
main函数中调用
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**