首页 > 其他分享 >控制舵机转动

控制舵机转动

时间:2024-09-26 23:48:43浏览次数:10  
标签:TIM3 使能 定时器 控制 舵机 转动 TIM TIMMotorinit GPIO


void motor_config(void){  
    // 定义并初始化GPIO和定时器配置的结构体  
    GPIO_InitTypeDef GPIOMotorinit;  
    TIM_TimeBaseInitTypeDef TIMMotorinit;  
    TIM_OCInitTypeDef TIMPWMMotortinit;  
  
    // 使能GPIOB端口的时钟(因为我们将使用GPIOB的引脚来控制)  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  
    // 使能TIM3定时器的时钟(因为我们将使用TIM3来生成PWM信号)  
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);  
    // 使能复用功能IO的时钟(因为我们将使用GPIO的复用功能)  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
    // 配置TIM3的部分重映射    ,
    GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);  
  
    // 配置GPIOB的第5脚为复用推挽输出模式,速度50MHz  
    GPIOMotorinit.GPIO_Mode = GPIO_Mode_AF_PP;  
    GPIOMotorinit.GPIO_Pin = GPIO_Pin_5;  
    GPIOMotorinit.GPIO_Speed = GPIO_Speed_50MHz;  
    GPIO_Init(GPIOB, &GPIOMotorinit);  
  
    // 配置TIM3定时器的基本时间参数  
    TIMMotorinit.TIM_ClockDivision = TIM_CKD_DIV1; // 定时器时钟不分频  
    TIMMotorinit.TIM_CounterMode = TIM_CounterMode_Up; // 定时器向上计数模式  
    TIMMotorinit.TIM_Period = 200 - 1; // 自动重装载寄存器的值(决定PWM周期)  
    TIMMotorinit.TIM_Prescaler = 7200 - 1; // 预分频值,影响定时器计数频率  
    TIM_TimeBaseInit(TIM3, &TIMMotorinit); // 应用配置  
  
    // 配置TIM3的PWM输出比较参数  
    TIMPWMMotortinit.TIM_OCPolarity = TIM_OCPolarity_Low; // PWM输出低有效  
    TIMPWMMotortinit.TIM_OutputState = TIM_OutputState_Enable; // 使能输出比较通道  
    TIMPWMMotortinit.TIM_OCMode = TIM_OCMode_PWM1; // 使用PWM模式1  
    TIM_OC2Init(TIM3, &TIMPWMMotortinit); // GPIOB_Pin_5,对应的TIM3
    TIM_Cmd(TIM3, ENABLE); // 使能TIM3定时器  
    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); // 使能输出比较通道2的预装载功能  
}

 

标签:TIM3,使能,定时器,控制,舵机,转动,TIM,TIMMotorinit,GPIO
From: https://blog.csdn.net/m0_71715743/article/details/142555033

相关文章

  • Unity UI Tookite:实现命令控制台 [自定义元素]
    目录前言功能需求基础逻辑实现——输入输出分离逻辑实现——命令解析/历史指令切换历史指令解析指令基于反射的命令组自动装载逻辑实现——命令提示逻辑实现——定位报错逻辑实现——内容滚动/元素铺满逻辑实现——可变文本块最后前言最近在将Godot项目重写至Unit......
  • Cinemachine相机控制插件(转载)
    Cinemachine插件在Unity中的实现原理主要依赖于其虚拟相机(VirtualCamera)系统和一系列算法来控制Unity中的真实相机。以下是Cinemachine插件实现原理的详细解析:一、核心组件VirtualCamera(虚拟相机):虚拟相机是Cinemachine的核心组件,它不直接渲染画面,而是存储了一系列关于相机......
  • 三相交流电机矢量控制算法原理
            由于直流电机体积和重量大,价格高,存在换向火花,所以功率也相对较小,故电动汽车需求的电机一般采用交流电机。        随着电子器件的发展,异步电机的控制方法也需要更精确,更灵活的方式。1975年德国工程师Blaschke提出了矢量控制原理,成功的解决了对异步电......
  • 转动数据之轮:如何从数据中台演进至数据飞轮
    转动数据之轮:如何从数据中台演进至数据飞轮在当前的技术景观中,数据中台已被广泛认为是企业数据架构的核心。然而,一个关键问题常常被企业忽视:拥有了数据中台,我们应该如何进一步升级为数据飞轮?数据中台无疑是建设数据飞轮的基础,但这种转变涉及策略、技术和文化等多个层面的深刻变革。......
  • plc网关为plc远程控制提供可靠技术支持-天拓四方
    PLC网关是用于实现PLC远程访问、监控、控制和数据交换的硬件设备。它充当PLC设备与外部网络之间的桥梁,支持多种通信协议(如Modbus、Profinet、Ethernet/IP等)和接口(如以太网、Wi-Fi、蓝牙等),能够将PLC的运行状态数据传输到云平台或本地服务器,实现远程监控和管理。此外,PLC网关还具备较......
  • 2024年自动化、电气控制系统与设备国际学术会议(AECSE 2024) 2024 International Confer
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus2024年10月18-20日,南京三、大会介绍2024年自动化、电气控制系统与设备国际......
  • 【前端学习】 NestJS 之 控制器 (Controller)
    文章目录控制器(Controller)*路由(router)请求对象(requestobject)*资源(Resources)状态码(statuscode)标头&重定向(headers&redirection)*路由参数(routeparameters)*请求负载(requestpayloads)启动并运行小结控制器(Controller)控制器负责处理......
  • ArduSub程序学习(10)--位置控制和导航
    参考链接:直升机位置控制和导航—开发文档(ardupilot.org)参考图:1.追溯起源 1.1设置home点Ardusub.cpp中的update_home_from_EKF();函数//更新无人机Home点(起始点)的位置的函数voidSub::update_home_from_EKF(){//exitimmediatelyifhomealreadyset......
  • 基于单片机与 PC 机通信的数据采集控制系统设计
    摘要:设计出基于单片机与PC机通信的数据采集控制系统方法。被控对象经传感器、电压变换电路、A/D转换芯片与单片机相连,可将现场参数信息传送至单片机;单片机经继电器驱动控制被控对象运行。单片机与PC机经电平转换芯片相连,实现远程通信功能。该系......
  • 从0开始玩转机械臂----认识总线舵机(一)
    目录一、总线舵机简介二、总线舵机工作原理三、总线舵机接线三、上位机调试上位机正常界面上位机基本使用教程1.配置舵机id号2.读取舵机角度四、stm32读取舵机角度1、接线图2、实现代码最近在搞机械臂机械视觉的项目,想着写篇博客来记录一下自己的成长和记录自......