嵌入式开源项目推荐

一、入门友好型(适合练手)

这些项目代码量不大,硬件要求低,很适合用来拆解、改动、理解嵌入式开发的流程。

  1. Arduino 官方示例合集地址:https://github.com/arduino/Arduino内容:LED、按键、传感器、显示器等基础例程优点:配套资料多,社区活跃适用硬件:Arduino UNO、Nano、ESP32
  2. PlatformIO Examples地址:https://github.com/platformio/platformio-examples内容:跨平台嵌入式示例工程(STM32、ESP32、Nordic 芯片等)优点:带编译配置,直接跑适用硬件:多种 MCU
  3. u8g2 / u8glib地址:https://github.com/olikraus/u8g2内容:驱动 OLED、LCD、VFD 等屏幕优点:学会它能轻松做 UI适用硬件:几乎所有 MCU

全网最全面的嵌入式八股文:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

二、进阶项目(外设+通信)

适合已经掌握基础 IO、通信协议的同学,通过项目学网络、数据处理等。

  1. ESPHome地址:https://github.com/esphome/esphome内容:ESP8266/ESP32 智能家居固件,支持 WiFi、传感器、MQTT优点:真实可用,代码结构清晰适用硬件:ESP8266 / ESP32
  2. OpenHAB ESP32地址:https://github.com/openhab/openhab-addons内容:物联网网关,与智能家居平台对接技能点:MQTT、HTTP、JSON、传感器驱动
  3. STM32 FreeRTOS Demo地址:https://github.com/FreeRTOS/FreeRTOS内容:多任务调度、消息队列、定时器等优点:适合学 RTOS 任务结构适用硬件:STM32、NXP、Nordic

三、高级项目(多外设+网络+应用逻辑)

适合想挑战复杂系统、提升工程能力的开发者。

  1. PX4 飞控地址:https://github.com/PX4/PX4-Autopilot内容:无人机飞控固件技能点:传感器融合、姿态解算、控制算法适用硬件:Pixhawk、STM32 系列
  2. Marlin 3D 打印机固件地址:https://github.com/MarlinFirmware/Marlin内容:步进电机控制、温控、G-code 解析技能点:运动控制、PID、文件系统
  3. Zephyr RTOS地址:https://github.com/zephyrproject-rtos/zephyr内容:支持多平台的实时操作系统技能点:RTOS 内核、驱动框架、网络协议栈适用硬件:ARM Cortex-M / RISC-V

四、创意小玩具(轻松+好玩)

适合周末做着玩,增加成就感。

  1. ESP32 GameBoy 模拟器地址:https://github.com/gnemoug/esp32-gameboy内容:在 ESP32 上跑 GameBoy 游戏技能点:图像刷新、按键扫描、存储管理
  2. LED Cube(3D 灯立方)地址:https://github.com/zhouxiaoyang/ledcube内容:3D LED 灯阵列技能点:多路复用、PWM、动画设计
  3. ESP32 WebRadio地址:https://github.com/Edzelf/ESP32-Radio内容:WiFi 网络收音机技能点:音频解码、网络流播放

全部评论

相关推荐

7.31投递,8.7约面,8.11一面如下:1、自我介绍2、如何理解堆和栈?3、在裸机或者RTOS中,有什么比较快速的方法去精确确定一个任务或者整个系统里面栈的 最大使用深度 是多少,如何运行一段时间后查看栈用了多少?4、什么情况下栈内容会变化?5、CPU保存现场(函数嵌套、中断等场景下)都是保存什么信息?6、系统异常(比如进入HardFault)如何定位源头?7、说一下MCU启动的过程,从上电到跑到main函数8、全局变量的初始化过程是在哪里初始化的?9、看你项目里用串口挺多的,说一下你是怎么用串口的?(DMA、缓冲区、中断)10、DMA的全满中断和串口空闲中断(当二者都满足触发条件时)会同时将标志位置位然后触发吗?(我答的是先DMA全满再空闲,因为打日志看过,但好像没答到点子上)11、继续10中的场景,当满足触发这两个中断的条件后,我把中断给关了10个字节的时间之后再打开(或者说更高优先级的中断一直把系统阻塞住了),DMA和空闲中断的标志位都还在,这时CPU可能需要仲裁一下,这会对你的驱动有影响吗?如果要没有影响的话需要怎么做?(没太懂这个提问的意思)12、说一下RTOS的运行机制?13、进程任务的切换时机?14、系统 如何/什么时候 得知高优先级任务准备好了?(涉及底层实现原理吧)15、详细说一下某个项目16、系统中微秒级的延时是怎么实现的?17、IIC中时序的延时是如何实现的?18、软件IIC造成的CPU被多次阻塞,中断会造成这些延时的滞后,这些对IIC的读取有影响吗?19、IIC时钟不均匀会对通信有影响吗?20、讲讲使用cmbacktrace定位到的一些实际的问题案例21、数组越界一定会产生hardfault吗?不产生Hardfault的话会有什么其他的影响吗?22、你做Bootloader时,你觉得其最重要的功能是什么?23、Bootloader跳转过程中DMA要关吗?24、说一下低功耗怎么做的?超低功耗Standby模式想唤醒应该如何唤醒?25、介绍一下软件通信协议是怎么设计的(串口协议栈)?如何去优化协议栈的设计?无手撕,反问环节问了一些上面没答出来的点一面总结:根据简历上的项目,由八股为切入点深挖底层,甚至好多问题我都不明白要答什么还是很难的,感觉和传说中的大疆面试差不多了,很深挖。最难的是会根据你当前的场景给你些假设,让你回答会发生什么注:上面的提问点与项目高度相关,并不是纯八股,仅供参考--------------------------------------------------------------------------------------------------
求求offer的河老...:以下是自己的一些解答不一定对,希望大佬解答 2.堆栈都在ram中,生长方向不同,管理方式不同,一个自动分配一个手动管理 3.估算最大深度没思路,运行时候可以掉rtos自带的函数可以看见深度 4.任务切换入栈出栈,进中断保存现场 5.lr pc psr r0-r3 r12?具体记不清楚了 6.系统异常会压栈pc lr还有状态寄存器,可以根据lr判断此时是中断环境还是任务环境,根据keil内存访问找到sp对应的栈,找到压栈的pc然后和反汇编来对比就知道什么地方有问题 7.上电复位,从程序起头中断向量表拿到复位中断地址,从复位中断里面拿出来.s里面的内容,主要是初始化堆栈.stm32会有一个system init(设置频率和时钟),好像还有变量搬移到ram里面具体记不清楚了
查看25道真题和解析
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务