OpenEdv-开源电子网

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

NRF24L01 发射数据后 STATUS寄存器数值不稳定

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-11-20
在线时间
0 小时
发表于 2015-11-20 20:27:26 | 显示全部楼层 |阅读模式
5金钱
网上的教程说 发射数据成功后 &nbsp;STATUS数值 应该反馈 0x2E(46)<br />
但是我发射成功后 有的时候反馈0x2F 有的时候反馈0x3E 偶尔反馈0x2E<br />
这是什么情况<br />
另外接收方 能接收(STATUS&amp;0x40)有效 但是数值接收不正确<br />
<br />

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

557

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165060
金钱
165060
注册时间
2010-12-1
在线时间
2103 小时
发表于 2015-11-20 21:53:10 | 显示全部楼层
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-11-20
在线时间
0 小时
 楼主| 发表于 2015-11-21 13:13:26 | 显示全部楼层
回复【2楼】正点原子:
<br>---------------------------------
<br>原子哥&nbsp;原子哥&nbsp;&nbsp;我最近在写四轴飞行器
<br>我的程序&nbsp;启动4个电机后&nbsp;程序就死了&nbsp;完全不动需要重启
<br>
<br>别人的程序&nbsp;启动电机没问题
<br>
<br>同样的板子(都是改变PWM&nbsp;占空比)&nbsp;这事什么问题嘞
<br>
<br>
<br>void&nbsp;Motor_Init(void&nbsp;){
<br>        GPIO_InitTypeDef&nbsp;                GPIO_InitStructure;                        //IO口配置参数
<br>        TIM_TimeBaseInitTypeDef&nbsp;        TIM_TimeBaseInitStructure;        //定时器配置参数
<br>        TIM_OCInitTypeDef&nbsp;                TIM_OCInitStructure;                //
<br>       
<br>       
<br>        //使能时钟
<br>        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA&nbsp;,&nbsp;ENABLE);&nbsp;
<br>        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
<br>        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
<br>       
<br>        //设置电机使用到得管脚
<br>        GPIO_InitStructure.GPIO_Pin&nbsp;=&nbsp;GPIO_Pin_0&nbsp;|&nbsp;GPIO_Pin_1&nbsp;|&nbsp;GPIO_Pin_2&nbsp;|&nbsp;GPIO_Pin_3&nbsp;;&nbsp;
<br>        GPIO_InitStructure.GPIO_Speed&nbsp;=&nbsp;GPIO_Speed_50MHz;&nbsp;
<br>        GPIO_InitStructure.GPIO_Mode&nbsp;=&nbsp;GPIO_Mode_AF_PP;&nbsp;
<br>        GPIO_Init(GPIOA,&nbsp;&GPIO_InitStructure);
<br>       
<br>        TIM_TimeBaseInitStructure.TIM_Period&nbsp;=&nbsperiod_Max;
<br>        TIM_TimeBaseInitStructure.TIM_Prescaler&nbsp;=&nbsp;2;
<br>        TIM_TimeBaseInitStructure.TIM_ClockDivision&nbsp;=&nbsp;TIM_CKD_DIV1;
<br>        TIM_TimeBaseInitStructure.TIM_CounterMode&nbsp;=&nbsp;TIM_CounterMode_Up;
<br>        TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);
<br>       
<br>        TIM_OCInitStructure.TIM_OCMode&nbsp;=&nbsp;TIM_OCMode_PWM1;
<br>        TIM_OCInitStructure.TIM_OCPolarity&nbsp;=&nbsp;TIM_OCPolarity_High;
<br>       
<br>        TIM_OCInitStructure.TIM_OutputState&nbsp;=&nbsp;TIM_OutputState_Enable;
<br>        TIM_OCInitStructure.TIM_Pulse&nbsp;=&nbsp;0;
<br>        TIM_OC1Init(TIM2,&TIM_OCInitStructure);
<br>        TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);
<br>       
<br>       
<br>        TIM_OCInitStructure.TIM_OutputState&nbsp;=&nbsp;TIM_OutputState_Enable;
<br>        TIM_OCInitStructure.TIM_Pulse&nbsp;=&nbsp;0;
<br>        TIM_OC2Init(TIM2,&TIM_OCInitStructure);
<br>        TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);
<br>       
<br>       
<br>        TIM_OCInitStructure.TIM_OutputState&nbsp;=&nbsp;TIM_OutputState_Enable;
<br>        TIM_OCInitStructure.TIM_Pulse&nbsp;=&nbsp;0;
<br>        TIM_OC3Init(TIM2,&TIM_OCInitStructure);
<br>        TIM_OC3PreloadConfig(TIM2,TIM_OCPreload_Enable);
<br>       
<br>        TIM_OCInitStructure.TIM_OutputState&nbsp;=&nbsp;TIM_OutputState_Enable;
<br>        TIM_OCInitStructure.TIM_Pulse&nbsp;=&nbsp;0;
<br>        TIM_OC4Init(TIM2,&TIM_OCInitStructure);
<br>        TIM_OC4PreloadConfig(TIM2,TIM_OCPreload_Enable);
<br>       
<br>        TIM_ARRPreloadConfig(TIM2,&nbsp;ENABLE);
<br>        TIM_Cmd(TIM2,ENABLE);
<br>       
<br>       
<br>}
<br>
<br>
<br>void&nbsp;Motor_Working(uint16_t&nbsp;DutyC1,uint16_t&nbsp;DutyC2,uint16_t&nbsp;DutyC3,uint16_t&nbsp;DutyC4){
<br>        static&nbsp;uint16_t&nbsp;lastDuty1=0,lastDuty2=0,lastDuty3=0,lastDuty4=0;
<br>        //DutyC1&nbsp;=&nbsp;DutyC1&gteriod_Max?Period_MaxutyC1;
<br>        //DutyC2&nbsp;=&nbsp;DutyC2&gteriod_Max?Period_MaxutyC2;
<br>        //DutyC3&nbsp;=&nbsp;DutyC3&gteriod_Max?Period_MaxutyC3;
<br>        //DutyC4&nbsp;=&nbsp;DutyC4&gteriod_Max?Period_MaxutyC4;                //校正
<br>       
<br>       
<br>        if(lastDuty1!=DutyC1){TIM2-&gt;CCR2&nbsp;=&nbsp;DutyC1;lastDuty1=DutyC1;}
<br>        if(lastDuty2!=DutyC2){TIM2-&gt;CCR1&nbsp;=&nbsp;DutyC2;lastDuty2=DutyC2;}
<br>        if(lastDuty3!=DutyC3){TIM2-&gt;CCR3&nbsp;=&nbsp;DutyC3;lastDuty3=DutyC3;}
<br>        if(lastDuty4!=DutyC4){TIM2-&gt;CCR4&nbsp;=&nbsp;DutyC4;lastDuty4=DutyC4;}//更新占空比
<br>}
<br>
<br>这事程序
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-7-2 17:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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