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

📄 main.c

📁 基于c的电动机保护程序
💻 C
字号:
/********************************************************************
**	项目:电动机保护												*
**	创建者:Joel													*
**	日期:2007.8.13													*
*********************************************************************
**	FILE NAME: main.c												*																*
**	DESCRIPTION: create and initial tasks							*
**	FUNCTIONS:														*
**			VOID Application_Initialize(VOID *)						*
********************************************************************/

/* Include necessary Nucleus PLUS files.  */
#include "nucleus.h"
#include "task.h"
#include "Keyboard_drv.h"
#include "Applications/inlcudes/hardware_reg.h"
#include "Applications/inlcudes/hardware_intc.h"
/* define global variables */
/* tasks */
NU_TASK			IDLE_TASK;
NU_TASK			GUI_TASK;

//NU_TASK         _Modbus_Task;
NU_HISR         _Modbus_Task;
NU_HISR			PROTECT_TASK;
NU_HISR         _SaveValue_Task;
NU_HISR         _LoadValue_Task;
NU_HISR         _Errwav_Write2Flash;
/* memory pool */
NU_MEMORY_POOL	System_Memory;

/* HISR */ 
//NU_HISR			HISR_READ_AD;

/* timer */
NU_TIMER		TIMER_SELF_CHECK;


extern	void C_Board_Init(void);
extern	void readAD_Init(void);
extern 	int	 ModuleLed(void);
extern 	void Protect_Init(void);
extern	void MOD_init(void);
extern	int  ERC_System_Error(int);
extern void RTC_Int_Inital(void);
extern void Initial_System_Menu(void );
extern void Errwav_Write2Flash(void);
extern void Modbus_Task(void);
extern void Initial_Value_Parameter(void);
extern int LED_printf(const char *, ...);

void goWhile()
{
	while(1);
}

struct app{
			void (*fun)();
		};



VOID    Application_Initialize(VOID *first_available_memory)
{
	void *		pointer;
	STATUS		status;
	//float test = 0;
	
	
	/* 芯片初始化 */
	C_Board_Init();
	readAD_Init();
	
	//在初始化gpio口前 往data寄存器里写值 
	*(volatile unsigned long *)PORTG_DATA |= 0x10;
	*(volatile unsigned long *)PORTG_DATA &= ~0x4;
	*(volatile unsigned long *)PORTG_DATA |= 0x2;
	*(volatile unsigned long *)PORTG_DATA |= 0x1;
	
	ModuleLed();			//LED初始化
	init_Key();
	 
	Protect_Init();
	//gui initial
	           //for common use
	Initial_MenuStatus();
	Initial_Stetting_Menu();
	Initial_Measure_Menu();
	Initial_System_Menu();
	
	//LED_printf("%f",ssss);
	
	
	
	/* 中断部分 */	
	
/*********************************************************
**	任务部分											**
**	创建并初始化任务									**
**	任务列表:											**
**		 	IDLE_TASK		系统空闲任务				**
**			PROTECT_TASK	电动机保护主任务			**
**********************************************************/
	/* Create a system memory pool that will be used to allocate task stacks, queue areas, etc.  */
    status = NU_Create_Memory_Pool(&System_Memory, "SYSMEM",
                        first_available_memory, MEMORY_POOL_SIZE, 50, NU_FIFO);
    if (status != NU_SUCCESS)
    {
        ERC_System_Error(status);
    }
    /* 创建GUI任务 */
	
	NU_Allocate_Memory(&System_Memory, &pointer, TASK_STACK_SIZE, NU_NO_SUSPEND);
    status = NU_Create_Task(&GUI_TASK, "GUITASK", Gui_Task, 0, NU_NULL, pointer, 
                             TASK_STACK_SIZE, 50, 0, NU_PREEMPT, NU_START);        
   if (status != NU_SUCCESS) ERC_System_Error(status);
    NU_Suspend_Task(&GUI_TASK);
    
	/* 创建IDLE任务 */
	
	NU_Allocate_Memory(&System_Memory, &pointer, TASK_STACK_SIZE, NU_NO_SUSPEND);
    status = NU_Create_Task(&IDLE_TASK, "IDLETASK", Idle_Task, 0, NU_NULL, pointer, 
                             TASK_STACK_SIZE, 100, 0, NU_PREEMPT, NU_START);        
    if (status != NU_SUCCESS) ERC_System_Error(status);
    
    /* protect任务  高级中断 */
	
	//NU_Allocate_Memory(&System_Memory, &pointer, TASK_STACK_SIZE * 10, NU_NO_SUSPEND);
    status = NU_Create_HISR(&PROTECT_TASK,"HISR_PROTECT",Protect_Task,0,0x1fff1000,1024*16);     
    if (status != NU_SUCCESS) ERC_System_Error(status);
    
    
     /* Modbus任务   高级中断*/ //
   
    
	NU_Allocate_Memory(&System_Memory, &pointer, TASK_STACK_SIZE , NU_NO_SUSPEND);
    status = NU_Create_HISR(&_Modbus_Task,"Modbus_Task",Modbus_Task,1,pointer,TASK_STACK_SIZE);     
    if (status != NU_SUCCESS) ERC_System_Error(status);
    
  
       //数据储存 高级中断
 
   NU_Allocate_Memory(&System_Memory, &pointer, TASK_STACK_SIZE , NU_NO_SUSPEND);
    status = NU_Create_HISR(&_SaveValue_Task,"SaveValue_Task",SaveValue_Task,2,pointer,TASK_STACK_SIZE);     
    if (status != NU_SUCCESS) ERC_System_Error(status);
    
    
     //数据读取  
   
     NU_Allocate_Memory(&System_Memory, &pointer, TASK_STACK_SIZE , NU_NO_SUSPEND);
    status = NU_Create_HISR(&_LoadValue_Task,"LoadValue_Task",LoadValue_Task,2,pointer,TASK_STACK_SIZE);     
    if (status != NU_SUCCESS) ERC_System_Error(status);
    
    
    /* 故障录波高级中断*/
    /*
     NU_Allocate_Memory(&System_Memory, &pointer, TASK_STACK_SIZE, NU_NO_SUSPEND);                     
    status = NU_Create_HISR(&_Errwav_Write2Flash,"Errwav_Write",Errwav_Write2Flash,2,pointer,TASK_STACK_SIZE);     
    if (status != NU_SUCCESS) ERC_System_Error(status);
    
    
    
    
  
    if (status != NU_SUCCESS)
    {
        ERC_System_Error(status);
    }
    
    
   
   ErrRecWave_Initial();
   */
  
   ModuleUart();
   MOD_init();
   RTC_Int_Inital();
   
/*********************************************************
**	定时器部分											**
**	创建并初始化定时器									**
**	定时器列表:										**
**		 	TIMER_SELF_CHECK	定时自检				**
**			PROTECT_TASK	电动机保护主任务			**
**********************************************************/
	/* 定时自检任务 */
	/*status = NU_Create_Timer(&TIMER_SELF_CHECK, "selfcheck", Timer_Self_Check, 0, 100, 100, NU_ENABLE_TIMER);
	if (status != NU_SUCCESS)
    {
       ERC_System_Error(status);
    } */   
    
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -