1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
直流有刷电机正反转控制
首先我们得了解电机的种类 我们这个小项目用的是12v直流减速电机,减速比是30 的 1.电机正反转 cube配置教程 第一次使用会详细讲解怎么配置,以后的一些基础配置,就不重复说明了。 首先选用stm32f407ZGT6 选定需要设置的pin脚会出现下图所示 PA10在这个项目中是用来做正反转控制赋予高低电平的,是输出引脚,所以我们把PA10设置为GPIO_OUTPUT,下图所示 工具选择:MDK-ARM 代码.c和.h文件分开 生成代码 GPIO的端口常用的模式有以下几种: 1.输入浮空 2.输入上拉 3.输入下拉 4.模拟输入模式 5.具有上拉或下拉的功能的开漏输出 6.具有上拉或下拉的功能的推挽输出 7.具有上拉或下拉的功能的复用功能推挽 8.具有上拉或下拉的功能的复用功能开漏 手册里写的太繁琐了,我就用通俗的语言来描述一下,上面几种模式的用处 1.输入浮空,顾名思义,就是悬浮在空中,不上拉,不下拉,如果没有接外围设备,其电平是不确定的 2.输入上拉,电压输入=数字地,并且有30~50欧姆的电阻 3.输入下拉,电压输入=数字电源,并且有30~50欧姆的电阻 4.模拟功能,当stm32进行AD(模数)转换时,需要将端口设置为模拟输入模式,该模式需要配合ADC外设使用,否则没有意义 5.开漏输出,通用输出是普通用途的输出模式,GPIO是由一个PMOS管和NMOS管组合的反相器驱动,开漏电路中的“漏”是指MOS管的漏极(D),实际只用到NMOS管 6.推挽输出,推挽输出具有驱动能力,GPIO是由一个PMOS管和NMOS管组合的反相器驱动,开漏电路中的“漏”是指MOS管的漏极(D),实际只用到NMOS管 7.复用推挽,就是在开漏输出的模式下加了复用功能 8.复用开漏,就是在推挽输出的模式下加了复用功能 关键代码解读: typedef struct { uint32_t Pin; /GPIO引脚选择 uint32_t Mode; / GPIO引脚模式 uint32_t Pull; / GPIO 引脚上,下拉配置 uint32_t Speed; / GPIO 引脚最大输出速度 uint32_t Alternate; / GPIO 引脚复用 }GPIO_InitTypeDef; ***这是C语言结构体的定义,如果不熟悉请自行翻阅资料 GPIO编程流程分析 GPIO端口时钟 初始化GPIO引脚(为结构体成员赋值,然后调用HAL_GPIO_Init函数完成初始化设置 根据项目要求控制引脚输出高低电平 //引脚初始化 void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; //等同于GPIO_InitTypeDef GPIO_ InitStruct; /* GPIO Ports Clock Enable / __HAL_RCC_GPIOA_CLK_ENABLE(); //因为我们要是用GPIOA_10,所以我们要使能GPIOA时钟 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_RESET); //PA10 电平拉低 GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } void HAL_GPIO_WritePin(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if(PinState != GPIO_PIN_RESET) { GPIOx-》BSRR = GPIO_Pin; } else { GPIOx-》BSRR = (uint32_t)GPIO_Pin 《《 16U; } } HAL_GPIO_WritePin函数有三个形参,第一个为GPIO_TypeDef类似指针变量,用于指定端口,如GPIOA.GPIOB…….GPIOI 赋值,第二个为GPIO_Pin,指定引脚,如GPIO_PIN_0 ,GPIO_PIN_1 ………GPIO_PIN_15 赋值;第三个为引脚状态,可用GPIO_PIN_SET或者GPIO_PIN_RESET赋值,分别对应指定引脚输出高低电平。 电机正反转控制就是通过两个引脚的电平的控制,下一步就是通过pwm控制电机的速度。 |
|
|
|
只有小组成员才能发言,加入小组>>
2445 浏览 0 评论
9166 浏览 4 评论
36846 浏览 19 评论
5040 浏览 0 评论
24835 浏览 34 评论
1557浏览 2评论
1792浏览 1评论
2231浏览 1评论
1585浏览 0评论
558浏览 0评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 22:35 , Processed in 1.348197 second(s), Total 78, Slave 62 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号