原创 DIY U盘项目之 串口控制台

2009-2-16 21:04 4428 11 11 分类: MCU/ 嵌入式

https://static.assets-stash.eet-china.com/album/old-resources/2009/2/16/bcc02d4c-596c-40dd-8579-192e7b847653.rar


月初就收到21ic的DIY U盘项目的开发板了,一直没时间玩,这两天抽空弄了弄,


目前已完成基于串口的控制台,这里提供完整的工程下载。


转载请注明出处:青藤门客播报站


代码比较简单,这里值得一提的是,实现串口printf函数时利用了keil mdk的特性,


具体如下表:这个表可以在D:\Keil\ARM\Hlp\armlib.chm里找到


表 2.13. 输入/输出依赖性



低级对象    高级函数    
 fprintfprintffwritefputsputsfscanfscanffreadreadfgetsgets
__FILE[1]xxxxxxxxxxx
__stdin[2]??????x?x?x
__stdout[3]?x??x??????
fputc()[4]xxxxx??????
ferror()[5]xxx????????
fgetc()[6]?????xxxxxx
__backspace()[7]?????xx????


[1] 文件结构。



[2] __FILE 类型的标准输入对象。



[3] __FILE 类型的标准输出对象。



[4] 将一个字符输出到文件。



[5] 返回在文件输入/ 输出期间累积发生的错误状态。



[6] 从文件中取得一个字符。



[7] 将文件指针移动到前一个字符。请参阅 重新实现 __backspace()


 


参照上表,我们要使用printf输出到串口,只需要实现函数fputc, ferror即可,


即借助于输出重定向来使用printf,避免自己实现printf函数的浩大工程。


extern void ShellPutChar(char data); /* in shell.c */
struct __FILE
{
 int handle;
 /* Add whatever you need here */
};
FILE __stdout;


int fputc(int ch, FILE *f)
{
   ShellPutChar(ch);
   return (1);
}


int ferror(FILE *f)
{
  /* Your implementation of ferror */
  return EOF;
}


完整实现参见:Retarget.c


电路连接:开发板供电(可能过USB接口供电),串口接在comdebug上


运行效果如下:


04c3b31e-2a5f-4a5e-8458-a91e0d213eb2.JPG

文章评论0条评论)

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