zoukankan      html  css  js  c++  java
  • STM32F103RCt6 与 MG996R

    发一张我自己的舵机

    老习惯,直接放代码,然后说说遇到的问#include"PWM.h"

    #include"stm32f10x.h"
    #include"sys.h"
    
    
    void PWM_Init(u16 arr,u16 psc)
    {
        
        GPIO_InitTypeDef GPIO_InitStruct;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
        TIM_OCInitTypeDef TIM_OCInitStruct;
        
        
    //使能A组和TIM1的时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        
    //c初始化IO口为复用推挽输出
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStruct);
    
        
    //初始化定时器
        TIM_TimeBaseInitStruct.TIM_ClockDivision=0;
        TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up; ;
        TIM_TimeBaseInitStruct.TIM_Period=arr;
        TIM_TimeBaseInitStruct.TIM_Prescaler=psc;
        TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStruct);
        
        
        //初始化外设TIM1 
        TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM2;
        TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;
        TIM_OCInitStruct.TIM_Pulse=0;
        TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
        TIM_OC1Init(TIM1,&TIM_OCInitStruct);
        
        //主输出使能
        TIM_CtrlPWMOutputs(TIM1,ENABLE);
        
        //CH1预装载使能
        TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
        
        //使能TIM在ARR上的预装载寄存器
        TIM_ARRPreloadConfig(TIM1,ENABLE);
        
        //使能TIM1
        TIM_Cmd(TIM1,ENABLE);
        
    }
    
    
    
    int main()
    {
        u16 LPV=0;
        u8 K=1;
        delay_init();
        LED_Init();
        PWM_Init(199,7199);
        
        while(1)
        {
            TIM_SetCompare1(TIM1,175);
                delay_ms(5);
            TIM_SetCompare1(TIM1,175);
            delay_ms(2000);
            TIM_SetCompare1(TIM1,185);
            delay_ms(5);
            TIM_SetCompare1(TIM1,190);
            delay_ms(3000);
            TIM_SetCompare1(TIM1,195);
            delay_ms(5);
            delay_ms(3000);
            TIM_SetCompare1(TIM1,190);
            delay_ms(5);
            TIM_SetCompare1(TIM1,185);
            delay_ms(5);
            delay_ms(1000);
            delay_ms(1000);
            delay_ms(1000);
                TIM_SetCompare1(TIM1,170);
                delay_ms(5);
        }
    return 0;    
    }

    第一个问题:PWM有PWM1和PWM2的区别,你还记得么,
    第二个问题:写好程序舵机抖动抖动,有两个原因,电源不稳定,或者是转动的角度过大,
    第三个问题:接线和电源的电压问题,

  • 相关阅读:
    Spring jdbcTemplat 写入BLOB数据为空
    Android强制弹出,隐藏输入法.
    Android NDK开发篇(五):Java与原生代码通信(数据操作)
    AIX加入�能够telnet远程连接账号方法
    index of rmvb mp3 rm突破站点入口下载
    C++“窗体”程序设计启蒙(之二)
    C++ Primer 学习笔记_72_面向对象编程 --句柄类与继承[续]
    (a*b)%c 小的技巧
    javascript(arguments)
    Cocos2dx 小技巧(十四)ScrollView实现缩放效果
  • 原文地址:https://www.cnblogs.com/Loving-Q/p/12734531.html
Copyright © 2011-2022 走看看