OpenEdv-开源电子网

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

跪求三角函数的用法!!!

[复制链接]

20

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-6-30
在线时间
0 小时
发表于 2013-8-24 19:01:12 | 显示全部楼层 |阅读模式
#include <stm32f10x_lib.h>
#include <math.h>
#include <stdio.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h" 
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "motor.h" 
#include "BuJin_F.h"  
#include "BuJin_Z.h"
#include "zhixian.h"
#include "yuanhu.h"
int main(void)
{
        float xx;
float yy;
float x_last;
float y_last;
double q1;
double q2;
int  i=0;
float rr=4;
float x0=11;
float y0=7;
  Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);     //延时初始化
uart_init(72,9600);  //串口初始化 
LED_Init();   //初始化与LED连接的硬件接口
Motor_Init();
delay_ms(1000);  
x_last=x0+rr;
y_last=y0;
      LED0=0;
zhixian(0,0,x_last,y_last);//移动到画圆起点    这个函数式用来画直线的,经过测试没有问题
q1=i*PI;
xx=cos(60)*rr+x0; 
q2=i*PI;                         //PI即为圆周率
yy=sin(q2/180)*rr+y0;    
zhixian(x_last,y_last,0,0);            
x_last=xx;
y_last=yy;
       LED1=0;
}
上面
程序中加黑的两句话,如果加上这两句话,程序只能运行到LED0=0,就是LED0灯可以点亮;   如果这两句话都屏蔽掉,程序可以执行到LED1,就是LED0和LED1这两个灯都能点亮;zhixian(0,0,x_last,y_last);这个函数是画直线用的,把加黑的两句话屏蔽掉,步进电机正常工作,也能画直线,如果加上的话,步进电机没有反应,画不了直线。。JTAG仿真的时候,如果加上这两句加黑的,单步运行的时候,只能执行到LED0=0,后面的程序就到不了了,也画不了直线。。。。
用串口看了下,XX和YY的值,都是正确的。。。。不知道这两句话有什么问题。。。
逐渐成长需要过程!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
发表于 2013-8-24 19:27:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

20

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-6-30
在线时间
0 小时
 楼主| 发表于 2013-8-24 20:10:47 | 显示全部楼层
回复【2楼】红烧螺丝钉:
---------------------------------
必须加啊。。。。。但是还是不行的
逐渐成长需要过程!!!
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
发表于 2013-8-24 20:42:22 | 显示全部楼层
回复【3楼】w348029046:
---------------------------------
那就应该是你设的直线函数zhixian(0,0,x_last,y_last);有问题了,跑死在里面了。。。我是这么觉得的,,,
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
发表于 2013-8-24 20:44:02 | 显示全部楼层
回复【3楼】w348029046:
---------------------------------
你把LED1改下地方,就前面那几个句子之前都试试,,看看到哪灯不亮了,就是前面那句出问题了
回复 支持 反对

使用道具 举报

20

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-6-30
在线时间
0 小时
 楼主| 发表于 2013-8-24 20:54:38 | 显示全部楼层
回复【4楼】红烧螺丝钉:
---------------------------------
直线函数好使。。。单独用的时候可以走直线的。。
逐渐成长需要过程!!!
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
发表于 2013-8-25 10:41:39 | 显示全部楼层
回复【6楼】w348029046:
---------------------------------
那就不太懂了。。坐等原子哥吧,,,
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
发表于 2013-8-25 10:55:35 | 显示全部楼层
回复【6楼】w348029046:
---------------------------------
还有想知道楼主的直线函数怎么写的啊,我刚想了下我是利用原子的Fill函数写的
 void zhixian(x1,y1,x2,y2)
       {
            OLED_Fill(x1,y1,x2,y2,1);        //填充区域
            OLED_Fill(x1-1,y1-1,x2-1,y2-1,0);     //清除区域
            OLED_Fill(x1+1,y1+1,x2+1,y2+1,0);  //清除区域
            }
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-8-25 11:11:57 | 显示全部楼层
xx=cos(60)*rr+x0;

好像不大对
应该用弧度哦!
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2013-5-1
在线时间
0 小时
发表于 2013-8-25 20:14:15 | 显示全部楼层
我估计是你的这两个 float  在你的画图函数里溢出了,于是就while在里面了。
回复 支持 反对

使用道具 举报

20

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-6-30
在线时间
0 小时
 楼主| 发表于 2013-8-26 14:58:23 | 显示全部楼层
回复【8楼】红烧螺丝钉:
---------------------------------
哦哦   我的直线函数是自己写的   我是在做05年的全国电子设计大赛题目     在用双步进电机画圆的时候遇到了现在的问题
逐渐成长需要过程!!!
回复 支持 反对

使用道具 举报

20

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-6-30
在线时间
0 小时
 楼主| 发表于 2013-8-26 15:00:51 | 显示全部楼层
回复【9楼】lsj9383:
---------------------------------
问题解决了。。。虽然是碰巧的。。。。   我把我之前所有的程序加入库中     用库函数来写   就好使了   可能还是因为库的原因吧~寄存器的头文件可能包含的东西不太全
逐渐成长需要过程!!!
回复 支持 反对

使用道具 举报

20

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-6-30
在线时间
0 小时
 楼主| 发表于 2013-8-26 15:08:20 | 显示全部楼层
回复【10楼】sco518:
---------------------------------
恩恩     我试着把我之前所有的程序加入库中     用库函数来写   就好使了   可能还是因为库的原因吧~寄存器的头文件可能包含的东西不太全
逐渐成长需要过程!!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-14 12:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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