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

📄 system.c

📁 一个arm7实例
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -