📄 pit.c
字号:
#include "PIT.h"
#define Engine1 MCF_GPIO_PORTUC_PORTUC2 //舵机
#define Engine1_1 MCF_GPIO_PORTUC|=Engine1
#define Engine1_0 MCF_GPIO_PORTUC&=~Engine1
//uint con_PIT=0;
extern con_PIT;
void PIT0_init()
{
MCF_PIT_PCSR(0)=MCF_PIT_PCSR_RLD
|MCF_PIT_PCSR_PIF
|MCF_PIT_PCSR_PIE
|MCF_PIT_PCSR_OVW
|MCF_PIT_PCSR_PRE(9);//fPIT=fsys/2/2^PER
//at 80MHz
//0- 40000000Hz
//1- 20000000Hz
//2- 10000000Hz
//3- 5000000Hz
//4- 2500000Hz -0.4us
//5- 1250000Hz
//6- 625000Hz
//7- 312500Hz
//8- 156250Hz
//9- 78125Hz -12.8us
//10-39062.5Hz
//11-19531.25Hz
//12-9765.625Hz
//13-4882.8125Hz
//14-2441.40625Hz
//15-1220.703125Hz
//|MCF_PIT_PCSR_DBG;
//|MCF_PIT_PCSR_DOZE
MCF_PIT_PMR(0)=78125;
MCF_INTC0_IMRL&=~MCF_INTC_IMRL_MASKALL;
MCF_INTC0_IMRH&=~MCF_INTC_IMRH_INT_MASK55;//PIT0
MCF_INTC0_ICR55=MCF_INTC_ICR_IP(6)+MCF_INTC_ICR_IL(2);//PIT0
//MCF_PIT_PCSR(0)|=MCF_PIT_PCSR_EN;
}
void PIT0_start(uint x)
{
MCF_PIT_PMR(0)=x;
MCF_PIT_PCSR(0)|=MCF_PIT_PCSR_EN;
}
void PIT0_stop(void)
{
MCF_PIT_PCSR(0)&=~MCF_PIT_PCSR_EN;
}
__declspec(interrupt:0) void PIT0_handler(void)//interrupt source 55
{
MCF_PIT_PCSR(0)|=MCF_PIT_PCSR_PIF;//清除PIT标志位
if(mod==1) //舵机控制开关
{
time++;
if(time<ang[1])Engine1_1;
else Engine1_0;
if(time>=2500)time=0;
}
else con_PIT++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -