你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

能用的单片机驱动源码

[复制链接]
wujique 发布时间:2018-4-24 17:12
STM32开发板很多,教程也很多,对于入门非常有帮助。
但是这些教程其实都是处于教学状态,特别是源码。
正好这段时间有空,决定整理一套有点用的源码。
目前所有硬件单模块测试已经完成。
决定放出来,希望有人能一起查BUG,一起完善。
程序已经放到github,应该会长期维护。
http://github.com/wujique/stm32f407
资料下载:
https://pan.baidu.com/s/1bHUVe6X6tymktUHk_z91cA

/-------------------------------------------------------------/
有以下特点:
1 基于实际项目思路,循序渐进开发驱动。
2 用驱动工程师视角,时刻考虑如何跟应用程序沟通,也就是提供什么接口。
3 很多驱动有一定设计,例如SPI,SPI FLASH,LCD驱动。
4 除了官方库和一些开源库,所有代码都是重新设计开发。
5 代码开源,欢迎商用,但不保证没BUG,后果自负。具体见源码说明。
有一个缺点:
说明文档不详细,因为我主要想做一套能用的驱动代码,
而不是一套基础教程。
/-------------------------------------------------------------/
目前正在移植freetos,然后做一套完整的系统测试程序。
*******************************
后续会做系统优化整合:
1. 中断优先级统一管理
2. 源码优化
3. 设备驱动框架-----将所有驱动统一 一套管理框架

4. BOOT-CORE-APP,程序分三层的方法。
******************************
更长计划:
1 移植UBOOT的命令行功能。
2 移植ELUA
3 GCC 编译环境
******************************
下面这些功能有时间也会添加进去:
T9拼音输入法
图片解码
MP3解码
视频解码
二维码生成
二维码解码

******************************
如果还有时间,会慢慢添加不同外设的驱动进去。
例如当前物联网上流行的各种传感器。
/-----------------------------大概说明--------------------------------/
对每个驱动开发都做了大概说明,不过当前主要在写代码,文档属于草稿阶段
123.JPG
- 1.1 软硬件环境准备
拿到硬件就直接上电?不要相信硬件工程师,你会被电容爆炸声吓到的。
- 1.2 开发环境优化与技能准备
你用什么软件编码:MDK自带环境?建议换一换,毕竟生产工具可以提高效率。
C语言咋样?会指针吧?
- 1.3 基于标准库建立工程模板
标准库使用
- 2.1 IO口输出-流水灯-证明程序在运行
LED,盲调的手段
- 2.2 串口-重要调试手段
Log需要管理。
中断和驱动程序如何衔接?
中断函数有什么关键要求?
- 2.3 IO输入-按键检测
如何去抖动?用Delay(10)防抖,浪费CPU生命。
- 2.4 定时器-代码调度器-中断
中断大概执行流程
- 2.5 定时器-PWM-蜂鸣器
定时器的第二功能
- 2.6 定时器-捕获-触摸按键
定时器第三功能
- 2.7 I2C-收音机-功放
IO模拟I2C通信设计。
- 2.8 DAC-波形-声音的真相
简单的提示音播放。
- 2.9 SPI-SPI FLASH
SPI的特性是什么?怎么写SPI驱动?
硬件SPI、模拟SPI两者如何统一接口?
SPI FLASH驱动如何写?
当有多个FLASH接在多个SPI上时,如何处理?
- 2.10 SDIO-TF CARD
如何参考官方例程?
- 2.11 I2S-wm8978-音乐播放
- 2.12 FSMC-TFT LCD调试记录
LCD的特性是什么?如何抽象LCD的特性?
抽象特性,也就是提炼LCD接口。
- 2.13 ADC-TSLIB-电阻式触摸屏调试
触摸屏校准用什么算法?试试TSLIB吧。
- 2.14 VSPI和XPT2046触摸控制芯片
模拟SPI(VSPI)和硬件SPI接口统一?
你关心过触摸采样频率吗?快速画一根线,有断线?
如何减少XPT2046读数据时间?
- 2.15 DCMI-摄像头功能调试
- 2.16 USB 调试记录
HOST跟DEVICE接口分开也叫OTG?
我们只用一个micro 口,自设计OTG电源切换电路。
- 2.17 ETH LAN8720 调试记录
移植官方例程。
- 2.18 can总线调试记录
简单的例程
- 2.19 RS485调试记录
RS485基于串口。
多个串口,驱动如何优化?
- 2.20 RTC调试记录
- 2.21 alloc-内存管理
为什么要内存管理?用什么算法?
- 2.22 COG LCD 和OLED LCD 调试记录
与TFT LCD有什么不同和相同?能不能用相同的接口?
- 2.23 模拟SPI控制COG LCD,I2C控制OLED LCD
I2C、spi、模拟SPI,三种不同LCD接口?如何封装?
程序如何分层?LCD驱动如何灵活使用不同接口?
从LCD驱动拆分一层LCD接口层,以便实现一个LCD驱动对应多个硬件接口。
- 2.24 LCD驱动框架
能不能同时支持多个LCD?
例如:
一个TFTLCD接在8080,一个COG LCD接在VSPI,
一个OLED接在SPI,还有一个OLED接在I2C。
驱动怎么写?能不能用一套接口操作这些LCD?
- 2.25 汉字字库
点阵跟LCD驱动是两个模块,不要交缠在一起。
- 2.26 WAV解码
语音播放中间层如何使用WM8978或者IS2接口?
提供什么接口给应用程序使用?
- 2.27 I2S录音
- 2.28 DAC SOUND 驱动改造--播放WAV文件
参考WM8978的播音架构设计DAC SOUND驱动,
应用程序用相同接口,指定WM8978或DAC sound播放
- 2.29 详解矩阵按键扫描

/----------------------------------------------------------/
收藏 评论6 发布时间:2018-4-24 17:12

举报

6个回答
黑皮男 回答时间:2018-4-25 07:47:15
楼主可以借鉴一下rt-thread,采用驱动和应用分离的设计模式会更好,难度也就大一些,开发统一的驱动接口会有一定的难度,带来的优势是驱动的更改,对应用层的影响会更小
wujique 回答时间:2018-4-25 08:53:24
黑皮男 发表于 2018-4-25 07:47
楼主可以借鉴一下rt-thread,采用驱动和应用分离的设计模式会更好,难度也就大一些,开发统一的驱动接口会有 ...

rt-thread功能比较强大。他还包含系统了。
我的目的比较简单:让学了开发板的人能再学一点真正开发中用到的软件开发技巧。
统一接口也不难,不要往大的方向靠,例如跑什么A7的大应用。往小的方向做,例如单片机。
以前用ZIGBEE做智能家居产品时,就将所有的传感器都用OPEN/CLOSE/WRITE/READ接口统一。
anobodykey 回答时间:2018-4-25 09:13:41
楼主加油,这工作量应该不小
myccl 回答时间:2018-4-25 09:50:09
是用标准库写的吗?
wujique 回答时间:2018-4-25 10:29:41
myccl 发表于 2018-4-25 09:50
是用标准库写的吗?

是的,最老的标准库。
后面可能会迁移到GCC编译环境,就决定用这个库。
新的图形化配置,估计搞不到GCC
勿忘心安110 回答时间:2018-6-26 08:48:13
支持楼主

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版