楼主也是参考别人整理的,主要是为了和我一样的菜鸟 进行 CTRI+C CTRL+V 做的准备 让你一分钟就移植成功,后续我再做在操作系统TreeRTOS下的,当前别人可以做一下 方便我们学习,不BB了,看效果图:* F7 l+ \( l u2 ]" i7 M6 Q5 s 命令结束符是回车 这个主意一下 ,不然就是未识别命令,我估计很多人会用SecureCRT 这类软件,这个是可以用的,自己配置一下就OK. g3 j2 |& X- p : W" A4 U6 g3 V5 ^ s/ R 7 @! B7 Q) b" x6 G8 Y+ {$ f% R 代码解析概要:8 B0 v) v1 v. [ 中断接收处理: 这段代码的方式大家应该陌生,收到之后缓存5 A: ^: Y" G0 [! W$ h) ^% i int i; unsigned char ch; void USART1_IRQHandler(void) { ch = getchar(); if(ch!=0), i: a$ H+ K) D. i { cmd[i++] = ch;# C( G. x5 z1 V, |( X: Q if(i>CMD_MAX_LENGTH)5 r' ?. Z; ]1 k6 [! w5 X9 u7 \ {' {- ]( m+ D5 D2 G i = 0; } if((cmd[i-1]=='\n')&&(cmd[i-2]=='\r'))) \8 u( N1 n3 c d { cmd[i-1]=0;! }( ~2 m0 E3 f7 d- m3 h cmd[i-2]=0; i=0; flag=1 ;$ b; d# v! s0 r7 c+ z / b S3 I/ F8 w) M/ q+ i' I- m } : u7 [5 D5 v; x: Y% h, I1 l+ R/ ] }( s- i& q! ~# _ } 重定向C语言函数 int fgetc(FILE *f) { while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);" c; R8 m: v8 W7 B* t' ^: z return (uint8_t)USART_ReceiveData(USART1); } int fputc(int ch, FILE *f) { USART_SendData(USART1, ch);. X( Q+ A+ P! B, Q$ x& z while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET );5 b& v# `6 n' i. ] return ch;( D. L9 I. {2 d+ \5 {- l6 [ }: t# M% z' O9 [( d$ H! [5 }6 e - P8 C H9 P7 o: f; a$ o+ G ( a5 b+ I" k/ C; w: a. Z" a 命令缓存) D6 g* }' W D3 _ $ a6 [! @) `: y8 A 5 i& v' q- h. R7 c tCmdLineEntry g_sCmdTable[ ] =$ s2 z; d4 ]. {# G {& z# n8 i/ ?+ L, j {"help", Cmd_help,"\t\tisplay list of commands\r\n" }, {"?", Cmd_help,"\t\tisplay list of commands\r\n" }, {"getbaud", Cmd_get_baud,"\t\t:Get the current baud rate\r\n"}, {"getstate", Cmd_get_state,"\t:Get the current flag state\r\n"},7 T; w# F3 d0 o1 I/ k4 V0 u {"setstate", Cmd_set_state,"\t:Set the current flag state \r\n"}, {"resetmcu", Cmd_MCU_Reset,"\t:Reset MCU\r\n"}, {0,0,0} }; , d- i7 `5 y# a: ` ) [9 S4 e% L& o$ ~4 \* q1 A 9 x2 l2 Q) ~% s" W1 e 这个 格式就是 输入的命令 函数名字 提示符 自己往里面加就可以了/ J% Q" r8 W4 O7 W- ], C0 j9 c 至于这些函数自己实现就行了 int Cmd_get_baud(int argc, char *argv[]), }0 S, v$ V) b {1 u7 J" n N: ~; M+ ] uint32_t baud=115200; uint8_t APP_Data[8]={ 0xAA,0x01,0x00,0x00,0x00,0x00,0x00,0x55};//»ñÈ¡ÐÒéÊý¾Ý uint8_t i; printf("baud= %d\r\n",baud);- H. g9 t* S0 g& r! Q t: B( |1 c for(i=0;i<8;i++) {% ?, `: ^* P2 N1 k0 ^& ? printf("APP_Data[%d]=%-d\t",i,APP_Data); } return 0; }" T6 E/ b* i8 Q) M8 z1 e ) A! t+ g( w2 l) c) d: U 就这样: 注意 很多和我一样的菜鸟不玩linux 可能对函数int Cmd_get_baud(int argc, char *argv[]) 不是很懂,建议百度 秒懂 8 }: [( {! J5 t! X. \* S! l; x* G 命令解析部分 可以不用管 看这个函数 主要就是提取解析 结束符和 上面红色函数的参数,其实我也不是很懂,有能力的可以详细解释一下5 K+ z& B! b: N# }# E int CmdLineProcess(char *pcCmdLine) . b1 v1 j" O) d4 u main函数 while(1). [: p% c, l+ E4 X# N { if(flag)6 b" S, B6 [: h( O+ I4 {6 l2 p { : P" E( U7 M, Y% I' y. i if(CMDLINE_BAD_CMD == CmdLineProcess(cmd)). d1 n$ A& D) H" m& @8 @; ~. T { printf("unkown command, please input \"help\" \n\r");6 n) ~. ^% K: K+ f, E/ E* m }& B7 @+ Q% P1 D9 \, T$ Y flag=0; 9 x4 i! m9 P( K2 x0 y: B } 2 n0 U# m$ z$ o7 ~2 B }+ o1 I/ }) R& ] 打工搞成 ,记得选Use MicroLIB 不然可能会死机哦 如果自己修改过不用这个库的话 就不必要做了 |
STM32F10xxx 正交编码器接口应用笔记 及源代码
小马哥STM32F103开源小四轴RoboFly全部资料大放送
分享一个STM32F103的硬件IIC代码库,完美解决IIC问题!
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
MultiButton移植到STM32F103战舰开发板
UDS诊断服务
使用Nano板验证驱动SPI串口屏的颜色显示
使用STM32F103制作的无线下载器
STM32F103移植LittlevGUI代码
【MCU实战经验】+自制MP3使用STM32F103ZET6和ch375读取u盘,vs1003解码,音质超棒
源代码没有问题!
提交了啊 ,欢迎下载
谢谢大神
欢迎分享