本帖最后由 黑皮男 于 2016-12-5 23:31 编辑
' T$ ^, g0 h/ H; y+ m& k/ P
- j5 G, J/ i- n, m4 }: D 上周兑换的NUCLEO-L073今天终于收到了,虽然当时是奔着F7去的,太激动了,操作太慢,最好整个个L073。我已成为ST开发板控了,每次积分兑换都要参加,F303,L476, F412(这个还在试用中),手上还有同学的两块正点原子的F103和F407开发板,别人收集邮票什么的,我收集开发板再加上一块A9开发板,还打算入手树莓派这样的,只不过还在犹豫。闲话少说,开箱首测串口通信。先看一下工程目录。
1 c C$ s8 ?, B2 V" r9 [base---实现整个系统的基础代码,虽然不是和硬件相关的,但是像时基这样的回掉函数是在这里实现的
" ]1 w+ ]( C4 j6 ^& t! Tbsp---硬件驱动层,屏蔽硬件,并提供相关接口给module
2 ?/ f, r2 F7 T* w# f7 F2 l7 g4 `' cmodule---代码模块,硬件无关层,调用bsp提供的接口实现硬件无关的软件接口,比如IIC,串口,SPI等( l9 s2 |# p# g* ]7 q
library---库,包括lwip,st库,OS库等
6 r# f' D2 `% B0 {1 x7 Auser---用户应用层,主要实现应用层序
- Z2 h4 p9 f# P# b在后续的开发中,如果这中工程管理方法OK的话,后续还打算实现一个OS驱动接口,主要是基于OS提供基于操作系统的驱动接口。
O: v* o* {6 A7 K4 B下面看一下串口的代码
+ u9 @ G- k+ quart.c---bsp中硬件驱动,提供的接口函数如下0 v/ b2 p% H1 E h e: f, L
- void UartInit(USART_TypeDef *instance,UINT32_T baudrate);//串口初始化+ c3 H. Y0 \" R, c: G
- UINT8_T UartWriteByte(USART_TypeDef *instance, UINT8_T data);//串口字节发送
' F; z B" P5 o2 D+ R - void UartSetRxCb(USART_TypeDef *instance,RxCallback cb);//设置串口接收回调函数,当有数据接收到时会调用回掉函数。
复制代码
0 e, B5 {1 B. Ecom.c---module中实现的硬件无关抽象代码。下面是提供的接口, [# b! r6 Q- e/ h3 m& k. }# F
- typedef enum{2 z/ Y8 W# U( L9 v: y
- COM1,
8 h8 h# _0 d' C" D - COM2,
8 a& L" z8 C1 v/ K - COMn+ }% m+ C2 D4 D2 X _1 x
- }Com_t;
- _8 t/ M' b/ }8 ]% r& K - : f" Q9 a2 t% U+ B, v* M
- UINT8_T ComInit(Com_t com, UINT32_T baudrate);//串口初始化3 j+ @9 H& D" k {4 F# S
- UINT8_T ComWrite(Com_t com, UINT8_T *buf, UINT16_T count);//串口数据发送,当count为0时,按字符串发送。
复制代码
O% I* {0 A7 L, g/ a0 o# I- p: e6 T* [) |! l/ g
com_interface.c---提供串口接口,实现回调外部模块接口函数。
, j7 y Z( C# u6 P9 a9 k- void ComReceive(Com_t com, UINT8_T data)3 m$ I5 A; i3 v* q$ T
- {: J4 o6 s$ n- M4 ]: O+ o
- switch(com)
# x2 K+ _$ R( U - {
5 C1 ?4 i9 d! c - case COM1:; A3 K4 G* s8 q# ~, K. v5 K) v( g
- //ConsoleInputData(MSG_COM1,data);//此函数是一个接口函数,处理接收到的串口数据/ H) Q; x3 Y# q
- break;
5 q0 g B& b, J: e) C5 X) {7 X - case COM2:
2 I+ k- k% p7 i1 u
: _# h% { C1 k: z+ I/ j- break;% @9 e& F" {$ P
- }
8 i1 S/ l" _4 u) Q - }
复制代码 4 k' D; c* X: t& l( s& v- ~
1 o. W; a7 g" l2 ]: |6 |
这里仅上传了串口相关的代码,命令行部分还在整理测试,暂时不上传了。看一下效果) \$ b9 i* c' Q2 t
# s) f, p9 U1 X1 n, q& S
T- l- T4 f1 m, Q0 S( M0 |) D
加一张特写( ?4 ?2 ^* \% u9 a, [( l4 m+ X2 d
( x4 v" `1 b& N2 l. V% X* U' r$ `
: a7 F; G: ^& i+ L1 x* D" G6 v
& V, p& k. l8 w: n" r6 H. ]# n |
同喜同喜
貌似楼友起的好早啊
参考正点原子的调试组件,只不过我是以空格分隔命令和各个参数
昨晚睡得早,今天起得早