原创 将Shell移植到串口上(三)

2009-10-29 17:06 4380 6 6 分类: MCU/ 嵌入式

https://static.assets-stash.eet-china.com/album/old-resources/2009/10/29/5af5d90f-f260-446f-8390-c6ad9967c601.rar现在这个程序的通用性比较强了,因为各种stm32处理器的配置都差不多相同,串口命令中断的使用在各种开发板上应该都能用。不过按键输入和液晶显示只能在智林STM32开发板上使用。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


Shell移植到串口上(三)


一、概述


到现在,这个简单shell的架构算是比较完整了,既可以利用开发板上的几个按键输入命令,在液晶上回显并执行命令。而且现在也可以使用串口终端来进行控制了,使命令的输入很方便,更加适合于开发复杂一些的程序。


二、程序结构简单介绍


1startup


   两个文件:(1stm<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />32f10x_vector.s是初始化文件,主要是定义了堆栈大小、用户堆、stm32向量表、复位处理程序和一个堆栈处理程序__user_initial_stackheap。(2stm32的库文件。


 


2ucos_stm32


  也包含两个文件,是usos操作系统在stm32处理器上的移植文件。现在我使用ucos操作系统还是现成,以后要花时间将它好好研究一下。


3ucos源文件组


 


4shell文件组


   里面两个文件:1)一个是lcd.c,现在有用的主要是LCD_PutChar()函数,用于在液晶上输出字符,以后移植GUI的时候,还要编写一些函数。(2shell.c,该文件利用LCD_PutChar()实现的液晶字符输出,并利用字符位置、背景色和前景色等全局变量实现字符的格式化输出。比如Shell_PutChar(‘\n’),显示会产生回车换行的效果。


 


5device文件组


对于智林stm32开发板上外围设备的驱动,基本上都在这里。现在有5个文件。1board_config.c:开发板硬件配置文件,主要进行时钟系统配置。NVIC的总配置。开发板上用到的GPIO口,其他外围设备的IO口复用、初始状态和终端配置等。


2rtc.c现在我的开发板可以实现24小时显示,与实际时钟是对应的。如果重新编译使用,需要写入当时的运行时间。以下是RTC初始化中的一段程序


u8 s[9]="16:54:11";  //程序何时下载运行,该变量应改为当时时间。


      if (BKP_ReadBackupRegister(BKP_DR1) !=0xAAAA )


       {


         RTC_Init();       //RTC进行初始化


         RTCCount=Time_GetCountFromStr(s);        //从时间串获取对应计数值


         RTC_SetCounter(RTCCount);             //将计数值写入RTC计数器


 


         RTC_WaitForLastTask();


         BKP_WriteBackupRegister(BKP_DR1, 0xAAAA);


       }


3speaker.c。现在就一个函数,让扬声器以500Hz的频率发出声音,用于命令缓冲区满,或者提示符下按退格键时使用。以后文件系统移植成功了,可能还要添加一些函数用于播放音乐。


4func_getchar.c这个函数主要是模拟键盘的。我再前面的文章中对相关的实现方法做了一些介绍,这里就不再重复了。


5uart.c。实现了Uart_Putchar(),Uart_PutString()等函数,用于在串口终端显示。


 


6userapp文件组


该文件组主要是用户任务文件和中断程序文件。


1user_app.cmain函数和开始任务在这个文件。


2stm32f10x_it.c,中断程序基本都在这里定义。


3task_keyscan.c,键盘扫描任务文件。


4task_cmdshell.c,利用键盘和液晶实现的简单shell


5task_uartcmd.c,利用串口中断实现命令处理。


 


7userlib文件组


在用户任务中用到的体积比较大的函数在这个文件组实现。


1cmdtable.c,任务cmdshell中用到的命令函数。


2uartcmd.c,任务uartcmd中用到的命令函数。


 

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条