单片机开发总结
马上秋招了复习一下单片机。文章目录序言概述调研芯片的应用领域收集相关资料确认芯片内核架构了解芯片系统架构购买开发板与仿真器组织工程文件选择并配置编译环境总结序言大二的时候玩过单片机马上秋招了linux只是会用不会移植看不懂内核看不懂ubootC也没精通QT也是半吊子python也不是我的职业方向只能把简单的单片机拿过来复习一下希望在招聘的时候底气能够足一点。找工作是一个原因除此之外我还想认真地学一下UCOS毕竟一个搞嵌入式的连一个RTOS都没接触过说出去岂不是让人笑话。本篇文章并不会有什么细节如果有那也只是为了辅助介绍思想更多的是一种单片机开发流程的总结与感悟。具有很强的通用性。所以完全可以当作一篇茶余饭后的小文章来看看。概述假如有一天你的老板给你一块你从来没用过的单片机让你基于这款单片机开发出某某产品我们该怎么办呢。这种情况我相信在这个技术更新如此之快的时代是时常发生的情况作为技术人我们必须有一套应对这种情况的方法这篇文章就是介绍一下我个人对这种情况的处理办法不成熟是肯定的有错误也是肯定的毕竟我才大三。我大概总结了一下有如下几个步骤调研芯片的应用领域、收集相关资料、确认芯片内核架构、了解芯片系统结构、购买开发板与仿真器、组织工程文件、选择并配置开发环境、编写应用程序、测试应用程序、根据用户反馈维护并优化应用程序。我们下面将会挨个介绍上面的每一个步骤。注1编写应用程序、测试应用程序、根据用户反馈维护并优化应用程序三点将不会在本篇文章中涉及后面我会有一个系列的文章来记录我的UCOSIII学习历程在那里将会有大量的应用示例注2下面的步骤介绍是以STM32F103RBT6为例进行的调研芯片的应用领域这个步骤主要是为了了解一种芯片的优点与缺点它之所以适用于某个领域一定是在这些领域有某些独特的优势之所以不适合其它领域也一定是在这些领域有一些劣势。那么如何调研呢本人作为学生没有系统地学习有哪些调研方法只能简单地根据浅薄的经验来介绍一下几种常用的方法。百度最简单粗暴的方法基本上得不到什么有用的信息去各种相关的电子论坛这些论坛里面更多的是具体的技术细节的探讨以及某些技术的行业应用你可以通过这些行业应用去大概了解芯片的应用领域去询问大佬这其实是最高效的方法如果你的身边有相关领域的大牛直接去向他们咨询这将会帮你节省很多时间同时友情提醒不要轻信同水平人的言论。去看大佬的博客这其实和上一点效果差不多由于大牛不常有所以才需要这种方法。总之尽可能地去获取更多的高质量的信息保证你在研究这块芯片之前已经对它有了足够的市场认知。收集相关资料如果我们确定了某类芯片适合我们的项目那么我们下一步就需要去研究它了古语有言巧妇难为无米之炊。我们在学习之前要先收集许多许多的资料这些资料可以以视频、电子书、纸质书、代码、论坛、论文等多种形式而存在下面我以我在复习STM32的过程中资料的收集情况来进行简要介绍。手册型的主要包括M3权威指南中英文、标准库参考手册中英文、芯片数据手册、应用参考手册等。教材型的我这里主要使用了两方面的教材一个是老师的PPT一个是一些开发板公司的PDF教材如下所示当然如果有钱也可以去买一些纸质版的教材。视频型的我最近看视频不多了感觉速度太慢而且信息不够一般只有入门某个领域的时候才会看视频我当时入门单片机的视频是郭天祥的《十天精通单片机》。代码型的其实对于单片机来说不需要去看太多的代码因为单片机的代码逻辑非常简单没有CS专业或者嵌入式的各种算法各种数据结构各种框架各种设计模式。所以在单片机层次只要把标准库弄熟练了多找点实际项目练练基本都没什么问题。论坛型的这一点非常重要我们要多去逛逛各大论坛比如什么摩尔吧、电路城、电子工程世界、一些芯片厂家的社区、一些开发板厂家的社区等等在里面多学习多交流多找几个项目自己做一做遇到问题可以去那里找一找。论文型的关于论文在单片机方面其实我没有怎么见到过因为单片机实在是没有什么论文可以发不过我们可以去看一些应用单片机来进行科学研究的论文其实不要局限思维多去看一些大佬写的科研论文看看人家是怎么组织文章结构的看看人家是如何进行研究探索的这对提高自己的科研素养还是很有帮助的。Tips如果有能力尽量不要去看知网上的文章因为含金量实在是太低了确认芯片内核架构这一步看似是一个很简单的步骤实际上它的确是很简单的步骤芯片的内核型号从它的手册中一翻就出来了但是简单并不意味着不重要相反它非常重要从名字上我们就可以看出它是整个芯片的内部核心也就是说内核的类型直接关系到芯片的下限与上限比如M3的内核没有MMU这就注定它无法跑linux所以想上linux的朋友最好选一些高端的内核如果想跑android等带文件系统的操作系统最好选择带MMU且主频高一点的内核比如Cortex A系列。我目前用的M3就只能跑一跑像UCOS这样的RTOS。总之选择芯片前一定要清楚自己的内核需求选择合适的芯片。下面是《Cortex-M3权威指南(中文)》的目录我们可以看到很多术语要想准确地选择自己需要的内核就需要对内核的一些常用术语有一定的认识目前里面还有很多术语我都不太熟悉以期将来工作有机会再加深对这些术语概念的理解。了解芯片系统架构ARM公司开发出内核之后很多厂商就在其内核之上进行芯片设计本质上就是加了许多外设如I2CSPIADC/DAC等等。不同的厂商这些外设的差别是很大的。我们需要针对某个芯片去仔细地了解它的芯片系统架构。芯片里面有哪些外设这些外设之间以及与内核是如何连接的数据信息、地址信息、控制信息都是如何传递的地址空间是如何分配的有哪些存储器这些存储器的特点与大小是怎样的有哪些下载与调试接口有没有一些没见过但是好像很有用的外设。下面是STM32F10xx的系统架构我们可以从中获取很多信息比如有哪些外设信息是如何传递的手册里会有对这个架构的简单介绍有哪些存储器这些部件之间是如何组织的哪些是主动单元哪些是被动单元我们都可以知道。购买开发板与仿真器这一步个性化就更强了如果你会画板子的话最好自己画一个这样学习更深刻。如果不会也没关系我们去淘宝上一搜就一大堆根据自己的需要选一个就可以了选板子的时候尽可能选择功能多一点的虽然可能贵一点单片机学习板贵上天能有多贵呢但是学习嘛何必在意这点小钱呢。看看调试接口是怎样的然后附带购买仿真器仿真器可能贵一点如果有钱就买好一点的没钱就买便宜的其实无所谓。我没有买过仿真器都是在实验室蹭的?没办法出身贫寒只能这样子维持一下生活了我旁边这个还是找我以前的队友借的。组织工程文件可以说这一步是简单的又是困难的简单在大部分的代码都是别人写好的困难在你需要去对着芯片架构理解这些代码下面是正点原子的STM32F103代码结构Tips其实这种代码结构只是给人看的编译器根本不在乎你是怎么组织的它能看见的就是一堆C文件和汇编文件以及链接脚本。这个工程文件大部分单片机都可以这样分类主要分为如下几个部分Libraries芯片库文件主要包含内核接口库和外设驱动库两部分listing这里面有一个.lst文件里面包含了丰富的信息Output这里面是输出文件包含各种中间文件Project工程文件类似于Makefile一样的存在Doc工程文件的说明文档Board板级驱动也就是针对你的开发板特定的驱动在别的板子上不行User基于驱动程序的应用程序这是我们电脑上文件的实际存放形式但是在keil中还有一个工程组织结构如下图我们看到的不叫文件夹在keil里面叫做group它也只是给人看的一种组织形式。我们可以向里面添加我们需要的文件选择并配置编译环境这一步不同的开发方式不同的开发软件都有着不同的配置方法但是基本思想都是一样的我们以keil为例进行介绍在keil中有一个叫做魔术棒的东西他就是用来配置编译环境的如下所示点开我们会看到如下界面我们将逐个介绍里面每一个选项卡的含义Options for Target1. Device选项卡如下图在这一步中我们选择相应的目标芯片这样keil就会根据这个芯片选择特定的编译器我们可以通过这个选项卡知道芯片的一些信息。2. Target选项卡如下图1、指定用晶振频率可以用于模拟调试仅反应外部震荡频率2、可以选择keil自带的操作系统一般不用3、系统可视文件一般不用4、片外只读存储器设置5、片内只读存储器设置6、编译器选择7、交叉模块优化8、使用MicroLIB9、片外RAM设置10、片内RAM设置3. Output选项卡如下图1、输出路径输出路径就是在工程编译的过程中输出这些文件的保存路径2、输出可执行文件名3、输出可执行文件4、输出库输出的是静态库而不是动态库4. Listing选项卡1、输出路径、宽高选择列表文件输出的文件夹。可设置文件页面的宽度、长度。2、输出汇编列表勾选上会输出汇编列表信息如果工程中没有汇编文件则什么也不输出3、C编译列表C编译程序列表选项勾选上可生成.txt.i文件4、链接列表可选择生成或者禁止生成.map文件5. User选项卡1、编译运行之前运行用户程序2、编译之前运行用户程序3、编译之后运行用户程序4、编译之后执行条件执行条件编译完发出声音启动调试程序6. C/C选项卡1、预处理定义这里主要就是预定义功能相当于程序中的#define xxx2、语言代码生成可以理解为编译链接到最后生成代码这部分对代码优化尤其重要3、包含路径就是让keil知道可以去哪里寻找头文件4、多功能控件5、编译器控制字符串针对编译器执行的命令用来控制编译器的行为的7. Asm选项卡这个选项卡和上一个C/C差不多只不过针对的是汇编语言不再赘述。8. Linker选项卡用来控制链接器的行为的1、使用来自目标对话框的内存布局这一步的意思就是使用我们指定的内存布局来编排代码中不同部件的位置2、分散文件可以加载、查看和编辑分散文件9. Debug选项卡这个选项十分重要它是用来调试软件仿真、硬件在线 使用的。软件仿真和硬件在线调试配置基本一致所以只讲硬件在线调试1、选择硬件在线调试2、选择硬件在线调试Load Application at Startup启动时加载应用程序。Run to main()程序执行到main()函数。Initialization File加载编辑初始化文件。3、复位初始化会话设置如果勾选上点击一下“复位”就会恢复到之前的状态。包括断点Breakpoints、窗口Watch Windows、性能分析器Performance Analyzer、内存窗口Memory Window、工具箱Toolbox、系统查阅器System Viewer等。4、DLL文件这里不要动5、管理组件描述文件这里一般不用去管理。10. Utilities选项卡这个部分属于公共选项。1、为Flash编程使用一个目标驱动也就是一个flashloader这里是二选一一般我们使用上面的“Update Target Driver for Flash Programming”。Use Debug Driver使用调试驱动。Update Target Before Debugging调试之前更新目标Setting设置很多人下载程序后需要复位一下程序才可以运行原因在于没有勾选“Reset and Run”如下图2、配置图像文件的处理这个我们不常用暂时不去了解11. 总结来总结一下这10个选项卡中最核心的是Target、C/C、以及Linker。其中的Target和Linker共同用来配置链接器Target和C/C共同用来配置编译器。注其实Device的选择对后面的选项卡都有影响但我们要知道这种影响是机器帮我们做的为的是帮我们屏蔽芯片细节但是出于学习的目的我们在这里要忽略Device这个选项卡自己去了解芯片架构内存映射自己配置选项卡。除此之外后面的Debug和Utilities也是很重要的。总结凡事都是要遵守流程讲究规范注意总结这对于技术的积淀和效率的提高十分重要感谢你的阅读如果有错误或者不成熟的地方请一定要提出来谢谢。

相关新闻

DVWA手工SQL注入实战:从原理到拖库的完整指南

DVWA手工SQL注入实战:从原理到拖库的完整指南

1. 项目概述:为什么从DVWA开始你的手工注入之旅?如果你刚接触网络安全,尤其是Web安全,那么“SQL注入”这个词你一定不陌生。它就像一把古老的万能钥匙,虽然技术原理不复杂,但时至今日,依然是渗透…

2026/7/28 16:42:35 阅读更多 →
Serverless安全实战:从TAR依赖漏洞到10步纵深防御体系构建

Serverless安全实战:从TAR依赖漏洞到10步纵深防御体系构建

1. 项目概述:一次真实的Serverless安全危机复盘 上周三凌晨,我被一阵急促的告警电话惊醒。监控显示,我们一个核心的Serverless函数突然出现大量异常调用,CPU使用率飙升至100%,日志里充斥着奇怪的路径遍历错误。经过紧急…

2026/7/28 16:41:35 阅读更多 →
使用Spring实现权限控制动态为注解赋值

使用Spring实现权限控制动态为注解赋值

首先这不是一个介绍或者使用SpringSecurity的博客。他是使用自定义注解和拦截器实现的权限管理(只供学习不可用于生产环境) 技术栈: SpringBoot 2.1.6 MySQL5.7 大体思路: 使用拦截器拦截请求,在拦截器中使用 HandlerMethod 类获取当前请求方法上的自定义权限注解。…

2026/7/28 16:41:35 阅读更多 →

最新新闻

Windows多显示器DPI缩放终极指南:SetDPI解决你的显示缩放烦恼

Windows多显示器DPI缩放终极指南:SetDPI解决你的显示缩放烦恼

Windows多显示器DPI缩放终极指南:SetDPI解决你的显示缩放烦恼 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 你是否曾经为Windows系统在多显示器环境下的DPI缩放问题而烦恼?主显示器上文字清晰锐利,切…

2026/7/29 17:34:27 阅读更多 →
WPF应用实战开发指南 - 如何完成附件管理

WPF应用实战开发指南 - 如何完成附件管理

在我们之前的开发框架中,往往都是为了方便,对附件的管理都会进行一些简单的封装,目的是为了方便快速的使用,并达到统一界面的效果。本文主要介绍基于SqlSugar开发框架的WPF应用端,对于附件展示和控件的一些封装处理界面…

2026/7/29 17:34:27 阅读更多 →
性能优化:让系统“跑得更快“

性能优化:让系统“跑得更快“

性能优化:让系统"跑得更快" 你开车上班: 原来30分钟到 现在想25分钟到 可以换车、可以换路线、可以早点出门 性能优化就是让系统从"30分钟"变成"25分钟"的过程。 性能优化的原则 1. 先测量,再优化 不要猜,要用数据: 猜测:数据库慢 实…

2026/7/29 17:34:27 阅读更多 →
界面控件DevExpress WPF导航组件,助力升级应用程序用户体验!(下)

界面控件DevExpress WPF导航组件,助力升级应用程序用户体验!(下)

DevExpress WPF的Side Navigation(侧边导航)、TreeView、导航面板组件能帮助开发者在WPF项目中添加Windows样式的资源管理器栏或Outlook NavBar(导航栏),DevExpress WPF NavBar和Accordion控件包含了许多开发人员友好的…

2026/7/29 17:34:27 阅读更多 →
如何解决背光升压电路EMI问题

如何解决背光升压电路EMI问题

一、前言随着仪表市场需求日益旺盛与产品功能日趋复杂,其电磁兼容性问题也愈发凸显。其中,背光电路的EMI干扰尤为普遍。本文将通过一个实际案例,深入分析并展示该问题的有效解决方案。二、整改案例下图是一款仪表类设备的EMI测试数据&#xf…

2026/7/29 17:34:27 阅读更多 →
MAA明日方舟助手:重新定义游戏自动化的终极开源解决方案

MAA明日方舟助手:重新定义游戏自动化的终极开源解决方案

MAA明日方舟助手:重新定义游戏自动化的终极开源解决方案 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://g…

2026/7/29 17:33:27 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻