📄 system.c
字号:
#include"config.h"#include"uartdriver.h"#if OS_SHELL_EN>0static INT8U cmdbuf[CMDLEN+1]; /*命令接受缓冲区*/INT8U const cmmd[CMD][CMDLEN]={"s cpu","s tick","s prio","s swctr","s taskctr", "s all","help","exit","time","run","reset","clr", "del ","spd ","rsm ","cmd8","cmd9","cmd10","cmd11", "cmd12"}; /*命令集*/#endif/*******************************************************************************//*延时函数delayNs,延时时间与输入值有关*//*******************************************************************************/void delayNs(INT32U x){ INT32U y; for(;x>0;x--) for(y=0;y<5000;y++);}/*******************************************************************************//*uart0初始化,入口参数既波特率*//*******************************************************************************//*void uartinit(INT32U UART_BPS){ #if OS_SEND_EN>0 INT32U Fdiv; PINSEL0|=0x00000005; U0LCR=0x83; Fdiv=((Fpclk/16)/UART_BPS); U0DLM=Fdiv/256; U0DLL=Fdiv%256; U0LCR=0x03; U0FCR = 0x00; #endif}*//*******************************************************************************//*字符型数字转为纯数字*//*******************************************************************************/INT32U NumChang(INT8U *string){ INT8U base=10; INT8U minus=0; INT8U lastIndex; INT32U result=0; INT8U i; if(string[0]=='-') { minus=1; string++; } if(string[0]=='0' && (string[1]=='x' || string[1]=='X')) { base=16; string+=2; } lastIndex=strlen(string)-1; if( string[lastIndex]=='h' || string[lastIndex]=='H' ) { base=16; string[lastIndex]=0; lastIndex--; } if(base==10) { result=atoi(string); result=minus ? (-1*result):result; } else { for(i=0;i<=lastIndex;i++) { if(isalpha(string[i])) { if(isupper(string[i])) result=(result<<4)+string[i]-'A'+10; else result=(result<<4)+string[i]-'a'+10; } else { result=(result<<4)+string[i]-'0'; } } result=minus ? (-1*result):result; } return result;}/*******************************************************************************//*uart0发送一字节数据*//*******************************************************************************/void sendbyte(INT8U data){ #if OS_SEND_EN>0 U0THR=data; while((U0LSR&0x20)==0); #endif}/*******************************************************************************//*uart0接受一字节数据*//*******************************************************************************/char revbyte(void){ /* #if OS_SEND_EN>0 INT8U data; data=U0RBR; while((U0LSR&0x01)==0); data=U0RBR; return(data); #endif */ return UARTRevByte(0);}/*******************************************************************************//*uart发送字符串*//*******************************************************************************/void sendstr(INT8U *str){ #if OS_SEND_EN>0 while(*str) { sendbyte(*str++); //发送数据 delayNs(1); } #endif}/*******************************************************************************//*uart0接受字符串*//*******************************************************************************/void revstr(INT8U *str){ #if OS_SEND_EN>0 INT8U i; while(1) { i=revbyte(); sendbyte(i); if(i=='\r')break; if(i==8) str--; else *str++=i; } #endif}/*******************************************************************************//*格式化输出*//*******************************************************************************/void sysprintf(char *fmt,...){ #if OS_SEND_EN>0 va_list ap; static char string[64]; va_start(ap,fmt); vsprintf(string,fmt,ap); sendstr(string); va_end(ap); #endif}/*******************************************************************************//*字符串比较*//*******************************************************************************/INT8U cmp(INT8U*str1,INT8U*str2){ for(;*str1!='\0';) { if(*str1!=*str2)return 1; str1++; str2++; } return 0;}/*******************************************************************************//*查看CPUUSAGE*//*******************************************************************************/void CPUUsage(void){ #if OS_SEND_EN>0 sysprintf("CPU usage %5d",OSCPUUsage); sysprintf("%c\n\r",'%'); #endif}/*******************************************************************************//*查看任务总数*//*******************************************************************************/void TaskCtr(void){ #if OS_SEND_EN>0 sysprintf("Task total %6d\n\r",OSTaskCtr); #endif}/*******************************************************************************//*查看上下文切换次数*//*******************************************************************************/void SWCtr(void){ #if OS_SEND_EN>0 sysprintf("TaskSW total %6d\n\r",OSCtxSwCtr); #endif }/*******************************************************************************//*查看但前任务优先级*//*******************************************************************************/void Prio(void){ #if OS_SEND_EN>0 sysprintf("Task Prio %6d\n\r",OSPrioCur); #endif}/*******************************************************************************//*查看滴答数*//*******************************************************************************/void Tick(void){ #if OS_SEND_EN>0 sysprintf("Time tick %6d\n\r",OSTime); #endif}/*******************************************************************************//*查看以上所有*//*******************************************************************************/void SeeAll(void){ #if OS_SEND_EN>0 CPUUsage(); TaskCtr(); SWCtr(); Prio(); Tick(); #endif}/*******************************************************************************//*系统开始*//*******************************************************************************/void SysStart(void){ #if OS_SEND_EN>0 sysprintf("+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\r"); sysprintf(" uC/OS\n\r"); sysprintf(" Version %d.%d\r",OS_VERSION/100,(OS_VERSION-(OS_VERSION/100)*100)); sysprintf(" By Jean J. Labrosse\n\r"); sysprintf("-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n\r"); sysprintf("Initiatint...\n\r"); #endif}/*******************************************************************************//*系统清屏*//*******************************************************************************/void ScreenClr(void){ #if OS_SEND_EN>0 sysprintf("\n\r\r\r\r\r\r\r\r\r\r\r"); #endif }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -