本帖最后由 黑皮男 于 2016-12-5 23:31 编辑
* D. ~6 a h! i4 p* f# z) [' _
+ Q6 e2 o, j. Q) g3 b 上周兑换的NUCLEO-L073今天终于收到了,虽然当时是奔着F7去的,太激动了,操作太慢,最好整个个L073。我已成为ST开发板控了 ,每次积分兑换都要参加,F303,L476, F412(这个还在试用中),手上还有同学的两块正点原子的F103和F407开发板,别人收集邮票什么的,我收集开发板 再加上一块A9开发板,还打算入手树莓派这样的,只不过还在犹豫。闲话少说,开箱首测串口通信。先看一下工程目录。
' c- N( Q2 q1 h( j" kbase---实现整个系统的基础代码,虽然不是和硬件相关的,但是像时基这样的回掉函数是在这里实现的
* j6 p6 d, k& F* E& Kbsp---硬件驱动层,屏蔽硬件,并提供相关接口给module
- n* {7 ?: |5 H% F$ _. Kmodule---代码模块,硬件无关层,调用bsp提供的接口实现硬件无关的软件接口,比如IIC,串口,SPI等
- k6 g& Q' @( T) H& Olibrary---库,包括lwip,st库,OS库等
. P! Z; _6 ]/ B- Luser---用户应用层,主要实现应用层序
1 d' f' u" Z4 N在后续的开发中,如果这中工程管理方法OK的话,后续还打算实现一个OS驱动接口,主要是基于OS提供基于操作系统的驱动接口。
8 K- v( W$ @7 d V下面看一下串口的代码
: O- w. s+ ^( fuart.c---bsp中硬件驱动,提供的接口函数如下/ m2 W) G, m3 J. f
- void UartInit(USART_TypeDef *instance,UINT32_T baudrate);//串口初始化# R+ C5 R! Q" I# ]0 c" |
- UINT8_T UartWriteByte(USART_TypeDef *instance, UINT8_T data);//串口字节发送; k4 n4 ~( E# r
- void UartSetRxCb(USART_TypeDef *instance,RxCallback cb);//设置串口接收回调函数,当有数据接收到时会调用回掉函数。
复制代码 & N" W8 s0 p; V$ T0 C
com.c---module中实现的硬件无关抽象代码。下面是提供的接口8 b' G2 F1 ~: K5 l0 E$ X) [3 ?
- typedef enum{
$ T' X# @4 Z+ L# X* V' ?4 B - COM1,9 b2 L* R- M" I7 D$ e
- COM2,3 _! |& j( d& ]7 s* |
- COMn N% @: @9 V# e. P9 L8 A$ L+ T
- }Com_t;3 N$ h; A: W4 Z. j
' A8 M7 O+ f6 o- UINT8_T ComInit(Com_t com, UINT32_T baudrate);//串口初始化; _ B+ ^" D7 Y6 r
- UINT8_T ComWrite(Com_t com, UINT8_T *buf, UINT16_T count);//串口数据发送,当count为0时,按字符串发送。
复制代码 " ~+ V( t9 W9 u6 s
. m2 l+ R K& f
com_interface.c---提供串口接口,实现回调外部模块接口函数。
3 D$ s- R( \+ U- void ComReceive(Com_t com, UINT8_T data)1 H! X, Z/ b f `$ }
- {- T6 R+ ^: v( {/ a* z5 Q( A8 b
- switch(com)
8 B( V) B, k6 e+ V2 J5 L' h - {
) R4 l% {/ }' `# @* {2 m - case COM1:
3 B5 D6 V9 k) E - //ConsoleInputData(MSG_COM1,data);//此函数是一个接口函数,处理接收到的串口数据
$ s; ~$ M4 b$ M! _' m - break;0 r; G8 w/ I5 ^" ~+ h$ {' }
- case COM2:
1 b* K, Q6 B$ z* r1 v
. d; n u8 Z U2 p% @. ?4 k- break;2 Q1 i1 ^, r# j' G; Y: F& h5 ^
- }) ?% r' ?0 f! x% V" T1 y4 j5 I
- }
复制代码
6 L& h8 H* p- l8 A+ f. q, i. K: E+ t8 e6 A- N( V9 X7 B1 f
这里仅上传了串口相关的代码,命令行部分还在整理测试,暂时不上传了。看一下效果
5 {- }& U/ b+ e0 Z9 ]& n% z
. J. n7 \7 O' n1 O- X9 A) R/ e6 W
1 G D3 F4 x8 D8 d, A0 O7 q
加一张特写
! v1 T5 M- h. X; G5 R- W/ W+ N, l4 z0 a0 A, h. q4 J. K
6 K- t! E1 j& X& ^0 s+ K# X4 F
; I6 f) B9 C+ w# j3 K% e |
同喜同喜
貌似楼友起的好早啊
参考正点原子的调试组件,只不过我是以空格分隔命令和各个参数
昨晚睡得早,今天起得早