📄 main.c
字号:
#include"uhal.h"
#include"myuart.h"
#include"..\UCOS-II\includes.h" /* uC/OS interface */
#include <string.h>
#include"..\startup\drv\MotorCtrl.h"
#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting
///******************任务定义***************///
OS_STK SYS_Task_Stack[STACKSIZE]= {0, }; //system task刷新任务堆栈
#define SYS_Task_Prio 1
void SYS_Task(void *Id);
OS_STK Main_Stack[STACKSIZE*8]={0, }; //Main_Task堆栈
void Main_Task(void *Id); //Main_Task
#define Main_Task_Prio 12
OS_STK Motor_Stack[STACKSIZE]={0, }; //Motor_Stack 堆栈
void Motor_Task(void *Id); //Motor_Task
#define Motor_Task_Prio 10
OS_STK AD_Stack[STACKSIZE]={0, }; //AD_Stack 堆栈
void AD_Task(void *Id); //AD_Task
#define AD_Task_Prio 9
int ADData[4];
int main(void)
{
ARMTargetInit(); //开发版初始化
OSInit(); // needed by uC/OS-II //
Uart_Printf("uart initialization is OK\n");
Uart_Printf("Create task on uCOS-II...\n");
OSTaskCreate(SYS_Task, (void *)0, (OS_STK *)&SYS_Task_Stack[STACKSIZE-1], SYS_Task_Prio);
OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_Stack[STACKSIZE*8-1], Main_Task_Prio);// 1
OSTaskCreate(AD_Task, (void *)0, (OS_STK *)&AD_Stack[STACKSIZE-1], AD_Task_Prio);// 1
OSTaskCreate(Motor_Task, (void *)0, (OS_STK *)&Motor_Stack[STACKSIZE-1], Motor_Task_Prio);// 1
Uart_Printf("Starting uCOS-II...\n");
OSStart(); // start the game //
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Main_Task(void *Id) //Main_Test_Task
{
for(;;){
// Uart_Printf("test %f!\n", f);
// Uart_Printf("task is running!\n");
OSTimeDly(100);
}
}
void AD_Task(void *Id) //AD_Task
{
int i;
float d;
init_ADdevice();
for(;;){
for(i=0; i<=3; i++){ //采样0~3路A/D值
ADData[i] = GetADresult(i) ;
d=ADData[i]*2.5/1023; // 数据 采集,处理
Uart_Printf("a%d=%f\t",i,d);
}
Uart_Printf("\r");
OSTimeDly(100) ;
}
}
void Motor_Task(void *Id) //Motor_Task
{
for(;;){
SetPWM((ADData[0]-512)*MOTOR_CONT/1024);
OSTimeDly(100) ;
}
}
void SYS_Task(void *Id)
{
OSRunning=TRUE; //使能多任务切换
uHALr_InstallSystemTimer();
Uart_Printf("start system task.\n");
for (;;)
{
// Uart_Printf("start system task.\n");
OSTimeDly(10000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -