校订XY轴电机到达目标所需时间
重新设定通信协议,目标坐标值为16位,设定了一个传输结束的停止控制指令;根据丝杆有效行程,重新计算了到达目标所需时间;重新设定了串口缓冲区结构体变量参数;修改了执行XY轴单步操作以及取印章的判断条件。
This commit is contained in:
@@ -3,18 +3,22 @@
|
||||
0xEF 表示下一操作是否需要更换印章的判断值
|
||||
0xFF 表示后面的值为印章坐标值
|
||||
0xFx 印章坐标值,x为印章id=0,1,2,3,4,...,E(建议取1~6)
|
||||
0x00~0xEA 坐标值(精度要求不高,高8位整数,低8位小数)
|
||||
0x00~0xE9 坐标值(精度要求不高,高8位整数,低8位小数)
|
||||
0xED 下一操作是否需要更换印章的判断值为0
|
||||
0xEC 下一操作是否需要更换印章的判断值为1
|
||||
0xEB 下一操作是否需要更换印章的判断值为11(最开始的第一次操作,一定会先去取印章)
|
||||
0xEA 停止指令
|
||||
|
||||
// 相关伪代码
|
||||
|
||||
// 盖章位置在坐标原点
|
||||
// 树莓派传输信息示例:
|
||||
// 0xFF 0xF1,0xF2,0xF3,0xF4 ----> s_buf[32] = {0xF1,0xF2,0xF3,0xF4}
|
||||
// 0xEF,0xEC,0xEC,0xEC,0xEC ----> isNeedChange[32] = {0xEC,0xEC,0xEC,0xEC}
|
||||
// 0xEE,0x44,0x55,0xE4,0x62,0xA0,0xA0,0x7E,0x67 ----> buf[32] = {0x44,0x55,0xE4,0x62,0xA0,0xA0,0x7E,0x67}
|
||||
// 0xFF 0xF1,0xF2,0xF3,0xF4 ----> s_buf[32] = {0xF1,0xF2,0xF3,0xF4}
|
||||
// 0xEF,0xEC,0xEC,0xEC,0xEC ----> isNeedChange[32] = {0xEC,0xEC,0xEC,0xEC}
|
||||
// 0xEE,0x44,0x32,0x55,0x47,0xE4,0x62,0x77,0x22,0xA0,0x00,0xA0,0x00,0x00,0x00,0x29,0x67
|
||||
----> buf[64] = {0x44,0x32,0x55,0x47,0xE4,0x62,0x77,0x22,0xA0,0x00,0xA0,0x00,0x00,0x00,0x29,0x67}
|
||||
// 0xEA(停止)
|
||||
// 数组非空时就可以开始电机操作
|
||||
|
||||
s_buf[32],buf[32],isNeedChange[32];
|
||||
|
||||
@@ -45,11 +49,15 @@ if Rec == 0xEB
|
||||
isnc_index ++;
|
||||
if(isnc_index > 32-1)
|
||||
isnc_index = 0;
|
||||
if Rec <= 0xEA // 接收目标点坐标值
|
||||
if Rec <= 0xE9 // 接收目标点坐标值
|
||||
buf[buf_index] = Rex;
|
||||
buf_index ++;
|
||||
if(buf_index > 32-1)
|
||||
if(buf_index > 64-1)
|
||||
buf_index = 0;
|
||||
if Rec == 0xEA
|
||||
isbufNull = 0; // 检测停止指令,一组指令接收完成,所有数组非空,状态更新
|
||||
issbufNull = 0;
|
||||
isisncNull = 0;
|
||||
|
||||
FF F1 F2 F3 F4 EF ED EC EC EC EE 04 08 05 09 0A 07 05 05
|
||||
|
||||
@@ -73,3 +81,60 @@ F1 F1 F1 F1 00 01 00 01 04 08 05 09 0A 07 05 05
|
||||
// 出现一个问题,就是按照我的逻辑
|
||||
// 只有执行了取印章的操作id数组和是否更换印章数组当前的元素才会清0
|
||||
// 实际上, 取印章的操作id数组和是否更换印章数组当前的元素清零是在XY轴动了一次才清0
|
||||
|
||||
|
||||
// 更新指令协议后的测试
|
||||
FF F1 F1 F1 F1 EF ED EC ED EC EE 44 32 55 47 E4 62 77 22 A0 00 A0 00 00 29 00 67
|
||||
|
||||
// 出现问题,当再次发送数据后,一直沿着最后一步循环执行操作
|
||||
00 00
|
||||
00 00
|
||||
00 00
|
||||
01 01 // 一步操作结束,可以看到 rec_buffer.isbufNull rec_buffer.issbufNull 都置1了
|
||||
// 当再次发送数据,XY轴第一次运动,数组接收到数据后isNull位本来都清0了
|
||||
01 01
|
||||
00 00
|
||||
00 00
|
||||
00 00
|
||||
00 01
|
||||
00 01
|
||||
00 01
|
||||
|
||||
// 我发现我再次发送的时候,XY轴第一次开始运动(isbufNull=0),我让stm32发送当前数组给我
|
||||
// 00 32 55 47 00 00 00 00 A0 00 A0 00 00 29 00 67 0A[2018-08-03 11:51:51.659]
|
||||
// (本应是)44 32 55 47 E4 62 77 22 A0 00 A0 00 00 29 00 67
|
||||
// 也就是说,循环检测数组是不是为空,当再次发送时
|
||||
// 接收到第一个数据,这时已经满足数组不为空的条件了
|
||||
// 所以他就不等串口发送完数据,直接跳进去执行XY轴运动,同时继续响应串口中断接收数据
|
||||
// 所以就出现这种情况
|
||||
|
||||
// 解决办法呢,我吃个饭想了一下,设置一个停止指令,等一组控制指令接收完毕之后,再将rec_buffer.isbufNull rec_buffer.issbufNull 都清0
|
||||
// 更新指令协议后的测试
|
||||
FF F1 F1 F1 F1 EF ED EC ED EC EE 44 32 55 47 E4 62 77 22 A0 00 A0 00 00 29 00 67 EA
|
||||
// 每次数组清零时检测一下下一次数组是否为空
|
||||
|
||||
// coding:
|
||||
// 串口缓冲区当前目标点坐标指令清0
|
||||
rec_buffer.buf[i] = 0; rec_buffer.buf[i+1] = 0; rec_buffer.buf[i+2] = 0; rec_buffer.buf[i+3] = 0;
|
||||
// XY轴动了一次,代表着下一次检索 sbuf 和 isNeedChange 的下一个元素
|
||||
rec_buffer.sbuf[k] = 0; // 串口缓冲区当前印章ID指令清0
|
||||
rec_buffer.isNeedChange[k] = 0; // 串口缓冲区当前操作是否需要更换印章指令清0
|
||||
// 检查缓冲区数组是否为空
|
||||
rec_buffer.isbufNull = Check_Null_Buffer(rec_buffer.buf_id);
|
||||
rec_buffer.issbufNull = Check_Null_Buffer(rec_buffer.sbuf_id);
|
||||
|
||||
// 测试结果,数组buf,每一次单步操作启动后发回
|
||||
// buf = EE 44 32 55 47 E4 62 77 22 A0 00 A0 00 00 29 00 67 EA
|
||||
00 00 00 00 E4 62 77 22 A0 00 A0 00 00 29 00 67 0A[2018-08-03 02:28:44.711]
|
||||
00 00 00 00 00 00 00 00 A0 00 A0 00 00 29 00 67 0A[2018-08-03 02:29:09.882]
|
||||
00 00 00 00 00 00 00 00 00 00 00 00 00 29 00 67 0A[2018-08-03 02:29:47.011]
|
||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A[2018-08-03 02:30:21.090]
|
||||
00 00 00 00 E4 62 77 22 A0 00 A0 00 00 29 00 67 0A[2018-08-03 02:31:01.189]
|
||||
00 00 00 00 00 00 00 00 A0 00 A0 00 00 29 00 67 0A[2018-08-03 02:31:26.359]
|
||||
00 00 00 00 00 00 00 00 00 00 00 00 00 29 00 67 0A[2018-08-03 02:32:03.489]
|
||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A[2018-08-03 02:32:37.568]
|
||||
00 00 00 00 E4 62 77 22 A0 00 A0 00 00 29 00 67 0A[2018-08-03 02:36:09.377]
|
||||
00 00 00 00 00 00 00 00 A0 00 A0 00 00 29 00 67 0A[2018-08-03 02:36:34.553]
|
||||
00 00 00 00 00 00 00 00 00 00 00 00 00 29 00 67 0A[2018-08-03 02:37:11.677]
|
||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A[2018-08-03 02:37:45.756]
|
||||
|
||||
|
||||
26
BUGLIST/丝杆有效行程内相关计算.txt
Normal file
26
BUGLIST/丝杆有效行程内相关计算.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
// 三轴有效行程:
|
||||
// XYZ:450mm/400mm/220mm/6mm/r
|
||||
|
||||
// 500r/min * 6mm/r = 50mm/s = 50/60 mm/ms
|
||||
// (0x44,0x55)
|
||||
// 取出高4位和低4位
|
||||
// 0x44/16=4.0
|
||||
// 0x44%16=4.0
|
||||
// 0x55/16=5.0
|
||||
// 0x55%16=5.0
|
||||
// motor1.totalTime = 4.0*1000+4.0*100=4400ms
|
||||
// motor2.totalTime = 5.0*1000+5.0*100=5500ms
|
||||
// 误差:
|
||||
// -100*50/60mm < e < 100*50*60
|
||||
// -83.33mm < e < +83.33mm
|
||||
// 这样的话,误差太大,所以考虑将控制指令变换为2字节16位指令
|
||||
// (0x44/0x32,0x55/0x47)
|
||||
// motor1.totalTime = 4.0*1000+4.0*100+3*10+2*1=4432ms
|
||||
// motor2.totalTime = 5.0*1000+5.0*100+4*10+7*1=5547ms
|
||||
// 误差:
|
||||
// -0.83 mm < e < +0.83mm之内
|
||||
// 个人感觉前期这个误差还行
|
||||
// 按这个方案安排下去Σ(‘ω‘)/
|
||||
|
||||
// 两轴行程:
|
||||
// Z轴150,X轴390
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD>䣺18s153717@stu.hit.edu.cn
|
||||
* github<75><62>https://github.com/clearcumt
|
||||
* <20><><EFBFBD>ͣ<EFBFBD>https://www.cnblogs.com/loveclear/
|
||||
*
|
||||
* ******************************************************************************
|
||||
*/
|
||||
|
||||
//*ʹ<>õ<EFBFBD>IO<49><4F> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIOC<4F><43>
|
||||
|
||||
// (MotorX)A4988--> GPIOC0-GPIO1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD>䣺18s153717@stu.hit.edu.cn
|
||||
* github<75><62>https://github.com/clearcumt
|
||||
* <20><><EFBFBD>ͣ<EFBFBD>https://www.cnblogs.com/loveclear/
|
||||
*
|
||||
* ******************************************************************************
|
||||
*/
|
||||
|
||||
// <09><>е<EFBFBD>֣<EFBFBD><D6A3>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD><EFBFBD><EFA3A9><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ʹ<EFBFBD><CAB9>GPIOB<4F><42>
|
||||
// GPIOB8 --> IRONHAND(TIM4 CH3)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD>䣺18s153717@stu.hit.edu.cn
|
||||
* github<75><62>https://github.com/clearcumt
|
||||
* <20><><EFBFBD>ͣ<EFBFBD>https://www.cnblogs.com/loveclear/
|
||||
*
|
||||
* ******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __KEY8_H
|
||||
#define __KEY8_H
|
||||
#include "sys.h"
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20><EFBFBD><EFBFBD>κθ<EFBFBD><EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD>֯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD>䣺18s153717@stu.hit.edu.cn
|
||||
* github<75><62>https://github.com/clearcumt
|
||||
* <20><><EFBFBD>ͣ<EFBFBD>https://www.cnblogs.com/loveclear/
|
||||
*
|
||||
* ******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __MOTOR_H
|
||||
#define __MOTOR_H
|
||||
|
||||
@@ -17,8 +38,8 @@ typedef __packed struct {
|
||||
/* <20>ⲿ<EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD> */
|
||||
unsigned char direction; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16_t speed; // <20><><EFBFBD><EFBFBD><EFBFBD>ٶȣ<D9B6><C8A3>ı<EFBFBD>psc,<2C><><EFBFBD><EFBFBD>pwm<77><6D><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>ٶ<EFBFBD>
|
||||
float destn; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
float totalTime; // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD><C4B5>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
float destn; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD>꣨mm<EFBFBD><EFBFBD>
|
||||
int totalTime; // <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD><C4B5>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(ms)
|
||||
unsigned char nextMove;
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
|
||||
@@ -1,3 +1,25 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD>䣺18s153717@stu.hit.edu.cn
|
||||
* github<75><62>https://github.com/clearcumt
|
||||
* <20><><EFBFBD>ͣ<EFBFBD>https://www.cnblogs.com/loveclear/
|
||||
*
|
||||
* ******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __MOTOR_CTRL_H
|
||||
#define __MOTOR_CTRL_H
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD>䣺18s153717@stu.hit.edu.cn
|
||||
* github<75><62>https://github.com/clearcumt
|
||||
* <20><><EFBFBD>ͣ<EFBFBD>https://www.cnblogs.com/loveclear/
|
||||
*
|
||||
* ******************************************************************************
|
||||
*/
|
||||
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pwm<77><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A4988<38><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STEP<45><50><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>TIMx_CH2<48><32><EFBFBD><EFBFBD>PWM<57><4D><EFBFBD><EFBFBD><EFBFBD>źţ<C5BA><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STEP<45><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>
|
||||
//*ʹ<>õ<EFBFBD>IO<49><4F> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIOC<4F><43>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
@@ -73,7 +73,7 @@ void TIM1_UP_IRQHandler(void)
|
||||
if(TIM_GetITStatus(TIM1,TIM_IT_Update) != RESET)
|
||||
{
|
||||
TIM_ClearITPendingBit(TIM1,TIM_IT_Update);
|
||||
if(count_time == motor1.totalTime * 1000)
|
||||
if(count_time == motor1.totalTime) // <20><><EFBFBD>ﵽָ<EFB5BD><D6B8>ʱ<EFBFBD><CAB1>motor1.totaltime<6D><65>ms<6D><73><EFBFBD><EFBFBD><F3A3ACB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
|
||||
{
|
||||
Stop_Motor_withS(MOTOX);
|
||||
if(motor1.nextMove == 0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>ֹͣ
|
||||
@@ -88,7 +88,7 @@ void TIM1_UP_IRQHandler(void)
|
||||
}
|
||||
}
|
||||
|
||||
if(count_time == motor2.totalTime * 1000)
|
||||
if(count_time == motor2.totalTime)
|
||||
{
|
||||
Stop_Motor_withS(MOTOY);
|
||||
if(motor2.nextMove == 0)
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD>䣺18s153717@stu.hit.edu.cn
|
||||
* github<75><62>https://github.com/clearcumt
|
||||
* <20><><EFBFBD>ͣ<EFBFBD>https://www.cnblogs.com/loveclear/
|
||||
*
|
||||
* ******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __TIMER1_H
|
||||
#define __TIMER1_H
|
||||
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD>䣺18s153717@stu.hit.edu.cn
|
||||
* github<75><62>https://github.com/clearcumt
|
||||
* <20><><EFBFBD>ͣ<EFBFBD>https://www.cnblogs.com/loveclear/
|
||||
*
|
||||
* ******************************************************************************
|
||||
*/
|
||||
|
||||
#include "usart_master.h"
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>USART1<54><31>GPIO<49>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
@@ -79,6 +100,9 @@ void Init_USART1_Buffer()
|
||||
{
|
||||
volatile REC_BUFFER* pbuffer = &rec_buffer;
|
||||
int i;
|
||||
pbuffer->buf_id = 1;
|
||||
pbuffer->sbuf_id = 2;
|
||||
pbuffer->isnc_id = 3;
|
||||
pbuffer->buf_index = 0;
|
||||
pbuffer->sbuf_index = 0;
|
||||
pbuffer->isnc_index = 0;
|
||||
@@ -89,6 +113,50 @@ void Init_USART1_Buffer()
|
||||
pbuffer->sbuf[i] = 0;
|
||||
pbuffer->isNeedChange[i] = 0;
|
||||
}
|
||||
|
||||
for(i=0;i<SBUF_MAXSIZE;i++)
|
||||
{
|
||||
pbuffer->sbuf[i] = 0;
|
||||
pbuffer->isNeedChange[i] = 0;
|
||||
}
|
||||
|
||||
for(i=0;i<ISNC_MAXSIZE;i++)
|
||||
{
|
||||
pbuffer->isNeedChange[i] = 0;
|
||||
}
|
||||
|
||||
pbuffer->isbufNull = 1;
|
||||
pbuffer->issbufNull = 1;
|
||||
pbuffer->isisncNull = 1;
|
||||
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>黺<EFBFBD><E9BBBA><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
unsigned char Check_Null_Buffer(unsigned char BUF_ID)
|
||||
{
|
||||
int i;
|
||||
switch(BUF_ID)
|
||||
{
|
||||
case 1:
|
||||
for(i=0;i<BUF_MAXSIZE;i++)
|
||||
{
|
||||
if(rec_buffer.buf[i] != 0) return 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for(i=0;i<SBUF_MAXSIZE;i++)
|
||||
{
|
||||
if(rec_buffer.sbuf[i] != 0) return 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for(i=0;i<ISNC_MAXSIZE;i++)
|
||||
{
|
||||
if(rec_buffer.isNeedChange[i] != 0) return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
|
||||
@@ -117,33 +185,40 @@ void USART1_IRQHandler(void)
|
||||
if((Rec & 0xF0) == 0xF0 && (Rec != 0xFF)) // <20><>ȡӡ<C8A1>µ<EFBFBD> id ֵ<><D6B5> sbuf <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
rec_buffer.sbuf[rec_buffer.sbuf_index] = Rec;
|
||||
rec_buffer.sbuf_index ++;
|
||||
if(rec_buffer.sbuf_index > BUF_MAXSIZE-1) rec_buffer.sbuf_index = 0;
|
||||
rec_buffer.sbuf_index ++;
|
||||
if(rec_buffer.sbuf_index > SBUF_MAXSIZE-1) rec_buffer.sbuf_index = 0;
|
||||
}
|
||||
if(Rec == 0xED) // <20>յ<EFBFBD> 0xED(don't change) <20><>ʾ<EFBFBD><CABE>һ<EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>ӡ<EFBFBD><D3A1>
|
||||
{
|
||||
rec_buffer.isNeedChange[rec_buffer.isnc_index] = 0;
|
||||
rec_buffer.isnc_index ++;
|
||||
if(rec_buffer.isnc_index > 32-1) rec_buffer.isnc_index = 0;
|
||||
rec_buffer.isnc_index ++;
|
||||
if(rec_buffer.isnc_index > ISNC_MAXSIZE-1) rec_buffer.isnc_index = 0;
|
||||
}
|
||||
if(Rec == 0xEC) // <20>յ<EFBFBD> 0xEC(change) <20><>ʾ<EFBFBD><CABE>һ<EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>
|
||||
{
|
||||
rec_buffer.isNeedChange[rec_buffer.isnc_index] = 1;
|
||||
rec_buffer.isnc_index ++;
|
||||
if(rec_buffer.isnc_index > 32-1) rec_buffer.isnc_index = 0;
|
||||
rec_buffer.isnc_index ++;
|
||||
if(rec_buffer.isnc_index > ISNC_MAXSIZE-1) rec_buffer.isnc_index = 0;
|
||||
}
|
||||
if(Rec == 0xEB) // <20>յ<EFBFBD> 0xEB(be obliged to) <20><>ʾ<EFBFBD>ʼ<EEBFAA><CABC>һ<EFBFBD>β<EFBFBD><CEB2><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>
|
||||
{
|
||||
rec_buffer.isNeedChange[rec_buffer.isnc_index] = 11;
|
||||
rec_buffer.isnc_index ++;
|
||||
if(rec_buffer.isnc_index > 32-1) rec_buffer.isnc_index = 0;
|
||||
rec_buffer.isnc_index ++;
|
||||
if(rec_buffer.isnc_index > ISNC_MAXSIZE-1) rec_buffer.isnc_index = 0;
|
||||
}
|
||||
if(Rec <= 0xEA) // <20><>ȡĿ<C8A1><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> buf <20><><EFBFBD><EFBFBD>
|
||||
if(Rec <= 0xE9) // <20><>ȡĿ<C8A1><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> buf <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
rec_buffer.buf[rec_buffer.buf_index] = Rec;
|
||||
rec_buffer.buf_index ++;
|
||||
if(rec_buffer.buf_index > BUF_MAXSIZE-1) rec_buffer.buf_index = 0;
|
||||
}
|
||||
if(Rec == 0xEA)
|
||||
{
|
||||
rec_buffer.isbufNull = 0; // buf <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
rec_buffer.isbufNull = 0; // sbuf <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
rec_buffer.isisncNull = 0; // isNeedChange <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݲ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
* *******************************֣<><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************************
|
||||
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>乫<EFBFBD><E4B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳο<D2B2>ѧϰ<D1A7><CFB0>
|
||||
* <20>κθ<CEBA><CEB8>˺<EFBFBD><CBBA><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ת<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>Ϊ<EFBFBD><CEAA>
|
||||
*
|
||||
* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ʽ<EFBFBD><CABD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
||||
* лл<D0BB><D0BB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD>䣺18s153717@stu.hit.edu.cn
|
||||
* github<75><62>https://github.com/clearcumt
|
||||
* <20><><EFBFBD>ͣ<EFBFBD>https://www.cnblogs.com/loveclear/
|
||||
*
|
||||
* ******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __USART_MASTER_H
|
||||
#define __USART_MASTER_H
|
||||
|
||||
@@ -15,17 +36,25 @@
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵַ
|
||||
#define MASTER_ADDR 0x1
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>СΪ32<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
||||
#define BUF_MAXSIZE 32
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
||||
#define BUF_MAXSIZE 64
|
||||
#define SBUF_MAXSIZE 32
|
||||
#define ISNC_MAXSIZE 32
|
||||
|
||||
// USART1<54><31><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
typedef __packed struct {
|
||||
unsigned char buf_id;
|
||||
unsigned char buf[BUF_MAXSIZE];
|
||||
int buf_index;
|
||||
unsigned char sbuf[BUF_MAXSIZE];
|
||||
unsigned char isbufNull;
|
||||
unsigned char sbuf_id;
|
||||
unsigned char sbuf[SBUF_MAXSIZE];
|
||||
int sbuf_index;
|
||||
unsigned char isNeedChange[BUF_MAXSIZE];
|
||||
unsigned char issbufNull;
|
||||
unsigned char isnc_id;
|
||||
unsigned char isNeedChange[ISNC_MAXSIZE];
|
||||
int isnc_index;
|
||||
unsigned char isisncNull;
|
||||
}REC_BUFFER;
|
||||
|
||||
|
||||
@@ -34,11 +63,10 @@ void GPIO_USART1_Init(void);
|
||||
void USART1Nvic_Config_Init(void);
|
||||
void USART1_Master_Init(u32 bound);
|
||||
void Init_USART1_Buffer(void);
|
||||
unsigned char Check_Null_Buffer(unsigned char BUF_ID);
|
||||
|
||||
// USART1<54><31><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//extern volatile unsigned char buf[30];
|
||||
extern volatile REC_BUFFER rec_buffer;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
/**
|
||||
|
||||
\* Copyright 2018,程豪琪,哈尔滨工业大学(深圳)
|
||||
\* Copyright 2018,程豪琪,哈尔滨工业大学
|
||||
|
||||
\* All Rights Reserved.
|
||||
|
||||
@@ -134,9 +134,9 @@ TIM_SetAutoreload(TIMx,fpwm_arr)
|
||||
> GPIOB12 (K8)
|
||||
* 效果: 按下K1,顺时针转
|
||||
|
||||
> 按下K2,逆时针转;
|
||||
> 按下K2,逆时针转;
|
||||
>
|
||||
> 按下K3,加速;
|
||||
> 按下K3,加速;
|
||||
>
|
||||
> 按下K4,减速 ;
|
||||
>
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
// δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;
|
||||
|
||||
#include "delay.h"
|
||||
#include "sys.h"
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
// δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;
|
||||
|
||||
#ifndef __DELAY_H
|
||||
#define __DELAY_H
|
||||
#include "sys.h"
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
// δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;
|
||||
|
||||
#include "sys.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
// δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;
|
||||
|
||||
#ifndef __SYS_H
|
||||
#define __SYS_H
|
||||
#include "stm32f10x.h"
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
// δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;
|
||||
|
||||
#include "sys.h"
|
||||
#include "usart.h"
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>ת<EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
// δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK<45><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;
|
||||
|
||||
#ifndef __USART_H
|
||||
#define __USART_H
|
||||
#include "stdio.h"
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -388,7 +388,7 @@
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
|
||||
2238
USER/JLinkLog.txt
2238
USER/JLinkLog.txt
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
190
USER/main.c
190
USER/main.c
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018,程豪琪,哈尔滨工业大学(深圳)
|
||||
* Copyright 2018,程豪琪,哈尔滨工业大学
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
@@ -34,6 +34,7 @@
|
||||
|
||||
void Main_Init(void);
|
||||
void Step(void);
|
||||
void Compute_Time_Of(unsigned char MOTOID,unsigned char H,unsigned char L);
|
||||
|
||||
|
||||
// 定时器相关变量
|
||||
@@ -58,35 +59,9 @@ volatile MOTOR_CONTROL motor3;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
#if USART1_DEBUG
|
||||
int k;
|
||||
#endif
|
||||
Main_Init();
|
||||
TIM_Cmd(TIM1,DISABLE);
|
||||
USART1_Master_Init(9600);
|
||||
delay_s(10);
|
||||
|
||||
#if USART1_DEBUG
|
||||
for(k=0;k<4;k++)
|
||||
{
|
||||
USART_SendData(USART1,rec_buffer.sbuf[k]);
|
||||
// 等待发送缓存器清空(数据已经开始发送)
|
||||
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
|
||||
}
|
||||
for(k=0;k<4;k++)
|
||||
{
|
||||
USART_SendData(USART1,rec_buffer.isNeedChange[k]);
|
||||
// 等待发送缓存器清空(数据已经开始发送)
|
||||
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
|
||||
}
|
||||
for(k=0;k<8;k++)
|
||||
{
|
||||
USART_SendData(USART1,rec_buffer.buf[k]);
|
||||
// 等待发送缓存器清空(数据已经开始发送)
|
||||
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
while(1)
|
||||
{ // 主循环程序
|
||||
@@ -128,37 +103,22 @@ void Main_Init()
|
||||
GPIO_Key_Init(); // 键盘对应IO口初始化设置
|
||||
GPIO_IronHand_Init(); // 机械手八二马达对应IO口初始化设置
|
||||
|
||||
// 初始化三个电机结构体变量的参数
|
||||
Init_Motor_Struct(1);
|
||||
Init_Motor_Struct(2);
|
||||
Init_Motor_Struct(3);
|
||||
|
||||
Init_USART1_Buffer(); // 初始化SUART1接收缓冲区结构体变量的参数
|
||||
|
||||
// 初始化三个电机结构体变量的参数
|
||||
Init_Motor_Struct(1); Init_Motor_Struct(2); Init_Motor_Struct(3);
|
||||
// 电机A4988驱动器使能,
|
||||
Set_Motor_EN(MOTOX,motor1.enable);
|
||||
Set_Motor_EN(MOTOY,motor2.enable);
|
||||
Set_Motor_EN(MOTOZ,motor3.enable);
|
||||
|
||||
Set_Motor_EN(MOTOX,motor1.enable); Set_Motor_EN(MOTOY,motor2.enable); Set_Motor_EN(MOTOZ,motor3.enable);
|
||||
// 电机方向设置为反转(0)
|
||||
Set_Motor_Dir(MOTOX,motor1.direction);
|
||||
Set_Motor_Dir(MOTOY,motor2.direction);
|
||||
Set_Motor_Dir(MOTOZ,motor3.direction);
|
||||
|
||||
Set_Motor_Dir(MOTOX,motor1.direction); Set_Motor_Dir(MOTOY,motor2.direction); Set_Motor_Dir(MOTOZ,motor3.direction);
|
||||
// 各个脉冲通道初始化后,默认关闭pwm脉冲输出使能
|
||||
TIM2_PWM_Config_Init(100,956); // MotorX
|
||||
TIM3_PWM_Config_Init(100,956); // MotorY
|
||||
TIM4_PWM_Config_Init(100,956); // MotorZ
|
||||
TIM2_PWM_Config_Init(100,956); TIM3_PWM_Config_Init(100,956); TIM4_PWM_Config_Init(100,956);
|
||||
|
||||
// 定时器1初始化
|
||||
delay_ms(1000);
|
||||
TIM1_Config_Init(1000,72); // 1ms
|
||||
delay_ms(1000);
|
||||
// 定时器1初始化,1ms
|
||||
TIM1_Config_Init(1000,72);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* 函 数 名 : Step
|
||||
* 函数功能 : 控制程序单步操作
|
||||
@@ -169,31 +129,18 @@ void Step()
|
||||
{
|
||||
|
||||
static int i=0,k=0;
|
||||
|
||||
#if USART1_DEBUG
|
||||
int j;
|
||||
#endif
|
||||
|
||||
if(motor1.isResetPoint && motor2.isResetPoint)
|
||||
{
|
||||
|
||||
#if USART1_DEBUG
|
||||
for(j=0;j<4;j++)
|
||||
{
|
||||
USART_SendData(USART1,rec_buffer.sbuf[j]);
|
||||
// 等待发送缓存器清空(数据已经开始发送)
|
||||
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
|
||||
}
|
||||
for(j=0;j<4;j++)
|
||||
{
|
||||
USART_SendData(USART1,rec_buffer.isNeedChange[j]);
|
||||
// 等待发送缓存器清空(数据已经开始发送)
|
||||
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
|
||||
}
|
||||
#endif
|
||||
|
||||
TIM_Cmd(TIM1,DISABLE);
|
||||
motor1.totalTime = 0; // 当一次单步操作完成,步进电机复位到原点后,
|
||||
motor2.totalTime = 0; // 将上次移动所需totalTime清零,防止电机瞎几把乱动
|
||||
|
||||
if(rec_buffer.sbuf[k] != 0)
|
||||
if(!rec_buffer.issbufNull)
|
||||
{
|
||||
// 需要更换印章(包括初始第一次更换印章操作,rec_buffer.isNeedChange[k]==11)
|
||||
if((rec_buffer.isNeedChange[k]==1) || (rec_buffer.isNeedChange[k]==11))
|
||||
@@ -213,24 +160,43 @@ void Step()
|
||||
{
|
||||
k = 0;
|
||||
}
|
||||
|
||||
|
||||
if(rec_buffer.buf[i]!=0 && rec_buffer.buf[i+1]!=0)
|
||||
// 如果 buf 数组接收到数据,不为空
|
||||
if(!rec_buffer.isbufNull)
|
||||
{
|
||||
// 确定电机移动坐标
|
||||
motor1.destn = rec_buffer.buf[i];
|
||||
motor2.destn = rec_buffer.buf[i+1];
|
||||
// 确定所需时间
|
||||
motor1.totalTime = rec_buffer.buf[i];
|
||||
motor2.totalTime = rec_buffer.buf[i+1];
|
||||
// 确定所需时间,移动坐标
|
||||
Compute_Time_Of(motor1.id,rec_buffer.buf[i],rec_buffer.buf[i+1]);
|
||||
Compute_Time_Of(motor2.id,rec_buffer.buf[i+2],rec_buffer.buf[i+3]);
|
||||
|
||||
// 串口缓冲区当前目标点坐标指令清0
|
||||
rec_buffer.buf[i] = 0;
|
||||
rec_buffer.buf[i+1] = 0;
|
||||
|
||||
rec_buffer.buf[i] = 0; rec_buffer.buf[i+1] = 0; rec_buffer.buf[i+2] = 0; rec_buffer.buf[i+3] = 0;
|
||||
// XY轴动了一次,代表着下一次检索 sbuf 和 isNeedChange 的下一个元素
|
||||
rec_buffer.sbuf[k] = 0; // 串口缓冲区当前印章ID指令清0
|
||||
rec_buffer.isNeedChange[k] = 0; // 串口缓冲区当前操作是否需要更换印章指令清0
|
||||
// 检查缓冲区数组是否为空
|
||||
rec_buffer.isbufNull = Check_Null_Buffer(rec_buffer.buf_id);
|
||||
rec_buffer.issbufNull = Check_Null_Buffer(rec_buffer.sbuf_id);
|
||||
k++;
|
||||
|
||||
#if USART1_DEBUG
|
||||
for(j=0;j<17;j++)
|
||||
{
|
||||
if(j < 16)
|
||||
{
|
||||
USART_SendData(USART1,rec_buffer.buf[j]);
|
||||
// 等待发送缓存器清空(数据已经开始发送)
|
||||
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
|
||||
}
|
||||
|
||||
if(j == 16)
|
||||
{
|
||||
USART_SendData(USART1,'\n');
|
||||
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Start_Motor_withS(MOTOX,0);
|
||||
Start_Motor_withS(MOTOY,0);
|
||||
motor1.nextMove = 0; // 正向过程
|
||||
@@ -238,11 +204,12 @@ void Step()
|
||||
motor1.isResetPoint = 0;
|
||||
motor2.isResetPoint = 0; // 电机移动偏离复位点,更新状态
|
||||
count_time = 0;
|
||||
i += 4;
|
||||
TIM_Cmd(TIM1,ENABLE); // 当接收到并且已经传入给电机对应参数的指令,打开定时器
|
||||
i += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 如果 buf 数组为空
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
@@ -250,6 +217,73 @@ void Step()
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* 函 数 名 : Compute_Time_Of
|
||||
* 函数功能 : 确定所需时间,移动坐标
|
||||
* 输 入 : MOTOID(电机结构体变量参数的id值)
|
||||
H(buf 数组中坐标值的高8位)
|
||||
L(buf 数组中坐标值的低8位)
|
||||
* 输 出 : 无
|
||||
*******************************************************************************/
|
||||
void Compute_Time_Of(unsigned char MOTOID,unsigned char H,unsigned char L)
|
||||
{
|
||||
int qian,bai,shi,ge;
|
||||
qian = H/16;
|
||||
bai = H%16;
|
||||
shi = L/16;
|
||||
ge = L%16;
|
||||
switch(MOTOID)
|
||||
{
|
||||
case 1:
|
||||
motor1.totalTime = qian*1000 + bai*100 + shi*10 + ge*1;
|
||||
motor1.destn = motor1.totalTime * 50.0 / 60; // 假定电机转速 500rpm,每转一圈前进 6mm
|
||||
break;
|
||||
case 2:
|
||||
motor2.totalTime = qian*1000 + bai*100 + shi*10 + ge*1;
|
||||
motor2.destn = motor2.totalTime * 50.0 / 60;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
* Copyright 2018<31><38><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ѧ
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user