上一篇写了在FPGA上实现了UART,但是仅仅是实现了硬件, 要想用,还要赋予它灵魂,

UART在RTT上驱动,rtthread提供了2个文档《串口设备驱动框架详解》《串口设备驱动开发指南》,非常好用,基本上按照文档上说的方法,再找一个demo驱动,一天就能做一个成熟 的uart驱动。

这里我要说几点总结,应该也是rtt中uart实现的一些思想,

1,serial.c这个文件是串口驱动的核心,是硬件无关的,(所有与硬件相关的功能使用回调函数实现)

2.在drv_uart.c中,需要实现的最基本的硬件相关函数,包括收,发,控制等,这些函数drv_uart.c不用,也是以函数指针的方式注册到串口驱动中,供serial.c回调使用,

这种方式最大化的实现了硬件与硬件无关的分离,  方便驱动设计 与维护。 体现了rtthread作者的智慧。

(当使用DMA方式接收串口数据时, 接收缓冲区是动态分配的,大小 在rt_config.h里面配置;对了DMA接收时,串口收到数据,怎么通知上层呢?原来STM32串口是有一个空闲中断的,UART_IT_IDLE,如果串口正在接收数据突然断了,会产生一个中断,在此中断中可以通知上层应用及时取有缓冲数据rx_indicate())

UART在rtt下驱动实现相关推荐

  1. linux摄像头 自动对焦,基于H3在Linux下驱动OV5640摄像头的方法与流程

    技术特征: 1.基于H3在Linux下驱动OV5640摄像头的方法,其特征在于,包括如下步骤: S1打开OV5640摄像头所对应的设备文件/dev/videoX: S2为OV5640摄像头驱动添加读写 ...

  2. STM32F103C8T6在Arduino框架下驱动SH1106 1.3“ IIC OLED显示

    STM32F103C8T6在Arduino框架下驱动SH1106 1.3" IIC OLED显示 效果展示: 相关篇<STM32duino开发的底层驱动程序-bootloader> ...

  3. Linux下驱动开发

    Linux下驱动开发 1.简介   驱动,是指驱动计算机里软件的程序.驱动程序全称设备驱动程序,是添加到操作系统中的特殊程序,其中包含有关硬件设备的信息.驱动程序是操作系统与硬件连接的桥梁.   设备 ...

  4. 在Linux下驱动D-link DFE-530TX(最终稿)(转)

    在Linux下驱动D-link DFE-530TX(最终稿)(转)[@more@]本文仅做参考 D-Link公司出的网卡是大众化中档网卡,它的DFE-530TX Rev A在较新的Linux下(如红旗 ...

  5. simulink模块,提供xpctarget下驱动源码

    simulink模块,提供xpctarget下驱动源码 :77999632700099250风中的蜗牛

  6. (4)高通AP10.4开发者指南——WLAN(1.4 Offload和direct-attach两种模式下驱动的模块化)

    1.4 Offload和direct-attach两种模式下驱动的模块化 这一章节主要描述当前WLAN驱动,模块化的设计与实现.Offload后续缩写为OL,Direct-Attach缩写为DA. W ...

  7. 关于SEED-XDS560V2PLUS在Win10下驱动不能正常识别问题的解决

    [Seed开发板及仿真器] 关于SEED-XDS560V2PLUS在Win10下驱动不能正常识别问题的解决 问题: 解决方案及操作: 1.        重启进入BIOS: 2.        进入S ...

  8. rtt下的adbd使用

    RTT 下的ADBD使用 1.引言 调试柿饼时,需要文件传输,由于智龙平台的RTT环境下USB还没有调试好.这里就使用ADB进行文件传输. 找到了何元杰的帖子,并参考 rdb 建立 RTT与PC 的文 ...

  9. 手把手教你如何在Ubuntu22.04下驱动 EPSON系列打印机---以爱普生 EPSON L380为例

    手把手教你如何在Ubuntu22.04下驱动 EPSON系列打印机-以爱普生 EPSON L380为例 系统:Ubuntu22.04 目标打印机:L380 一.检查你的数据线是否插好 这一步,非常最要 ...

最新文章

  1. linux编译警告不能连接,linux编译警告信息
  2. ​新型支架状电极允许人类思想操作计算机
  3. 17joys网站后台功能设计-阶段1
  4. 如何解决Error: failed PB timebomb check
  5. python acme_Python Hashlib模块 · Seacme Huang
  6. c++规定浮点数输出格式
  7. 常用SQL语句整理及示例
  8. 小学四年级计算机教案清华出版,清华版四年级下册信息技术电子备课教案
  9. 电子知识|电源管理芯片
  10. 微信小程序,点击右上角返回箭头,返回指定页面
  11. Excel表格匹配合并
  12. python提取部分字符串_python如何提取字符串
  13. 计算机专业的男生喜欢你,男生真心喜欢你的五个表现
  14. gluster集群服务器IP地址更改后导致服务无法启动的一个解决方法
  15. 语音信号的梅尔频率倒谱系数(MFCC)的原理讲解及python实现
  16. SLAM中双目三角化
  17. git 删除文件 、只删除远程仓库文件、更换远程仓库
  18. execve系统调用_系统调用execve的入口sys_execve() | 学步园
  19. 你告诉我,读书没有用
  20. java ldap 根ou_【LDAP】LDAP 中 CN, OU, DC 的含义

热门文章

  1. 输入时间的前一秒和后一秒(c语言)
  2. matlab画圆环立体图,在Matlab中可视化环形表面
  3. 智能家居(2) —— 工厂模式实现烟雾报警
  4. css特殊符号模拟(加号,减号,差号)
  5. 【开箱即用】vk-uniCloud-router - 云函数路由模式 - uniCloud企业级快速开发框架
  6. 清华梦的粉碎—写给清华大学的退学申请 2005.9.22[转贴]
  7. cak数控车床是计算机控制吗,CAK6132A数控车床常见故障及处理方案
  8. ubuntu 的firefox 下载速度慢
  9. AutoCAD /AutoCAD LT 2019 完整全语言 Crack 破解版
  10. DPR-Dense Passage Retrieval for Open-Domain Question Answering 论文阅读