工具/软件:Code Composer Studio
大家好,我一直在使用MSP430 g2553,首先从太阳传感器收集模拟数据,然后将其转换为数字形式。从所有三个方向的太阳传感器获得值后,我想根据我的设置找到光源的矢量。用于查找矢量 我需要一个sqrt()函数,我正在进行一些乘法。当我编译代码时,它显示了某种警告,即MSP 430没有乘法硬件,而且我正在处理浮点值,因此它变得耗电。我只是一个初学者 我不知道如何使用数学函数和浮点值。
请尽早有人帮助我。
我要在此处附上我的代码
#include <msp430g2553.h>
#include <stdio.h>
#include <mathing.h>
void main (void){
无符号int标志;
无符号int传感器[3];
长整型sunvec[3];
long int vecx;
长整型矢量;
long int vecz;
WDTCTL = WDTPW + WDTHOLD;
//TACCTL0 &=~CCIE;
//P3SEL = 0x00;
//P3REN = 0x06
//P3OUT = 0x02;
//P3DIR |= 0x02;
//P3DIR |=0x01;
标志= 0;
对于(;;)
{
IF (标志== 0)
{
传感器[0]=0;
ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON;
ADC10CTL1 = inch_0 + ADC10DIV_3;
ADC10AE0 |= BIT0;
ADC10CTL0 |= ENC + ADC10SC;
//___之二_SR_REGISTER (CPUOFF + GIE);
传感器[0]= ADC10MEM;
ADC10CTL0 &=~ENC;
标志= 1;
}
IF (标志= 1)
{
传感器[1]=0;
ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON;
ADC10CTL1 = inch_1 + ADC10DIV_3;
ADC10AE0 |= BIT1;
ADC10CTL0 |= ENC + ADC10SC;
//___之二_SR_REGISTER (CPUOFF + GIE);
传感器[1]= ADC10MEM;
ADC10CTL0 &=~ENC;
标志= 2;
}
IF (标志=2)
{
传感器[2]= 0;
ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON;
ADC10CTL1 = inch_2 + ADC10DIV_3;
ADC10AE0 |= BIT2;
ADC10CTL0 |= ENC + ADC10SC;
//___之二_SR_REGISTER (CPUOFF + GIE);
传感器[2]= ADC10MEM;
ADC10CTL0 &=~ENC;
标志= 0;
}
长int mul=传感器[0]*SENSOR[0]+ SENSOR[1]*SENSOR[1]+ SENSOR[2]*SENSOR[2];
long int deno=sqrt(mul);
vectra =传感器[0]/deno;
very =传感器[1]/deno;
vez =传感器[2]/deno;
sunvec[0]=vecx;
sunvec[1]=vecy;
sunvec[2]=vecz;
}
}
谨致问候
Tejas