⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c.bak

📁 这是一个车用电机调速器的AVR单片机的整套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 + -