已经会用stm32做各种小东西了,下一步学什么,研究stm32的内部吗?

news2024/11/17 2:40:34

今天看到了一个提问,原话如下:

这个问题,我能装逼。

曾经干了10年单片机工程师,对工程师从入门,到入行,再到普通,再到高级,整个路径还算清晰,比如什么阶段,会碰到什么瓶颈,怎么突破,我都经历过。

这个同学,有个典型的问题,就是学得太多且杂了,估计稍微复杂点的项目,做不出来。

现在首要任务,就是做减法

先定位好,自己想往哪个方向发展,放弃一切与这个方向无关的技术,深入学习

假设,你想往单片机方向,目前学完了STM32,能做出各种小玩意。

那接下来的目标,是往程序架构和可靠性设计方向发展,实现功能的同时要考虑功能扩展性,还有移植性,这是成为高级工程师必须要攻破的瓶颈。

如果你对扩展性和移植性的概念有些模糊,抽象。

我举个例子:

比如STM32的固件库,有没有发现扩展起来很方便?移植性就更不用说了,一个库能兼容很多个型号的单片机。

那程序架构是什么?

比如RTOS,我的理解就是一个实时性很高的程序架构,一般像这种系统,就是整个产品代码的"地基"。

没必要去研究STM32内部,对技术成长帮助不大,会用单片机和精通单片机内部,对产品开发来说,差异甚微。

很多人在这个阶段,可能会冲RTOS,我的经验是,别冲,现阶段不适合!

RTOS什么时候冲我认为最合适?

就是你自己能设计整个程序架构的时候,比如我设计过"毛坯版本"的轮询任务架构。

在2019年的时候,还专门录制了一套关于这个架构的教程,在小破站,同名无际单片机编程,有兴趣的可以自己去看。

还做过定时器矩阵的小架构。

还有一些队列,链表之类的数据结构和小算法。

当然,更复杂点的事件型驱动架构我也玩过。

能学到这个程度,再去冲RTOS,小菜一碟,因为很多原理,和RTOS很像。

但能学到这个程度,很不容易,虽然也是半桶水,也花了我10年的时间,才积累出来。

我们把毕生所学,比如高扩展性、高移植性的架构设计,都集中到无际项目特训营的《4G&WiFi报警主机》项目上了。

如果能到这个阶段,你已经具备产品架构的设计能力了,RTOS对你来说,可有可无。

大多数单片机项目,"毛坯版本"的轮询任务架构完全够用。

曾经有几个人问过我,轮询的怎么规避实时性的问题。

我说我比较LOW,都是靠经验去人为规避的。

我没碰到过,非要上RTOS这种系统才能做的项目,对我来说,非刚需,上了也是累赘。

在刚做开发的时候,有一个毛病,明明可以不用指针,非要用,感觉不用代码显得不专业。

其实根本没有明白指针的精髓所在,只是为了装逼而用。

等我接触到一些复杂项目的时候,有些细节不知道怎么处理。

比如有个.c文件代码是要保密,要封库,不能给别人看到源代码,但又要给别人使用该代码的功能。

比如.c文件解析一帧协议,解析过程代码,不能开源,但最终的解析结果,要提供给使用者。

这种需求下面,怎么写最好?

就是用回调函数。

我是通过WiFi模块厂家提供的代码,摸索出来的。

如果没有这种实际应用,靠网上搜集对回调函数概念的解释,压根就不能理解它能解决的痛点。

所以,学完单片机以后,最好的成长路径,就是不断找项目做,从简单到复杂,逐渐提升编程思维和代码水平。

当编程经验丰富了以后,再学队列,链表,RTOS之类的,会事半功倍。

不管数据结构也好,算法也好,什么时候学,什么时候用?

我就一个原则:真正只有它,才能更好解决痛点的时候。

否则,代码写得越简单,越好理解,越好。


最近很多粉丝问我单片机怎么学,我根据自己从业十年经验,累积耗时一个月,精心整理一份「单

片机最佳学习路径+单片机入门到高级教程+工具包」全部无偿分享给铁粉!!!

除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手

教程资料包和详细的学习路径可以看我下面这篇文章的开头

《单片机入门到高级开挂学习路径(附教程+工具)》

《单片机入门到高级开挂学习路径(附教程+工具)》

《单片机入门到高级开挂学习路径(附教程+工具)》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1515504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一键导入Figma,让团队文件管理更加便捷安全!

如何将Figma引入国内软件已成为人们关注的话题。本文将分享两种Figma导入方法,使您的设计文件更加安全。 两种方法,一键导入Figma文件 即时设计是一种基于云的设计工具,在功能和特性上与Figma非常相似。如果你熟悉Figma的界面,即…

GPT-4.5 Turbo:意外曝光且可能在六月份推出

国外网络媒体THE DECODER的联合创始人兼出版人Matthias认为,人工智能技术将彻底改变人类和计算机的互动方式。最新消息显示,OpenAI的最新力作GPT-4.5 Turbo已经在网络上意外曝光。首批发现此信息的是Bing和DuckDuck Go等搜索引擎,它们在官方发…

探索Java高并发编程之道:理论与实践

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 简介 随着互联网和信息技术的快速发展&#x…

基于Java的天然气工程运维系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程 12.2.2 流程 22.3 各角色功能2.3.1 系统管理员功能2.3.2 用户服务部功能2.3.3 分公司(施工单位)功能2.3.3.1 技术员角色功能2.3.3.2 材料员角色功能 2.3.4 安…

ubuntu 下git常用指令【持续更新中】

1.下载 sudo apt install git 2. 查看版本 git --version3. 登录git账号 git config --global user.email "youexample.com" git config --global user.name "Your Name"4.生成密钥对 ssh-keygen -t rsa -C "your_emailyouremail.com"复制公…

Heparin-PCL/PLGA/PLA Heparin肝素偶联聚己内酯/聚乳酸/聚乳酸羟基乙酸共聚物

肝素的结构与性质:肝素是一种硫酸化多糖,具有高度负电荷。它由重复的二糖单元组成,这些单元含有硫酸基团,这些硫酸基团负责其负电荷。 纳米材料的电荷特性:纳米材料可以通过化学修饰来带正电荷或负电荷。例如&#xf…

阿里云服务器安全狗免费使用多引擎智能查杀引擎

云服务器具有按量付费、降低综合成本等诸多优势,受到很多企业的欢迎。 因此,目前使用的云服务器越来越多。 阿里云是目前云服务器中最具影响力的品牌,因此选择阿里云服务器的用户数量也是最多的。 那么阿里云服务器需要安装杀毒软件吗&#x…

3.Linux/UNIX平台Python的下载、安装和配置环境变量——《跟老吕学Python编程》

3.Linux/UNIX平台Python的下载、安装和配置环境变量——《跟老吕学Python编程》 一、下载Linux/UNIX版Python1.Python官网2.Linux/UNIX版Python下载网址 二、在Linux/UNIX安装Python1.在Ubuntu Linux安装Python1.1 检查Python版本1.2 高级包管理工具1.3 添加存储库1.4 更新软件…

抠图透明背景怎么做?3种方法教你抠图换背景

抠图透明背景怎么做?抠图透明背景是一项在图像处理中常见的任务,它可以帮助我们去除图片中的多余部分,使主体部分与背景分离,从而得到一个透明背景的效果。这一技巧在多个领域都有广泛应用,掌握这种技巧,不…

【计算机视觉】目标跟踪| 光流算法详细介绍|附代码

0、前言 在上篇文章中https://blog.csdn.net/Yaoyao2024/article/details/136625461?spm1001.2014.3001.5501,我们对目标跟踪任务和目标跟踪算法有了大致的了解。今天我们就来详细介绍一下其中的生成式算法的一种:光流法。 在介绍光流法之前&#xff…

Controller Spawner couldn‘t find the expected controller_manager ROS interface.

rosservice list | grep controller_manager 如果没有输出&#xff0c;说明controllermanager没启动 具体通过以下启动&#xff1a; <gazebo> <plugin name"ros_control" filename"libgazebo_ros_control.so"> <!-- robotNamespace>…

vue项目登录模块图片旋转验证功能实现(纯前端)

在当今互联网时代&#xff0c;随着技术的不断进步&#xff0c;传统的验证码验证方式已经无法满足对安全性和用户体验的需求。为了应对日益狡猾的机器人和恶意攻击&#xff0c;许多网站和应用程序开始引入图形验证码&#xff0c;其中一种备受欢迎的形式就是图片旋转验证功能。这…

力扣每日一题 最大二进制奇数 模拟 贪心

Problem: 2864. 最大二进制奇数 由于奇数的二进制末尾一定是 111&#xff0c;我们可以把一个 111 放在末尾&#xff0c;其余的 111 全部放在开头&#xff0c;这样构造出的奇数尽量大。 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class…

行业认可 | 海云安上榜《2024年网络与信息安全行业全景图》多个领域

近日&#xff0c;深圳市网络与信息安全行业协会正式发布《2024年网络与信息安全行业全景图》。海云安凭借过硬的技术实力及成熟的网络与信息安全产品及服务获得行业认可&#xff0c;入围6大类目共计17项细分领域。包括&#xff1a; 业务安全&#xff08;软硬件开发安全、人工智…

ARMV8-aarch64的虚拟内存(mmutlbcache)介绍-概念扫盲

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 思考: 1、cache的entry里都是有什么&#xff1f; 2、TLB的entry里都是有什么? 3、MMU操作…

让若依生成的service、mapper继承mybatisPlus的基类

前言&#xff1a;若依继承mybatisPlus后&#xff0c;生成代码都要手动去service、serviceImpl、mapper文件去继承mybatisplus的基类&#xff0c;繁琐死了。这里通过修改若依生成模版从而达到生成文件后直接使用mybatisPlus的方法。 一、首先找到若依生成模版文件位置&#xff…

如何使用vue定义组件之——父组件调用子组件数据

首先&#xff0c;准备父子容器&#xff1a; <div class"container"><my-father></my-father><my-father></my-father><my-father></my-father><!-- 此处无法调用子组件&#xff0c;子组件必须依赖于父组件进行展示 --&…

爱普生晶振发布RTC模块晶振(压电侠)

爱普生晶振一直以”省&#xff0c;小&#xff0c;精”技术作为资深核心&#xff0c;并且已经建立了一个原始的垂直整合制造模型&#xff0c;可以自己创建独特的核心技术和设备&#xff0c;使用这些作为基地的规划和设计提供独特价值的产品. 世界领先的石英晶体技术精工爱普生公…

08.JavaScript中的编程思想,构造函数和原型对象

一、编程思想 学习 JavaScript 中基于原型的面向对象编程序的语法实现&#xff0c;理解面向对象编程的特征。 1.面向过程 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候再一个一个的依次 调用就可以了。 举个…

基于log4cpp封装日志类

一、log4cpp的使用 1. 下载log4cpp log4cpp官方下载地址 2. 安装log4cpp 第一步&#xff1a;解压 tar zxvf log4cpp-1.1.4.tar.gz 第二步&#xff1a;进入log4cpp文件夹并执行 ./configure tips&#xff1a;如果是ARM架构的CPU可能会失败&#xff0c;如下面这种情况&a…