📄 main.c
字号:
/*******************************************************************
\poject 智能车底层驱动器(油门部分)
\author young
\author 北京理工大学
\version 1.1
\date 2009/5/3
* History:
2009/4/28 Start of aplication coding
*********************************************************************/
/* Include Files */
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908GZ16.h> /* include peripheral declarations */
#include "Sci.h"
#include "Type.h"
#include "MSCAN08.h"
#include "MCU.h"
#include "MotorCmd.h"
/*Defines */
#define PID
/* Local Variables */
UINT16 CmdWheelAngle;
UINT8 CmdCarSpeed,CmdCarDir,CmdBreakRapid,StateSensor,CheckByHost;
UINT16 StateLeftAngle,StateRightAngle;
UINT8 StateCarSpeed,StateCarDir,StateBreakRapid,CheckByHub;
/* Prototypes */
void MCUInit(void);
void CtrlAcc(void);
void HubDecode(void);
void main(void) {
MCUInit();/* System Initalization */
EnableInterrupts; /* enable interrupts */
for(;;) {/* Main Loop */
__RESET_WATCHDOG(); /* kicks the dog */
// if (CanRxFlag==1){
HubDecode();
//CtrlAcc();//对油门进行控制
//SciTxEnable;
// CanRxFlag=0;
// }
} /* loop forever */
}
void MCUInit(void){
DisableInterrupts;
PCTL = 0x00; //禁止锁相环
CONFIG1=0x09; //初始化配置
CONFIG2=0x08; //MSCAN ENABLE ,SCI source =8M
MSCAN08Init();
SCIInit();
TIM1Init();
IOInit();
}
/*****************************************************************************
* SendMsg: 对电机进行PID控制
* Input: None
* Output: None
* Parameters: None
*
****************************************************************************/
void CtrlAcc(void){
#ifdef PID
UINT8 p=3,i=0,d=0;
UINT8 speed_error=CmdCarSpeed-StateCarSpeed;
if (speed_error>0)
SendCmd(LA_FORWARD,1000);
else
SendCmd(LA_FORWARD,0);
#else
#endif
}
/*****************************************************************************
* SendMsg: 对路由发送过来的指令进行解码
* Input: None
* Output: None
* Parameters: None
*
****************************************************************************/
void HubDecode(void){
if(MessageID_Real==ID_Cmd_CarSpeed){
CmdCarSpeed=CAN_RX_Data[0];
}
if(MessageID_Real==ID_Cmd_WheelAngle){
CmdWheelAngle=(CAN_RX_Data[0]<<8)+CAN_RX_Data[1];
StateSensor=CAN_RX_Data[2];
}
if(MessageID_Real==ID_Cmd_BreakRapid){
CmdBreakRapid=CAN_RX_Data[0];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -