我用了两种方法可是都不能在示波器上显示出正弦波:
1、头文件添加了#include <math.h>, 部分主要函数如下:
float Txbuf_1[8]={1,1,1,1,1,1,1,1};
float Txbuf_2[8], PI=3.1415;
which(1)
{
Txbuf_2[8]=sin(1000*PI)*Txbuf_1[8]; //因为UART是[7:0]位一起发,所以加了Txbuf_1[8]。
*pUART_THR=Txbuf_2[8]; // 8位一起通过UART的发送寄存器发送出去。
while(!(*pUART_LSR&0x0020)); //等待发送完成。
}
2、头文件也添加了#include <math.h>, 因为根据离散公式sinx=x-x^3/3!+x^5/5!-...+(-1)^(n-1)*x^(2n-1)/(2n-1)!+... 部分主要函数如下:
float Txbuf_1[8]={1,1,1,1,1,1,1,1};
float Txbuf_2[8], PI=3.1415;
which(1)
{
double result=x,temp=x;
double den=x,fac=1;
int n=1,sign=1;
x=1000*PI
while((temp>1e-5)||(temp<-1e-5))
{
n++,fac*=n,den*=x;
n++,fac*=n,den*=x;
temp=den/fac;sign=-sign;
result=sign>0?result+temp:result-temp; //离散公式sinx=x-x^3/3!+x^5/5!-...+(-1)^(n-1)*x^(2n-1)/(2n-1)!+...
}
Txbuf_2[8]=result*Txbuf_1[8]; //result=sin(1000*PI)
*pUART_THR=Txbuf_2[8];
while(!(*pUART_LSR&0x0020)); //等待发送完成。
}
以上两种方法编译都没有出错,就是在示波器上显示不出正弦波,如何改正,求高手指点如何通过UART输出正弦波,并在示波器上显示。