查看: 2947|回复: 2

麒麟座mini之三-接口、模块、硬件驱动

[复制链接]

该用户从未签到

发表于 2017-9-17 21:31:21 | 显示全部楼层 |阅读模式
分享到:
本帖最后由 zhouzpd 于 2017-9-18 21:05 编辑

麒麟座mini之三-接口、模块、硬件驱动

上期使用STM32CubeMX生成了开发环境和资源配置。这次编写串口等驱动。
麒麟座mini之二-开发环境搭建、资源配置、硬件测试

这周公司旅游,周日晚上抽了点时间简单完成了一个串口转发功能。

接口
分层设计
分层设计即将软件设计按层级分开,如分为MCU层、硬件层、应用层,使得每层相互独立,从而可移植可替换。这就需要做到层与层之间具有统一的接口。

接口
接口即不同层或不同模块间的关联。。

模块
模块
每层由若干个模块组成,并且模块与模块之间做到低耦合,通过统一的接口关联,从而可移植可替换。

硬件驱动
硬件驱动其实就是硬件层的模块

串口驱动
首先,需要确定需要提供什么样的接口,如发送、发送完成、接收、接收完成、接收个数等。

我定义了几个接口函数:

发送——BOL HDW_UartTxStart(UARTNUM u, U16bytes)

发送完成——BOL HDW_UartTxIsFinish(UARTNUM u)

接收——BOL HDW_UartRxStart(UARTNUM u)

接收完成——BOL HDW_UartRxIsFinish(UARTNUM u)

接收个数——U16 HDW_UartRxCnt(UARTNUM u)

等一些接口。

串口转发
将串口1的接收的数据转发到串口2,将串口2接收的数据转发到串口1,从而实现通过串口1和电脑端串口工具来调试WIFI模块。
  1. void DBG_TestUartThrough(void)
  2. {
  3.     U16 rxcnt=0;
  4.    
  5.     if(HDW_UartRxIsFinish(UARTNUM1))
  6.     {

  7.         rxcnt = HDW_UartRxCnt(UARTNUM1);
  8.         memcpy(HDW_UartTxBufAddr(UARTNUM2), HDW_UartRxBufAddr(UARTNUM1), rxcnt);
  9.         HDW_UartTxStart(UARTNUM2, rxcnt);
  10.         HDW_UartRxStart(UARTNUM1);
  11.     }

  12.     if(HDW_UartRxIsFinish(UARTNUM2))
  13.     {

  14.         rxcnt = HDW_UartRxCnt(UARTNUM2);
  15.         memcpy(HDW_UartTxBufAddr(UARTNUM1), HDW_UartRxBufAddr(UARTNUM2), rxcnt);
  16.         HDW_UartTxStart(UARTNUM1, rxcnt);
  17.         HDW_UartRxStart(UARTNUM2);
  18.     }
  19. }
复制代码
3.0.png

下期预告

麒麟座mini之四-WIFI驱动、OneNet、家庭温湿度

回复

使用道具 举报

该用户从未签到

发表于 2017-9-18 16:37:04 | 显示全部楼层


下期预告应该是之四啦~
TIM截图20170918163611.png
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2017-9-18 21:01:50 | 显示全部楼层
ky123 发表于 2017-9-18 16:37
下期预告应该是之四啦~

感谢斑竹提醒,已改正了一些文字。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条



手机版|小黑屋|与非网

GMT+8, 2024-4-19 22:47 , Processed in 0.128832 second(s), 20 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.