收藏官网首页
查看: 8685|回复: 0

【转载】板载微型电机的电路分析和PWM配置代码

跳转到指定楼层
楼主
发表于 2015-8-27 14:26:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
帖子链接:http://bbs.elecfans.com/jishu_500494_1_1.html
帖子作者:xintuxing


gokit功能板上有一个小直流电机,该电机可起到震动和试验PWM的作用。

首先,看电机的驱动电路图,驱动芯片是L9110,这款芯片相关信息如下图,只需要两根驱动线,IA和IB,这两个引脚兼容TTL和CMOS电平,可以直接连接STM32芯片。GoKit开发板将IA连接到了PB4,IB连接到了PB5。


第二,根据刚才的电路分析,那么只要在PB4或PB5这两个引脚上输出PWM信号就可以调节电机的正反转和速度。下面看看从STM32F10x的资料上截下来有关PB4和PB5的两张图片:


根据上面的两张图可以知道,TIM3 的通道1和通道2是默认在PA6和PA7上的,需要重映射后才是PB4和PB5。还有一点是PB4 是JTAG的复位引脚,系统复位后PB4默认是JRST功能,所以在程序里一定要将JTAG功能关闭或者只使JRST失效。
下面给出参考的代码:
  • void TIM3_PWM_Configration(void)
  • {
  •                 GPIO_InitTypeDef  GPIO_InitStructure;
  •                 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  •                 TIM_OCInitTypeDef TIM_OCInitStructure;
  •                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//将PB4和PB5配置为复用推挽输出
  •                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
  •                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  •                 GPIO_Init(GPIOB, &GPIO_InitStructure);
  •                 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);//打开TIM3时钟
  •                 GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);//TIM3通道局部重映射,
  •                 TIM_TimeBaseStructure.TIM_Prescaler =  7199;             //TIM3预分频因子(72MHz/(7199+1))=10000Hz
  •                 TIM_TimeBaseStructure.TIM_Period = 100;                 // 自动重载寄存器的值  周期10ms
  •                 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟不分割
  •                 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
  •                 TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
  •                 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;                //PWM2模式
  •                 TIM_OCInitStructure.TIM_Pulse=50;                                         //占空比调节值,也可通过TIM3->CCR1 = 0—100调节速度
  •                 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;         //比较输出使能
  •                 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;                //输出极性高
  •                 TIM_OC1Init(TIM3, &TIM_OCInitStructure);                        //装入TIM3_CH1(PB4)
  •                 TIM_OC2Init(TIM3, &TIM_OCInitStructure);                        //装入TIM3_CH2(PB5)
  •                 TIM_Cmd(TIM3,ENABLE);//使能TIM3

[color=rgb(51, 102, 153) !important]复制代码

谨以此拿来分享,见笑了。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表