来源:公众号【鱼鹰谈单片机】
作者:鱼鹰Osprey
ID :emOsprey
历时两个月(1/3),第一个完成电子表项目的学员出现了,并且顺利的掌握了栈回溯技巧,在工作中快速定位了一个任务异常挂起的bug,这种bug没有掌握方法的工程师可能需要调试好几天才可能解决,而且很多工程师对此没有头绪,只能靠笨办法一点点接近bug代码,而不是说通过栈信息直击 bug 代码现场。
今年开课以来,鱼鹰也写了大量的驱动和实用功能:
几乎每个提交都是值得学习的知识点,并且每完成一个功能,都会对该功能的提交内容进行整理,防止引入无关内容,保证学员在查看提交信息时,是干净整洁的,非常方便学员的学习。
主要功能如下:
1、串口高效打印(fifo + DMA + print)打印一条语句是*微秒*级别的,
因此也支持*中断*打印, 但不建议在中断中用浮点打印函数;并且最大化
利用了缓存空间,另外在初始化串口前的打印信息,数据会缓存,不会丢失
2、任务栈和异常栈溢出同时检测,从此告别栈溢出风险
3、更新各种驱动,如 watchdog、adc、spi、i2c、oled、w25q32、eeprom、矩阵按键、独立按键、数码管 等
4、MDK 模拟环境,随时随地学 RTOS,同时对相关汇编代码进行了大量注释,并可随时查看任务切换过程
5、内部温度、电压采样,掌握芯片身体状况;
6、采用独创的 DTS 架构,轻松实现驱动底层硬件信息的修改,设备和驱动分离
7、IO 使用冲突检测机制
8、CmBacktrace异常调用栈信息打印
9、复位原因开机打印,告诉你因何复位,轻松掌握复位信息
10、轻松模拟 7 个 CDC 设备,并且因为移植了开源库TinyUSB,因此可以学习大量的应用,
包括 lwip(c8t6 资源有限,无法测试)
11、该工程框架理论上可以方便的移植到各种单片机,具体细节后续整理
12、更多驱动将实现:NRF2401+、MCP2515(SPI转can)、sdio 等
更多功能将实现 bootloader 升级 、cpu 使用率、fatfs 文件系统 等
uCOSII 任务切换效果实时查看
以上所有功能都可以在 STM32F103C8T6 中实现,该开发板不到 10 RMB,加上调试器不到 20 RMB,低成本轻松学习各种技能。
驱动底层硬件信息,轻松实现多个相同设备的扩展,如下实现了 3 个串口设备:
模拟/硬件 spi 轻松切换,轻松更换 IO 信息:
工程开机打印信息,包含编译时间、版本信息、ID 、RAM 、ROM 栈、bin 文件大小、可用 RAM、复位原因等各种信息,并通过进度条直观展现,非常大程度还原了当前环境的资源使用情况。
在此期间,基本每周上午的时间都利用上了,也录制了大量的视频,上传到个人服务器(下载速度飞快):
很多内容都在上一期给学员介绍过,如果没有介绍过,也会免费提供给一期的学员学习。
正因为感觉这种答疑重复又耗时,因此可能不再准备开展第 3 期,而是准备录制一些专题视频,如 RTOS、MDK 调试、USB 等系列,但是又怕无法控制盗版数量,所以一直在犹豫(如果真录制了,会无偿提供给学员学习)。
本来开班后不准备继续招学员的,但鉴于上述考虑,而有些道友可能有错过了之前的开课信息,因此如果对上述学习内容感兴趣的话,可以加鱼鹰私聊 EmbeddedOsprey,价格上会有一定的优惠(不再提供硬件,但会给参考购买链接,如果不买 STM32F4开发板,相关硬件大概在 50 RMB 左右)。
EmbeddedOsprey
该工程暂不开源,对此感兴趣的话,可自行尝试实现以上功能,看是否触及到你的知识盲区了