这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【开源新版移植的“烈火”四轴程序,爽飞】【让四轴飞】 QuadCopter DI

共216条 3/22 1 2 3 4 5 6 ›| 跳转至
高工
2014-04-05 10:40:06     打赏
21楼

建立开发环境还是很简单的!!!

上图,上教程!!!

MDK STM32库 工程模板的建立.rar



高工
2014-04-05 10:47:59     打赏
22楼

LED实验和串口实验一起做啦~

LED实验,

串口实验,


高工
2014-04-05 11:13:58     打赏
23楼

哎呀妈,程序一下载结束,空心杯飞一般的转啊,吓我一跳,擦

大清明的,都没人在学校,自己录视频太难了。。。

上图片吧。。。

一个人拍照,差点被浆打我手了。。。


来点关键代码,(在1L的分享中有工程文件)

额,咋回事,在我的工程里都是汉字啊。。。

怎么现在注释都是乱码啊。。

好饿,准备吃饭。

清明孤孤单单啊,今天风大,也不能去飞了,等明天把。。


/*******************************************************************************
* º¯ÊýÃû  		: GPIO_Configuration
* º¯ÊýÃèÊö    	: ÉèÖø÷GPIO¶Ë¿Ú¹¦ÄÜ
* ÊäÈë²ÎÊý      : ÎÞ
* Êä³ö½á¹û      : ÎÞ
* ·µ»ØÖµ        : ÎÞ
*******************************************************************************/

void GPIO_Configuration(void)
{
	/* ¶¨Òå GPIO ³õʼ»¯½á¹¹Ìå GPIO_InitStructure */
	GPIO_InitTypeDef GPIO_InitStructure;

	/* ÉèÖà GPIOA É쵀 TIM2 1£¬2£¬3£¬4ͨµÀ¶ÔÓ¦Òý½Å PA.0,PA.1,PA.2,PA.3 ΪµÚ¶þ¹¦ÄÜÍÆÍìÊä³ö */
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	
	GPIO_Init(GPIOA, &GPIO_InitStructure);
}



/*******************************************************************************
* º¯ÊýÃû  		: TIM_Configuration
* º¯ÊýÃèÊö    	: ÉèÖÃTIM¸÷ͨµÀ
* ÊäÈë²ÎÊý      : ÎÞ
* Êä³ö½á¹û      : ÎÞ
* ·µ»ØÖµ        : ÎÞ
*******************************************************************************/

void TIM_Configuration(void)
{
	/* ¶¨Òå TIM_TimeBase ³õʼ»¯½á¹¹Ìå TIM_TimeBaseStructure */
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	/* ¶¨Òå TIM_OCInit ³õʼ»¯½á¹¹Ìå TIM_OCInitStructure */
	TIM_OCInitTypeDef  TIM_OCInitStructure;
	
	/* 
	*  	¼ÆÊýÖØÔØÖµÎª9999
	*  	Ô¤·ÖƵֵΪ(0+ 1 = 1)
	*  	ʱÖÓ·Ö¸î0
	*  	ÏòÉϼÆÊýģʽ
	*/
	TIM_TimeBaseStructure.TIM_Period = 60000;
	TIM_TimeBaseStructure.TIM_Prescaler = 0;
	TIM_TimeBaseStructure.TIM_ClockDivision = 0;
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;	
	TIM_TimeBaseInit(TIM2 , &TIM_TimeBaseStructure);

	/* 	ÉèÖà OC1,OC2,OC3,OC4 ͨµÀ
	*  	¹¤×÷ģʽΪ PWM Êä³öģʽ
	*  	ʹÄÜ±È½ÏÆ¥ÅäÊä³ö¼«ÐÔ
	*  	ʱÖÓ·Ö¸î0
	*  	ÏòÉϼÆÊýģʽ
	*
	*	ÉèÖø÷Æ¥ÅäÖµ·Ö±ðΪ CCR1_Val, CCR1_Val, CCR1_Val, CCR1_Val
	*	µÃµ½µÄÕ¼¿Õ±È·Ö±ðΪ 50%, 37.5%, 25%, 12.5%  
	*/

	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;	
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

	TIM_OCInitStructure.TIM_Pulse = CCR1_Val;	
	TIM_OC1Init(TIM2, &TIM_OCInitStructure);
		
	TIM_OCInitStructure.TIM_Pulse = CCR2_Val;	
	TIM_OC2Init(TIM2, &TIM_OCInitStructure);
	
	TIM_OCInitStructure.TIM_Pulse = CCR3_Val;	
	TIM_OC3Init(TIM2, &TIM_OCInitStructure);
		
	TIM_OCInitStructure.TIM_Pulse = CCR4_Val;	
	TIM_OC4Init(TIM2, &TIM_OCInitStructure);

	/* ʹÄÜÔ¤×°ÔØ¼Ä´æÆ÷ */
	TIM_OC1PreloadConfig(TIM2 , TIM_OCPreload_Enable);
	TIM_OC2PreloadConfig(TIM2 , TIM_OCPreload_Enable);
	TIM_OC3PreloadConfig(TIM2 , TIM_OCPreload_Enable);
	TIM_OC4PreloadConfig(TIM2 , TIM_OCPreload_Enable);

	TIM_ARRPreloadConfig(TIM2, ENABLE);
	
	/* Æô¶¯ TIM ¼ÆÊý */
	TIM_Cmd(TIM2 , ENABLE);	
}




高工
2014-04-06 13:52:16     打赏
24楼

DMP测试,串口回传欧拉角及四元数。

附工程文件,希望有兴趣的亲可以测试一下。

 

目前发现的问题:

    1,串口波特率比程序设置的要高一倍,我设置的9600,,实际使用是19200才能正常发送。 (这个问题解决了,龙哥用的是16M的晶振,我的设置是8M。改正方法,在STM32F10X.h里第103行,把HSE_VALUE的值定义为16000即可)

    2,还是串口的问题,串口打开时间过长,会出现乱码。

    3,仍然是串口问题,不进入仿真调试,没法将数据发回来。

 

同时我在DMP及串口回传的基础上,加上了遥控油门的代码,已加注释。

DMP V1.0 遥控油门

——回复可见内容——

 附视串口回传欧拉角及四元数视频:

 
视频地址:http://player.youku.com/player.php/sid/XNjk1MTUzOTY4/v.swf

这讲四元数,欧拉角的,还不错 :http://www.cnblogs.com/wqj1212/archive/2010/11/21/1883033.html 

下面视频是讲欧拉角旋转产生的万向锁问题:


视频地址:http://player.youku.com/player.php/sid/XNjk1MTkzMTM2/v.swf
 


高工
2014-04-06 20:45:32     打赏
25楼
 谢谢龙哥,我会加油的

高工
2014-04-06 20:47:14     打赏
26楼
我用的这个,貌似是200HZ。 据说最新的DMP能支持到250HZ

高工
2014-04-06 21:56:58     打赏
27楼
在STM32F10X.h里第103行,把HSE_VALUE的值定义为16000即可解决波特率问题

高工
2014-04-07 02:39:24     打赏
28楼

2401驱动成功!!!

需要注意的问题:

1,遥控器驱动2401使用SPI2,初始化时钟得用

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);

2,四轴驱动2401使用SPI1,初始化时钟得用

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

其他就改一下IO口,直接能用。

附视频:

 
视频地址:http://player.youku.com/player.php/sid/XNjk1NDE4NzUy/v.swf

 附工程文件:

我自己的开发板发送数据,烈火遥控器接收数据。

 

——回复可见内容——


高工
2014-04-07 16:20:03     打赏
29楼
期待什么?

高工
2014-04-07 21:30:51     打赏
30楼
谢谢,我会持续更新的哈,请多关注,嘿嘿

共216条 3/22 1 2 3 4 5 6 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]