立即注册 登录
返回首页

uid:392107的个人空间

日志

STM32控制舵机

已有 1050 次阅读2018-8-31 19:56

主函数:
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "pwm.h"

int main()
{
u16 i=0;  
u16 j=0;
u16 k=0;
u16 m=0;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //ÖD¶ÏóÅÏ輶·Ö×é ·Ö2×é
LED_Init();
TIM4_CH1_CH2_CH3_PWM_Init(200, 7200-1); //20ms
while(1)

i=25;//¶æ»ú1
j=25;//¶æ»ú2
k=5;//¶æ»ú3
m=15;//¶æ»ú4

 
TIM_SetCompare1(TIM4,i);
TIM_SetCompare2(TIM4,j); 
TIM_SetCompare3(TIM4,k); 
TIM_SetCompare4(TIM4,m);
delay_ms(10);
}
}
==============================================
pwm方面:
#include "pwm.h"

/*******************************************************************************
* oˉ êy Ãû         : TIM3_CH1_PWM_Init
* oˉêy1|Äü    : TIM3í¨μà1 PWM3õê¼»ˉoˉêy
* êä    èë         : per:ÖØ×°ÔØÖμ
psc:·ÖÆμÏμêy
* êä    3ö         : ÎT
*******************************************************************************/
void TIM4_CH1_CH2_CH3_PWM_Init(u16 per,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* ¿aÆôê±Öó */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
/*  ********************ÅäÖÃGPIOμÄÄ£ê½oíIO¿ú***********************************==*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_6|GPIO_Pin_7;//DèòaÆäËû¿úÔù¼ó
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//¸′óÃíÆíìêä3ö
GPIO_Init(GPIOB,&GPIO_InitStructure);
TIM_TimeBaseInitStructure.TIM_Period=per;   //×Ô¶ˉ×°ÔØÖμ
TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //·ÖÆμÏμêy
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //éèÖÃÏòéϼÆêyÄ£ê½
TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OC1Init(TIM4,&TIM_OCInitStructure); //êä3ö±è½Ïí¨μà13õê¼»ˉ
TIM_OC2Init(TIM4,&TIM_OCInitStructure); //êä3ö±è½Ïí¨μà13õê¼»ˉ
TIM_OC3Init(TIM4,&TIM_OCInitStructure); //êä3ö±è½Ïí¨μà13õê¼»ˉ************************¼óIO¿úDèòaÔùìí¼óí¨μà
TIM_OC4Init(TIM4,&TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable); //ê1ÄüTIMxÔú CCR1 éÏμÄԤװÔؼÄ′æÆ÷
TIM_OC2PreloadConfig(TIM4,TIM_OCPreload_Enable); //ê1ÄüTIMxÔú CCR1 éÏμÄԤװÔؼÄ′æÆ÷
TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable); //ê1ÄüTIMxÔú CCR1 éÏμÄԤװÔؼÄ′æÆ÷****************í¬ê±Õa±ßò2Dèòaìí¼ó
TIM_OC4PreloadConfig(TIM4,TIM_OCPreload_Enable);

TIM_ARRPreloadConfig(TIM4,ENABLE);//ê1ÄüԤװÔؼÄ′æÆ÷
TIM_Cmd(TIM4,ENABLE); //ê1Äü¶¨ê±Æ÷
}
================================================================
void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1)
{
  /* Check the parameters */
  assert_param(IS_TIM_LIST8_PERIPH(TIMx));
  /* Set the Capture Compare1 Register value */
  TIMx->CCR1 = Compare1;
}

/**
  * @brief  Sets the TIMx Capture Compare2 Register value
  * @param  TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral.
  * @param  Compare2: specifies the Capture Compare2 register new value.
  * @retval None
  */
void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2)
{
  /* Check the parameters */
  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
  /* Set the Capture Compare2 Register value */
  TIMx->CCR2 = Compare2;
}


void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3)
{
  /* Check the parameters */
  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
  /* Set the Capture Compare3 Register value */
  TIMx->CCR3 = Compare3;
}

/**
  * @brief  Sets the TIMx Capture Compare4 Register value
  * @param  TIMx: where x can be 1, 2, 3, 4, 5 or 8 to select the TIM peripheral.
  * @param  Compare4: specifies the Capture Compare4 register new value.
  * @retval None
  */
void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4)
{
  /* Check the parameters */
  assert_param(IS_TIM_LIST3_PERIPH(TIMx));
  /* Set the Capture Compare4 Register value */
  TIMx->CCR4 = Compare4;
}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部