中级会员
 
- 积分
- 390
- 金钱
- 390
- 注册时间
- 2017-3-24
- 在线时间
- 64 小时
|
8金钱
1, 有两个文件main.c ,math.c文件。2,math.c 里定义了 两个函数,如下void Set_method(uint8_t g,uint16_t Fre){
switch (g)
{
case 0:
if(Fre<= 100){x = 213;y=21578 ;break; }
if(Fre<= 101){x = 213;y=21576 ;break; }
if(Fre<= ·······等等){x = 213;y=21578 ;break; }
if(Fre<= 500){x = 212;y= 50927 ;break; }
case 1:
if(Fre<= 100){x = 157;y= 50827 ;break; }
if(Fre<= 101){x = 156;y= 50799 ;break; }
if(Fre<= ·······等等){x = 155;y= 50564 ;break; }
if(Fre<= 500){x = 157;y= 50927 ;break; }
}
}
float Get_solution( uint16_t adc)
{
float result ;
result= x*adc-y*10;
return result=result/10000;
}
3,main.c里 有如下逻辑 ,使用了上述的两个函数
主函数里
while (1)
{
if(USART_RX_STA&0x8000)
{
if(get_compare(Read_Power ,USART_RX_BUF))
{
//读功率
adcx=Get_ADC_ALLAverage(ADC_ChaneL,34);
if(rt!=RG)
{
rt=RG;
if(Frequncey<65536)
{
Set_method( RG,Frequncey);
}
else
{
Frequnceyb=Frequncey/10;
Set_method( RG,Frequnceyb);
}
}
printf("%.2f dBm",Get_solution(adcx));
}
4,此程序编译后烧录 ,单片机运行无误。
5,因为刚性需求,需要改变math.c文件里
void Set_method(uint8_t g,uint16_t Fre){
switch (g)
{
case 0:
···························等等
改变此函数里的所有 x,y 的值。x,y 将近2000组。
}
},在源码程序中改变所有的 x,y 的值后,再次编译,然后烧录到别的板子中。
6,感觉很麻烦,每次都需要在源码程序中改变 x,y 的值然后,重新编译再烧录。能不能通过类似IAP这种功能,将程序中定义的x,y的值改变。
|
|