📄 main.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 + -