中级会员
 
- 积分
- 211
- 金钱
- 211
- 注册时间
- 2019-7-9
- 在线时间
- 52 小时
|

楼主 |
发表于 2019-8-2 08:52:42
|
显示全部楼层
#define SEND_BUF_SIZE 2 //发送数据长度,最好等于sizeof(TEXT_TO_SEND)+2的整数倍.
u32 SendBuff[SEND_BUF_SIZE]; //发送数据缓冲区
#define RX_BUF_SIZE 2 //发送数据长度,最好等于sizeof(TEXT_TO_SEND)+2的整数倍.
u8 RX_BUF[RX_BUF_SIZE]; //发送数据缓冲区
int main(void)
{
u16 adcx;
//int count=0;
float Volt_TX=0.0;
float Cur_TX=0.0;
float Volt_Value=0.0;
float Cur_Value=0.0;
float Volt_RX=0.0;
float Volt_RX_Value=0.0;
float Cur_RX=0.0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(9600); //串口初始化为115200
TIM1_GPIO_Config();
TIM1_PWM_Init(899,0);//72/9=8MHz,8000Khz/100=80Khz 72000khz/900
Adc_Init();
MYDMA_Config(DMA1_Channel1,(u32)&ADC1->DR,(u32)SendBuff,SEND_BUF_SIZE);//DMA1通道1,外设为串口1,存储器为SendBuff,长度SEND_BUF_SIZE.
NRF24L01_Init();//初始化NRF24L01
PID_init();
while(NRF24L01_Check()) //检查NRF24L01是否在位.
{
printf("NRF24L01 Error\r\n");
delay_ms(200);
}
printf("NRF24L01 OK\r\n");
while(1)
{
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
ADC_DMACmd(ADC1, ENABLE);
MYDMA_Enable(DMA1_Channel1);//开始一次DMA传输!
while(1)
{
if(DMA_GetFlagStatus(DMA1_FLAG_TC1)!=RESET) //判断通道4传输完成
{
DMA_ClearFlag(DMA1_FLAG_TC1);//清除通道4传输完成标志
break;
}
}
adcx=(u16)(SendBuff[0]&0x00ffff);
Volt_TX=(float)adcx*(112.2/4096);
Volt_Value=(float)adcx*(112.2/4096);
adcx=Volt_TX;
printf("Volt_TX:%d",adcx);
Volt_TX-=adcx;
Volt_TX*=1000;
adcx=Volt_TX;
printf(".%d\n",adcx);
adcx=(u16)(SendBuff[1]&0x00ffff);
Cur_TX=(float)adcx*(112.2/4096);
Cur_Value=(float)adcx*(112.2/4096);
adcx=Cur_TX;
printf("Cur_TX:%d",adcx);
Cur_TX-=adcx;
Cur_TX*=1000;
adcx=Cur_TX;
printf(".%d\n",adcx);
NRF24L01_RX_Mode();
if (NRF24L01_RxPacket(RX_BUF)==0)
{
adcx=(u16)(RX_BUF[0]&0x00ffff);
Volt_RX=(float)adcx*(112.2/4096);
Volt_RX_Value=(float)adcx*(112.2/4096);
adcx=Volt_RX;
printf("Volt_RX:%d",adcx);
Volt_RX-=adcx;
Volt_RX*=1000;
adcx=Volt_RX;
printf(".%d\n",adcx);
adcx=(u16)(RX_BUF[1]&0x00ffff);
Cur_RX=(float)adcx*(112.2/4096);
adcx=Cur_RX;
printf("Cur_RX:%d",adcx);
Cur_RX-=adcx;
Cur_RX*=1000;
adcx=Cur_RX;
printf(".%d\n",adcx);
// float CCR1_Val=PID_realize(200,Volt_RX_Value);
// CCR1_Val*=75;//换算成占空比所需数值(这里的想法是)
// int CCR1=CCR1_Val;
// TIM_SetCompare1(TIM1,CCR1);
}
else
{
printf("Volt_RX:Nothing");
printf("Cur_RX:Nothing");
}
// count++;
delay_ms(1000);
}
}
|
|