STM32F103ZET6红外遥控42步进电机

STM32F103红外遥控步进电机

本案例通过融合正点原子的红外遥控实验和步进电机实验,实现红外遥控控制步进电机进行转动

1.在红外遥控实验代码中,将步进电机控制代码driver.c和driver.h移植到HRDWARE中。

2.移植步进电机实验的USMART文件及代码到红外遥控实验代码中,因为步进电机控制使用到usmart中的一些时钟。

 

3.在主函数中引用"usmart.h"   "driver.h",并初始化相关定义

 int main(void)
 {	 
	u8 key;
	u8 t=0;	
 	u8 *str=0;

	//移植过来的代码
	 u8 i;
	u8 keyval;
	//delay_init();	    	 //延时函数初始化	  
	//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	//uart_init(115200);	 	//串口初始化为115200
	usmart_dev.init(72); 	//初始化USMART	
	LED_Init();			     //LED端口初始化
	KEY_Init();					//初始化按键
	Driver_Init();			//驱动器初始化
	//BEEP_Init();         	//初始化蜂鸣器端口
	BEEP=0;
  //***
	 
	delay_init();	    	 //延时函数初始化	  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 	//串口初始化为115200
 	LED_Init();			     //LED端口初始化
	LCD_Init();	
	KEY_Init();	 	
	Remote_Init();			//红外接收初始化		
  BEEP_Init();         	//初始化蜂鸣器端口	

4.在遥控器按键扫描函数中添加电机控制代码,频率,脉冲,转向,即可在按下遥控器后控制电机转动,可以添加LED、beep等便于确认指令是否执行。

	switch(key)
			{
				case 0:str="ERROR";break;			   
				case 162:str="POWER";break;	    
				case 98:str="UP";break;	    
				case 2:str="PLAY";break;		 
				case 226:str="ALIENTEK";break;		  
				case 194:str="RIGHT";break;	   
				case 34:str="LEFT";break;		  
				case 224:str="VOL-";break;		  
				case 168:str="DOWN";break;		   
				case 144:str="VOL+";break;		    
				case 104:str="1";LED0=!LED0;break;	
					//LED1=!LED1;break;		  
				case 152:str="2";BEEP=!BEEP;break;	   
				case 176:str="3";break;	    
				case 48:str="4";break;		    
				case 24:str="5";break;		    
				case 122:str="6";break;		  
				case 16:str="7";break;			   					
				case 56:str="8";Locate_Rle(4000,500,CCW);LED1=!LED1;break;	 //按下遥控8,以500Hz的频率 逆时针发400脉冲
				case 90:str="9";Locate_Rle(2000,500,CW);LED0=!LED0;break;//按下遥控9,以500Hz的频率 顺时针发200脉冲
				case 66:str="0";LED1=!LED1;Locate_Abs(0,500);BEEP=!BEEP;break;//按下遥控0,回零点
				case 82:str="DELETE";break;		 
			}

5.编译查看运行结果

编译可能存在一处错误,两个函数对时钟有重复定义,注释掉其中一个即可(好像是remote.c和usmart.c)

注释后出现以下问题,则是KEIL未破解成功导致

..\OBJ\REMOTE.axf: error: L6047U: The size of this image (39396 bytes) exceeds the maximum allowed for this version of the linker

破解成功即可解决

6.实验效果

1)按下遥控8,以500Hz的频率 逆时针发400脉冲,LED1按一次亮灯,再按一次灭灯
2)按下遥控9,以500Hz的频率 顺时针发200脉冲,LED0按一次亮灯,再按一次灭灯
3)按下遥控0,回零点,LED1按一次亮灯,再按一次灭灯,蜂鸣器按一次响,再按一次不响

注:学习笔记,仅用于学习交流,转载请标注原文链接,如有帮助,点赞收藏关注,谢谢

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玖天星辰变

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值