找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3020|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

關(guān)于stm32f103c8t6控制舵機(jī)的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:421308 發(fā)表于 2019-7-13 10:48 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
想問一下為什么信號(hào)線只能接PB13 改了也沒用,要怎么改各位大佬,求解






/***************STM32F103C8T6**********************
* 文件名  :main.c
* 描述    : 舵機(jī)測(cè)試
* 實(shí)驗(yàn)平臺(tái):STM32F103C8T6
* 備注    :使用定時(shí)器來產(chǎn)生pwm波,控制舵機(jī)動(dòng)作
* 接口    :TIM1, CH1-PB13, CH2-PB14, CH3-PB15
****************STM32F103C8T6**********************/
#include "pwm_output.h"

/* 配置TIM1復(fù)用輸出PWM時(shí)用到的I/O  */
static void TIM1_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);//定時(shí)器1時(shí)鐘使能

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//GPIOB時(shí)鐘使能

        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//復(fù)用推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOB, &GPIO_InitStructure);

}

/*配置TIM1輸出的PWM信號(hào)的模式,如周期、極性、占空比 */
static void TIM1_Mode_Config(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;

        /* PWM信號(hào)電平跳變值 */
        u16 CCR1_Val = 0;        
        u16 CCR2_Val = 0;
        //u16 CCR3_Val = 50000;


/* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 20000 - 1;//定時(shí)器周期,20ms
  TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1;//時(shí)鐘預(yù)分頻
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//計(jì)數(shù)方式:向上計(jì)數(shù)

  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;//選擇定時(shí)器模式:tim脈寬調(diào)制2
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比較輸出使能
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//極性
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;//開反向通道
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

  TIM_OC1Init(TIM1, &TIM_OCInitStructure);

  TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);

  /* PWM1 Mode configuration: Channel2 */

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR2_Val;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;//開反向通道
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;          

  TIM_OC2Init(TIM1, &TIM_OCInitStructure);

  TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);       
  TIM_ARRPreloadConfig(TIM1, ENABLE);

  /* TIM1 enable counter */
  TIM_Cmd(TIM1, ENABLE);
  TIM_CtrlPWMOutputs(TIM1, ENABLE);       
}

/*配置和初始化TIM1 */
void TIM1_PWM_Init(void)
{
        TIM1_GPIO_Config();
        TIM1_Mode_Config();       
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:583390 發(fā)表于 2019-7-13 12:23 | 只看該作者
我也遇到這問題了,希望大佬出手解決
回復(fù)

使用道具 舉報(bào)

板凳
ID:583698 發(fā)表于 2019-7-13 22:19 | 只看該作者
admin520 發(fā)表于 2019-7-13 12:23
我也遇到這問題了,希望大佬出手解決

我也是這個(gè)問題
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表