标题:
kea128电磁组智能车控制源码
[打印本页]
作者:
孙红飞
时间:
2018-1-19 16:03
标题:
kea128电磁组智能车控制源码
keaz1284 可跑程序
单片机源程序如下:
#include "headfile.h"
int flag;
void Para_Init()
{
PID_ANGLE.P=0.10;
PID_ANGLE.D=0.001;
PID_SPEED.P=1.5;
PID_SPEED.I=0.05;
PID_TURN.P=0.01;
PID_TURN.D=0.005;
Fuzzy_Kp=0.005;
Fuzzy_Kd=0.0005;
SetSpeed=2.5;
Set_Angle=20;
Control_Para[0]=SetSpeed;
Control_Para[1]=PID_ANGLE.P;
Control_Para[2]= PID_ANGLE.D;
Control_Para[3]= PID_SPEED.P;
Control_Para[4]= PID_SPEED.I;
Control_Para[5]= PID_TURN.P;
Control_Para[6]= PID_TURN.D;
}
void main(void)
{
DisableInterrupts ;
ADC_Init(ADC_CHANNEL_AD4,ADC_12BIT); //电磁采集0
ADC_Init(ADC_CHANNEL_AD5,ADC_12BIT); //电磁采集1
ADC_Init(ADC_CHANNEL_AD2,ADC_12BIT); //电磁采集2
ADC_Init(ADC_CHANNEL_AD3,ADC_12BIT); //电磁采集3
ADC_Init(ADC_CHANNEL_AD6,ADC_12BIT); //电磁采集4
ADC_Init(ADC_CHANNEL_AD7,ADC_12BIT); //电磁采集5
ADC_Init(ADC_CHANNEL_AD10,ADC_12BIT); //电池电压采集实验
button_init(); //按键初始化
switch_init(); //拨码开关初始化
FTM_PWM_init(CFTM2, FTM_CH5, 20000, 0); //PWM0 PTG7 电机驱动
FTM_PWM_init(CFTM2, FTM_CH4, 20000, 0); //PWM1 PTG6 电机驱动
FTM_PWM_init(CFTM2, FTM_CH3, 20000, 0); //PWM2 PTG5 电机驱动
FTM_PWM_init(CFTM2, FTM_CH2, 20000, 0); //PWM3 PTG4 电机驱动
PULSE_INIT(CFTM0); //编码器1采集
PULSE_INIT(CFTM1); //编码器1采集
uart_init(UARTR1,1500000); //wifi模块传输初始化
BEEP_ON;
OLED_Init(); //OLED 初始化
OLED_Draw_Logo(); //画logo专用函数
delay(300);
OLED_Fill(0); //初始清屏
BEEP_OFF;
I2C_Init(); //初始化加速度陀螺仪传感器
PIT_Init(PIT_CHANNEL0,2*BUS_CLK_KHZ); //定时中断 2ms 初始化
EnableInterrupts;
Para_Init();
led_init();
water_lights();
while(1)
{
if(beep)
{
BEEP_ON;
delay(50);
BEEP_OFF;
beep=0;
}
Read_Switch();
Check_BottonPress();
if(SendPara)
{
SendPara=0;
Send_Parameter();
}
if(flag) //此段不超过0.5ms 200ms主频 6ms 或8ms 执行一次
{
flag=0;
Send_Begin();
Variable_update();
Send_Variable();
Send_Inductor();
}
if(OLED_Refresh)
{
OLED_Draw_UI();
}
}
}
//定时器0中断函数
void PIT0_ISR(void)
{
static uint8 flag_100ms,cnt=0;
RunTime=RunTime+0.002;
flag_100ms++;
if(flag_100ms>50)
{
flag_100ms=0;
Speed_Control(); //100ms进行一次速度控制
LED_RED_TURN;
SpeedCount=0;
}
cnt++;
if(cnt==1) //4ms运行一次
{
flag=1;
ADC_SAMPLE();
Get_Attitude();
Angle_Calculate();
Angle_Control();
Get_Speed();
Direction_Control();
}
if(cnt>=2)
{
cnt=0;
}
SpeedCount++;
Speed_Control_Output();
Moto_Out();
PIT->CHANNEL[0].TFLG |= PIT_TFLG_TIF_MASK;//清楚中断标志位
}
//定时器0中断函数
void UART0_ISR(void)
{
static uint8 recv;
static uint8 data_cnt=0;
static uint8 predata[10];
static uint8 Recv_Buff[100];
static uint8 Data_Receiving=false;
// recv=Uart_GetChar(UART1_BASE);
/**********代表正在接收来自上位机的参数数据*********/
if(Data_Receiving)
{
if(data_cnt<56)
{
Recv_Buff[data_cnt]= recv;
data_cnt++;
}
else
{
data_cnt=0; //达到帧长
Data_Receiving=false;
if(recv==2) //帧尾
{
Modify_Parameter(Recv_Buff);
SendPara=1; //参数回传,确认参数修改完成
beep=1; //开启蜂鸣器
}
}
}
if( predata[1]==0x55&&predata[0]==0xAA)
{
switch(recv) //判断功能字
{
case 1: //读取参数
if(SendPara==0) SendPara=1;
beep=1; //开启蜂鸣器
break;
case 2: //修改参数
data_cnt=0;
Data_Receiving=true;
case 3: //保存参数
//EEPROM_Save();
beep=1; //开启蜂鸣器
break;
case 4: //功能开关1
break;
case 5: //功能开关2
break;
case 6: //功能开关3
break;
case 7: //功能开关4
break;
default: //
break;
}
}
predata[1]=predata[0];
predata[0]=recv;
}
复制代码
注意代码不是用Keil写的,用的iar编译的
iar工程文件.7z
(1.01 MB, 下载次数: 262)
2022-5-24 01:53 上传
点击文件名下载附件
keaz128 飞思卡尔可跑程序
下载积分: 黑币 -5
作者:
lll2
时间:
2018-2-24 10:44
是用iar吗
作者:
freepoet
时间:
2018-2-25 23:27
lll2 发表于 2018-2-24 10:44
是用iar吗
是的,我用过。程序可以用
作者:
freepoet
时间:
2018-2-25 23:28
楼主,一般用2个电感。你用4个,怎么安装的啊
作者:
浩少成
时间:
2018-2-26 20:29
freepoet 发表于 2018-2-25 23:27
是的,我用过。程序可以用
求教具体一点
作者:
1010704728
时间:
2018-3-19 15:54
看起来还不错,感谢楼主无私奉献
作者:
1239858139
时间:
2018-4-2 22:02
在哪里可以改管脚通道
作者:
爱爱爱啦
时间:
2018-4-5 16:52
IAR可以用吗
作者:
永动蛇皮车
时间:
2018-4-10 20:48
修改引脚的在哪里啊
作者:
老根
时间:
2018-4-18 10:53
楼主转弯怎么控制的?
作者:
老根
时间:
2018-4-18 12:12
楼主能问下你的转向控制思路吗?
作者:
935921345
时间:
2018-5-2 20:36
帮顶
作者:
935921345
时间:
2018-5-2 21:01
请问楼主用的是什么上位机?
作者:
kuli
时间:
2018-5-21 22:04
感谢楼主的分享
作者:
小黑米
时间:
2018-5-30 18:17
这是F车KEA128的嘛?
作者:
1739592000
时间:
2018-6-13 19:34
很棒的程序
作者:
gogo65849
时间:
2018-12-19 16:44
谢谢分享
作者:
yjys
时间:
2022-5-22 18:59
为啥显示The project could not be opened
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1