📄 main.c.bak
字号:
/********************************************************************************************************
* 文 件 名 : main.c
* 程 序 员 : (XieZhiJun) hncsxzj@sohu.com
* (c) Copyright 2007-2007, XieZhiJun
* All Rights Reserved
* 创建日期 :
* 说 明 :
* 修改日期 :
* 修改版本 :
* 说 明 :
********************************************************************************************************/
#define APP_GLOBALS
#include "includes.h"
static void AppInit (void); // 当前项目应用相关的变量 信号量等非硬件初始化
static void McuInit (void); // 硬件相关 当前项目应用初始化
static void IoInit (void); // 初始化 IO
const INT8U drvPatterns[2][16]={
{ PDP0, PDD0, PDP1, PDD1, PDP2, PDD2, PDP3, PDD3, PDP4, PDD4, PDP5, PDD5, PDP6, PDD6, PDP7, PDD7},
{ PDP7, PDD7, PDP6, PDD6, PDP5, PDD5, PDP4, PDD4, PDP3, PDD3, PDP2, PDD2, PDP1, PDD1, PDP0, PDD0},
};
#define VOF 7 ;$80 保护标志位
#define CVOF 6 ;$40 清保护标志允许位
#define BMF 5 ;$20 手动方向改变标志位。
#define BMTURN 4 // 单向标志位,1只正转,0双向
#define BMDDR 3 // 转向标志,1正转,0反转。
#define BMSTOP 2 // 停止。
#define BMBRAKE 1 // 刹车刹车标志;1刹车。
#define BMBRAKEEN 0 // 允许刹车刹车标志,1允许刹车,0
register volatile INT8U BMotor asm("r14");
/********************************************************************************************************
* 功 能 : 主引导函数
* 入 口 : 无
* 返 回 : 无
* 说 明 : 无
********************************************************************************************************/
static void AppInit (void)
{
TmrInit(); // 软调度器初始化
MCPinInit();
}
/********************************************************************************************************
* 功 能 : 主引导函数
* 入 口 : 无
* 返 回 : 无
* 说 明 : 无
********************************************************************************************************/
void MotorSTask(void)
{
PWMOpen();
PWMSetDucy(50);
HallSensorTask();
TmrStop(MotorS_TASK_PRIO); // 停止任务
}
void TapeTask(void)
{
INT16U Ppm;
cli();
Ppm = ESCBuf.Dm.ICPPpm;
sei();
if((Ppm>800)|(Ppm<2200)){
if(Ppm<1000){
Ppm = 1000;
}else if(Ppm>2000){
Ppm = 2000;
}
PWMSetDucy(Ppm-1000);
}else{
PWMSetDucy(0);
}
}
int main (void)
{
filteredTimeSinceCommutation = 0;
AppInit(); // 应用初始化 主要是变量或信号量 消息等
McuInit(); // MCU 所有应用的初始化内容
TmrCfgFnct(BEG_TASK_PRIO, BegTask,1); // 启动任务
TmrCfgFnct(CMD_TASK_PRIO, CmdTask,20); // 协议分析任务
TmrCfgFnct(MotorS_TASK_PRIO, MotorSTask,4); //
TmrCfgFnct(TAPE_TASK_PRIO, TapeTask,2); // 磁带运行维护任务
TmrStart(BEG_TASK_PRIO); // 启动启动任务
b10MSFlg = 0; //
sei(); // 开启全局中断
while (1) {
if (b10MSFlg) {
b10MSFlg = 0;
TmrTask();
}
}
return 0;
}
/********************************************************************************************************
* 功 能 : 硬件 软件环境配置函数 包含子部分定义 详细见各自的定义函数
* 入 口 : 无
* 返 回 : 无
* 说 明 : 无
********************************************************************************************************/
static void McuInit (void)
{
IoInit (); // 单片机IO初始化
// ADCInit(); // ADC初始化
Timer0Init(); // 未使用
Timer1Init(); // PWM,ppm输入
Timer2Init(); // 软调度器时间定时在此
PWMInit();
ICPInit();
}
/********************************************************************************************************
* 功 能 : 硬件 软件环境配置函数 IO 状态配置
* 入 口 : 无
* 返 回 : 无
* 说 明 : 无
********************************************************************************************************/
static void IoInit (void)
{
DDRB = B0000_0110; //
PORTB = B1111_1111; //
DDRC = B0000_1000; //
PORTC = B1111_0111; //
DDRD = PDD0; //
PORTD = PDP0|HALL_MASK; //
}
/********************************************************************************************************
* 功 能 :
* 入 口 : 无
* 返 回 : 无
* 说 明 : 无
********************************************************************************************************/
void BegTask (void)
{
TmrStart(CMD_TASK_PRIO); // 启动任务
TmrStart(MotorS_TASK_PRIO); // 启动任务
TmrStart(TST_TASK_PRIO); // 启动任务
TmrStart(TAPE_TASK_PRIO); // 启动任务
TmrStop(BEG_TASK_PRIO); // 停止任务
}
/********************************************************************************************************
* 功 能 : 测试任务
* 入 口 : 无
* 返 回 : 无
* 说 明 : 无
********************************************************************************************************/
void CmdTask (void)
{
INVERTBIT(GLED_PORT,GLED);
}
/********************************************************************************************************
* 功 能 : 测试任务
* 入 口 : 无
* 返 回 : 无
* 说 明 : 无
********************************************************************************************************/
void HallSensorTask (void)
{
INT8U Hall;
Hall = ((HALL_PIN & HALL_MASK)|(PINC & (1<<HALL3)))<<1;
MC_PORT = MASKBIT(MC_PORT,MC_MASK,drvPatterns[0][Hall]);
Hall++;
MC_DDR = MASKBIT(MC_DDR ,MC_MASK,drvPatterns[0][Hall]);
}
/********************************************************************************************************
* End of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -