OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7477|回复: 10

这几个参数是什么意思呢

[复制链接]

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-10-27
在线时间
0 小时
发表于 2015-1-28 12:08:14 | 显示全部楼层 |阅读模式
5金钱
这几个参数是什么意思呢

Rc_Data.THROTTLE = Rc_Pwm_In[1];     
Rc_Data.YAW = Rc_Pwm_In[0];
Rc_Data.ROLL = Rc_Pwm_In[3];
Rc_Data.PITCH = Rc_Pwm_In[2];

求助求助!!!

最佳答案

查看完整内容[请看2#楼]

四轴的油门,伏仰,翻滚,偏航。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

2028

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2015-1-28 12:08:15 | 显示全部楼层
四轴的油门,伏仰,翻滚,偏航。
博观而约取,厚积而薄发。
回复

使用道具 举报

120

主题

7884

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-28 12:30:58 | 显示全部楼层
看结构体定义,你这样放上来是让人猜的,这样没啥意义,知道吗,哈哈
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

120

主题

7884

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-28 12:31:37 | 显示全部楼层
我可以这样问你么,A,B,C,D,E这几个东东代表啥,你能回答么?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-10-27
在线时间
0 小时
 楼主| 发表于 2015-1-28 12:42:52 | 显示全部楼层
回复【3楼】八度空间:
---------------------------------
void Tim4_Pwm_In_Irq(void)
{
static u16 temp_cnt1,temp_cnt1_2, temp_cnt2,temp_cnt2_2, temp_cnt3,temp_cnt3_2, temp_cnt4,temp_cnt4_2;

if(TIM4->SR & TIM_IT_CC1) //是否已被捕获至TIM4_CCR1//if(TIM_GetITStatus(TIM2, TIM_IT_CC1) == SET)
{
u16 ccr1 = TIM4->CCR1; //记录上一次输入捕获1事件传输的计数器值
TIM4->SR &= ~TIM_FLAG_CC1OF; //捕获1重复捕获标记清零
if(GPIOB->IDR & GPIO_Pin_6) //PB6为高电平
{
temp_cnt1 = ccr1; //记录低电平跳变为高电平时刻
TIM4->CCER |= (1<<1); //捕获发生在IC1下降沿
}
else
{
temp_cnt1_2 = ccr1; //记录高电平跳变为低电平时刻
TIM4->CCER &= ~(1<<1); //捕获发生在IC1上升沿
if(temp_cnt1_2>=temp_cnt1)
Rc_Pwm_In[0] = temp_cnt1_2-temp_cnt1;
else
Rc_Pwm_In[0] = 0xffff-temp_cnt1+temp_cnt1_2;
}
}
if(TIM4->SR & TIM_IT_CC2) //是否已被捕获至TIM4_CCR2
{
u16 ccr2 = TIM4->CCR2; //记录上一次输入捕获2事件传输的计数器值
if(GPIOB->IDR & GPIO_Pin_7) //PB7为高电平
{
temp_cnt2 = ccr2;
TIM4->CCER |= (1<<5); //捕获发生在IC2下降沿
}
else
{
temp_cnt2_2 = ccr2;
TIM4->CCER &= ~(1<<5); //捕获发生在IC2上升沿
if(temp_cnt2_2>=temp_cnt2)
Rc_Pwm_In[1] = temp_cnt2_2-temp_cnt2;
else
Rc_Pwm_In[1] = 0xffff-temp_cnt2+temp_cnt2_2;
}
}
if(TIM4->SR & TIM_IT_CC3) //是否已被捕获至TIM4_CCR3
{
u16 ccr3 = TIM4->CCR3; //记录上一次输入捕获3事件传输的计数器值
if(GPIOB->IDR & GPIO_Pin_8) //PB8为高电平
{
temp_cnt3 = ccr3;
TIM4->CCER |= (1<<9); //捕获发生在IC3下降沿
}
else
{
temp_cnt3_2 = ccr3;
TIM4->CCER &= ~(1<<9); //捕获发生在IC3上升沿
if(temp_cnt3_2>=temp_cnt3)
Rc_Pwm_In[2] = temp_cnt3_2-temp_cnt3;
else
Rc_Pwm_In[2] = 0xffff-temp_cnt3+temp_cnt3_2;
}
}
if(TIM4->SR & TIM_IT_CC4) //是否已被捕获至TIM4_CCR4
{
u16 ccr4 = TIM4->CCR4; //记录上一次输入捕获4事件传输的计数器值
if(GPIOB->IDR & GPIO_Pin_9) //PB9为高电平
{
temp_cnt4 = ccr4;
TIM4->CCER |= (1<<13); //捕获发生在IC4下降沿
}
else
{
temp_cnt4_2 = ccr4;
TIM4->CCER &= ~(1<<13); //捕获发生在IC4上升沿
if(temp_cnt4_2>=temp_cnt4)
Rc_Pwm_In[3] = temp_cnt4_2-temp_cnt4;
else
Rc_Pwm_In[3] = 0xffff-temp_cnt4+temp_cnt4_2;

Rc_DataAnl();
}

}

}
就是这样一个函数里,最后一条语句用到的函数Rc_DataAnl();
static void Rc_DataAnl(void)
{
Rc_Data.THROTTLE = Rc_Pwm_In[1];     //油门
Rc_Data.YAW = Rc_Pwm_In[0];
Rc_Data.ROLL = Rc_Pwm_In[3];
Rc_Data.PITCH = Rc_Pwm_In[2];

}
Rc_Data.THROTTLE
Rc_Data.YAW
Rc_Data.ROLL
Rc_Data.PITCH
这几个参数没太看懂
回复

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-10-27
在线时间
0 小时
 楼主| 发表于 2015-1-28 12:46:50 | 显示全部楼层
奥,结构体定义是这样的
typedef struct int16_rcget
{
int16_t ROLL;
int16_t ITCH;
int16_t THROTTLE;
int16_t YAW;
int16_t AUX1;
int16_t AUX2;
int16_t AUX3;
int16_t AUX4;
int16_t AUX5;
int16_t AUX6;
}T_RC_Data;
回复

使用道具 举报

7

主题

146

帖子

1

精华

高级会员

Rank: 4

积分
891
金钱
891
注册时间
2014-1-2
在线时间
155 小时
发表于 2015-1-28 14:35:42 | 显示全部楼层
应该是遥控器解码 然后复制给油门 俯仰 等
回复

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-10-27
在线时间
0 小时
 楼主| 发表于 2015-1-28 14:56:34 | 显示全部楼层
三楼的代码中TIM4->SR &= ~TIM_FLAG_CC1OF; //捕获1重复捕获标记清零
这条语句为什么只在
if(TIM4->SR & TIM_IT_CC1) //是否已被捕获至TIM4_CCR1
这条语句成立后有呢?
if(TIM4->SR & TIM_IT_CC2) //是否已被捕获至TIM4_CCR2
if(TIM4->SR & TIM_IT_CC2) //是否已被捕获至TIM4_CCR3
if(TIM4->SR & TIM_IT_CC2) //是否已被捕获至TIM4_CCR4
这几种情况下都没有
回复

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-10-27
在线时间
0 小时
 楼主| 发表于 2015-1-28 15:46:08 | 显示全部楼层
回复【6楼】745021926:
---------------------------------
三楼的代码中TIM4->SR &= ~TIM_FLAG_CC1OF; //捕获1重复捕获标记清零 
这条语句为什么只在 
if(TIM4->SR & TIM_IT_CC1) //是否已被捕获至TIM4_CCR1 
这条语句成立后有呢? 
if(TIM4->SR & TIM_IT_CC2) //是否已被捕获至TIM4_CCR2 
if(TIM4->SR & TIM_IT_CC2) //是否已被捕获至TIM4_CCR3 
if(TIM4->SR & TIM_IT_CC2) //是否已被捕获至TIM4_CCR4 
这几种情况下都没有
回复

使用道具 举报

39

主题

2028

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2015-1-28 16:33:05 | 显示全部楼层
这句看起来没用,因为只要通道一产生中断,这句就会执行到,而重复捕获标志CCxOF只有发生至少两个连续捕获时才会置1。这段代码是放在定时器中断里解码遥控接收器的4路PWM信号的吧?
博观而约取,厚积而薄发。
回复

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-10-27
在线时间
0 小时
 楼主| 发表于 2015-1-28 16:55:16 | 显示全部楼层
回复【10楼】745021926:
---------------------------------
嗯,原来是这样
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-10 08:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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