完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
今天是做小车过程中的第二天,今天写一下单纯的实现电机的正反转。(但是还是不会实现PWM调速)代码如下:
/***********************************************/ .H 代码 #ifndef __MOTOR1_H #define __MOTOR1_H #include “stm32f10x.h” //#include “stm32f10x_gpio.h” #define High 1 //宏定义 高为1 #define Low 0 //宏定义 低为0 #define IN1(a) if (a) GPIO_SetBits(GPIOA,GPIO_Pin_4); //如果真 IN1 为高电平(PA4) else GPIO_ResetBits(GPIOA,GPIO_Pin_4) // 否则为低电平 (PA4) #define IN2(a) if (a) GPIO_SetBits(GPIOA,GPIO_Pin_5); else GPIO_ResetBits(GPIOA,GPIO_Pin_5) otor_1_Config(void); void Motor_1_STOP(void); //停止 void Motor_1_PRun(void); //正转 void Motor_1_NRun(void); //反转 #endif 下面是.c代码 #include “motor.h” #include “stm32f10x.h” #include “delay.h” void Motor_1_Config(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//用GPIOA时钟 GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出 GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStruct); GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5); } void Motor_1_STOP(void) { IN1(High); IN2(High); } void Motor_1_PRun(void) { IN1(Low); IN2(High); } void Motor_1_NRun(void) { IN1(High); IN2(Low); } 下面是主函数 int main(void) { Motor_1_Config(); delay_init(); while(1) { Motor_1_PRun(); //正转 delay_ms(2000); //延迟2秒 Motor_1_NRun(); //反转 delay_ms(2000); //延迟2秒 Motor_1_STOP(); //停止 delay_ms(2000); } } |
|
|
|
只有小组成员才能发言,加入小组>>
2168 浏览 0 评论
7859 浏览 4 评论
35694 浏览 18 评论
4781 浏览 0 评论
23258 浏览 34 评论
923浏览 2评论
1174浏览 1评论
1402浏览 1评论
1019浏览 0评论
1468浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-18 06:55 , Processed in 1.184997 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号