中级会员
- 积分
- 383
- 威望
- 209
- 贡献
- 118
- 兑换币
- 120
- 注册时间
- 2013-3-4
- 在线时间
- 28 小时
- 毕业学校
- 安徽建筑工业学院
|
/***********************************加载头文件***************************************/
#include "MPC5604B_M27V.h"
#include "sysclk_init.h" //加载系统时钟模块头文件
#include "EMIOS_PWM.h"
#include "EMIOS_SAIC.h"
#include "siu_init.h"
#include "IntcInterrupts.h" //加载SIUL模块头文件
volatile uint32_t GPIO;
#define uchar unsigned char
#define uint unsigned int
unsigned g_fCarSpeed;
/**********************************函数声明*******************************************/
void Delay(unsigned int loop_times); //延时子程序
void System_Int(void);
void EMIOS0_4_INTC(void);
void EMIOS0_4ISR(void);
void angle(unsigned int x)
{
EMIOS_0.CH[7].CCR.B.FREN = 1;
EMIOS_0.CH[7].CBDR.R = x;
EMIOS_0.CH[7].CCR.B.FREN = 0;
}
void dianji(unsigned int y)
{
EMIOS_1.CH[21].CBDR.R =y;
}
void EMIOS0_4ISR(void)
{
EMIOS_0.CH[4].CSR.B.FLAG = 1; //清除中断标志
//PIT.CH[0].TCTRL.B.TIE = 0x0 ;
if(PIC_PC8)
angle(1620);
else if(PIC_PC9)
angle(1580);
else if( PIC_PC11)
angle(1500);
else if( PIC_PC13)
angle(1470);
else if(PIC_PC15)
angle(1400);
else if(PIC_PC10)
angle(1380);
//PIT.CH[0].TCTRL.B.TIE = 0x1 ;
//EnableInterrupts; //打开中断
}
//************主程序************//
void main(void)
{
DisableInterrupts;
sysclk_module_init_fnc(); //系统时钟初始化,选择由PLL产生的64MHz系统频率
siu_init_fnc(); //SIUL模块初始化,包括GPIO设置
System_Int();
initEMIOS_0();
initEMIOS_1();
initEMIOS_0ch06();
//initEMIOS_0ch76();
initEMIOS_0ch04();
initEMIOS_1ch07();
dianji(32);
//Delay(5000);
// dianji(20);
angle(1570);
Delay(1000);
angle(1440);
Delay(1000);
EMIOS0_4_INTC();
EnableInterrupts;
/* for(;;)
{ if(POFH==0x30)
g_fCarSpeed =20;
else if(POFH==0x31)
g_fCarSpeed=30;
else if(POFH==0x33)
g_fCarSpeed=40;
}*/
}
void EMIOS0_4_INTC(void)
{
INTC_InstallINTCInterruptHandler(EMIOS0_4ISR,143,1);
INTC.CPR.R=0;
}
/******************函数实现***********************/
/****************************************
函数:void delay(void)
功能:延时
说明:延时500*loop_times个机器周期
****************************************/
void Delay(unsigned int loop_times)
{
unsigned int loop_i,loop_j;
for (loop_i=0; loop_i< loop_times; loop_i++)
{
for (loop_j=0; loop_j<800;loop_j++)
{
;
}
}
}
/**************************************************************************************
函数名称: void System_Int(void)
函数功能: 实现核心板上LED闪烁两次
调用函数: Delay(unsigned int loop_times);-------- main.c文件中
入口参数: 无
出口参数: 无
返回值: 无
其他:
**************************************************************************************/
void System_Int(void)
{
/***************************PF4~PF7设置为输出************************************/
SIU.PCR[84].R = 0x0201;
SIU.PCR[85].R = 0x0201;
SIU.PCR[86].R = 0x0201;
SIU.PCR[34].R = 0x0101;
SIU.PCR[87].R = 0x0201;
SIU.PCR[35].R = 0x0101;
SIU.PCR[36].R = 0x0101;
SIU.PCR[37].R = 0x0101;
SIU.PCR[38].R = 0x0101;
SIU.PCR[39].R = 0x0101;
SIU.PCR[40].R = 0x0101;
SIU.PCR[41].R = 0x0101;
SIU.PCR[42].R = 0x0101;
SIU.PCR[43].R = 0x0101;
SIU.PCR[47].R = 0x0101;
SIU.PCR[45].R = 0x0101;
/*********************************************************************************/
/* POFL = 0xF0;
Delay(1000);
POFL = 0xFF;
Delay(1000);
POFL = 0xF0;
Delay(1000);
POFL = 0xFF;*/
}
|
|