感觉stm32太简单是一种自负吗?

其实简单或者复杂都不重要,重要的是通过STM32我们能学习到什么?

做一个键盘/鼠标,可以学习USB协议。

做一个联网设备,需要学习以太网,TCP/IP协议的底层实现。

做一个无线设备,可能需要学习蓝牙、WIFI或者zigbee的协议,而最终的应用,可能不一定有库或者包,需要自己去写底层。如果用模块,则可能需要学习SPI、I2C或者SDIO去连接模块。

做一个温控设备,或者平衡小车,需要学习PID算法。

做一个摄像头,可能需要学习SCCB协议,如果想深入一些,可能需要学习一些图像处理的知识。

如果这个摄像头要连接PC,做更深度的处理,则需要学习上位机的编写,可能需要设计协议或者写一个服务器,此时可能需要学习开发服务器的知识,以及一门写服务器的语言,包括不限于C++/Java/python/nodeJs。服务器框架可能也要学一个。服务器都有数据库,学习个简单的nosql吧,当然mysql和oracle也可以。

上位机要是需要图形界面,最简单的可能是electron,当然C++调用win32 API更好。

如过要做人脸识别、图形分割,还需要机器学习的知识,可能需要python和tensorflow / pytorch框架,当然其他语言也可以,但可能更复杂,而机器学习,基础是数学,嗯~,很难的那种。

现在都是手机端操作,Android可能学一下,Java走起。如果碰巧手机是苹果的,objective-c学起来。

如果继续深入,做一个更复杂的设备,首先需要自己设计板子,PCB设计需要学,那模电数电也需要学,电路原理更需要学。

软件层面,可能发现裸机已经不够用了,可能需要学习ucos/freeRTOS之类的操作系统,甚至自己学习写一个操作系统内核。如果这个系统要求健壮、高效,需要深入理解操作系统、数据结构、算法、优化、汇编语言等。

上述种种内容还不少,不知不觉已经学习了计算机科学的一部分了,对计算机科学有了基本的了解了。

如果大家觉得这是强行关联,其实不是。综上所有,只是用STM32做了一个处理单元放在服务器端的小机器人,能保持平衡、识别人脸、能在PC端和手机端控制而已。

语音识别、对话系统等功能还没说,这些可能需要更多自然语言处理、乃至强化学习的知识,你发现,往往效果不尽如人意,这不是你技术不好,而是这个世界的瓶颈,恭喜,可以看论文、写论文,为人类在计算机、人工智能领域的突破做贡献了。

什么?想要把运动单元做波士顿动力那样的?这事情就更复杂了,不然你以为我怎么入坑的?

以上是扩展,向深学习呢?

技术深究起来自己都怕,比如刚学习了STM32的cortex架构,那其寄存器、指令集、内存是如何实现的?刚了解这些,那其锁存器是哪一种,取指、解码过程是怎样的?加法器又怎么实现?刚了解三极管和布尔逻辑运算,那三极管是怎么工作的?刚了解PNP和NPN,那共射特性曲线是怎样的?为什么载流子会运动,正偏反偏是什么?为什么磷、硅、硼作为半导体材料,会形成电子流动?空穴是否能流动?

重点不是STM32能做什么,而是我们能用STM32做什么?能做什么程度的产品,市场竞争力如何,甚至考虑是否满足了用户未被满足的需求,也就是填补了市场空白。技术并不是独立的,而是拓扑的。

为种花崛起而学习,加油!!!

===

觉得简单就对了,说明意法成功了

当年STM32是怎么在重多单片机里脱颖而出的?库函数库函数库函数。在这之前,单片机主要是51、AVR、PIC、MSP430这些玩意,就是写个UART通信函数,都要先去CSDN“借鉴”一下,发现别人写的不完全满足需求又自己修改,然后慢慢地积累出自己的一套库...然后在换下一款单片机的时候把这几年的积蓄丢掉...

意法半导体搞这个库函数,不就是为了降低开发门槛么?让开发者专注于更抽象的应用而不需要太关注单片机底层的东西才是大趋势,意法抓住这个趋势先发制人才得以迅速占领市场。什么?直接写寄存器?汇编?这种炫技的东西绝大多数STM32的目标应用都不需要。什么成本敏感?成本敏感谁选STM32啊,几毛钱一颗只能用汇编写的单片机了解一下。

换个角度吧,Arduino简单吗?觉得Arduino简单是自负么?谁在乎你觉得Arduino简单不简单啊,大家只关心你用Arduino实现了什么。

所以STM32简单不是理所当然的事情么?倒是很好奇为啥这种理所当然的事情会让人怀疑自己是不是自负。

转自:

作者:蒋宇辰
https://www.zhihu.com/question/450708178/answer/1812354503


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

嵌入式Linux

微信扫描二维码,关注我的公众号

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

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

相关文章

回车 触发 提交事件

//gridview 文本框 回车 触发 Button 事件 < script type "text/javascript" language "javascript" > function clickButton() { if ( event.keyCode 13 ) { document.all ( ibtnUpdate ).click(); return false; } } < / script > < a…

每日一题(35)—— heap与stack的差别

heap与stack的差别: Heap是堆&#xff0c;stack是栈。 Stack的空间由操作系统自动分配/释放&#xff0c;Heap上的空间手动分配/释放。 Stack空间有限&#xff0c;Heap是很大的自由存储区 C中的malloc函数分配的内存空间即在堆上,C中对应的是new操作符。 程序在编译期对变量…

Scrapy学习-25-Scrapyd部署spider

Scrapyd部署爬虫项目 github项目https://github.com/scrapy/scrapyd 官方文档http://scrapyd.readthedocs.org/ 安装scrapydhttp://scrapyd.readthedocs.io/en/stable/install.html 运行# 在虚拟环境中使用scrapd命令# scrapyd是一个服务器监听在本地的6800端口scrapyd 安装scr…

耗时两年,19岁小伙采用230片纯74逻辑芯片搭建出32位处理器!可玩贪吃蛇

从设计 CPU、制作原型机、最终成品到软件编程&#xff0c;19 岁极客小伙用了整整两年的时间。RISC-V 是一个基于精简指令集&#xff08;RISC&#xff09;原则的开源指令集架构&#xff08;ISA&#xff09;&#xff0c;它是对应开源软件运动的一种「开源硬件」。该项目于 2010 年…

VC++ 6.0 与VS2008 C++ DEBUG工具(Windows)介绍

在VC 6.0 里面&#xff0c;debug工具有这些&#xff1a; 请看大图展示&#xff1a; 这里面几个工具都是经常用到的。比如&#xff1a;上下文信息&#xff0c;可以查看当前变量的值和地址Memory&#xff1a; 可以输入地址查看里面的内容。对调试和检查指针特别有用。 在vs2008里…

每日一题(36)—— 什么是预编译 , 何时需要预编译?

什么是预编译 , 何时需要预编译&#xff1f; &#xff11;、总是使用不经常改动的大型代码体。 &#xff12;、程序由多个模块组成&#xff0c;所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下&#xff0c;可以将所有包含文件预编译为一个预编译头。

数组与指针不能混用的情况

扫描二维码获取更多精彩嵌入式杂牌军编辑|追梦星空公众号|嵌入式杂牌军✎ 编 者 悟 语正当性的出发点应该是少目的性、不带偏见、以尊重为前提的多方考虑。文 章 导 读C中的数组有能混用的情况&#xff0c;有不能混用的情况&#xff0c;今天就带小伙伴们探究一下&#xff01;阅…

解决/WEB-INF目录下的jsp页面引入webRoot下的Js、css和图片的问题

通常把jsp页面放在webRoot的/WEB-INF下可以防止访问者直接输入页面。 而webRoot的/WEB-INF下的页面是受保护的&#xff0c;用户无法通过形如http://localhost:8080/test/webRoot/WEB-INF/content/xx.jsp来访问&#xff0c;他们的访问都必须透过struts处理请求才能达到。 然而&a…

[CTO札记]盛大游戏上市,是对《文化产业振兴规划》的响应

重要国策《文化产业振兴规划》于9月26日正式对外公布。巧合的是&#xff0c;就在前一天&#xff08;9月25日 &#xff09;&#xff0c;盛大游戏&#xff08;SDG&#xff09;成功在NASDAQ上市&#xff0c;并且创下了美股IPO规模之最&#xff08;10亿美元&#xff09;。1&#xf…

Linux内核入门之路 (非广告)

笔者从开始接触 Linux 内核应该有 4 ~ 5 年了&#xff0c;虽然不敢说非常了解 Linux 内核&#xff0c;但起码也有了点眉目。所以&#xff0c;本文主要想分享一下我的 Linux 内核入门之路&#xff0c;如果对大家有帮助的话&#xff0c;希望能够转发一下&#xff0c;帮助更多想学…

BZOJ3251: 树上三角形

BZOJ3251: 树上三角形 Description 给定一大小为n的有点权树&#xff0c;每次询问一对点(u,v)&#xff0c;问是否能在u到v的简单路径上取三个点权&#xff0c;以这三个权值为边长构成一个三角形。同时还支持单点修改。Input 第一行两个整数n、q表示树的点数和操作数第二行n个整…

CSS 背景透明

一、首先说下CSS实现背景全透明 全透明比较好实现。在要实现透明功能的id或Class里&#xff0c;输入 {background:transparent;}在IE、Firefox等浏览器下都有效果。二、再来说下CSS实现背景半透明 可以实现自定义的透明程度&#xff0c;代码如下&#xff1a; { filter:alpha(op…

万能红外遥控开发

下班刚回到家&#xff0c;天气很热~空调遥控器呢&#xff1f;找不到&#xff01;躺平不想动~风扇遥控器呢&#xff1f;找不到&#xff01;想看电视&#xff0c;不想动~电视遥控器呢&#xff1f;找不到&#xff01;好不容易找到了&#xff0c;遥控器没电&#xff1f;崩溃&#x…

每日一题(38)—— 一个32位的机器,该机器的指针是多少位?

一个32位的机器,该机器的指针是多少位&#xff1f; 指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。

简单的用户登录(一)

用来实现一个用户登录&#xff0c;这里要实现的是&#xff0c;输入用户名和密码&#xff0c;提交后&#xff0c;验证两者是否正确。 这里直接对表单提交的二者进行字符串判断&#xff0c;不涉及商业层活动。 实现项&#xff1a; 1 表单提交 2 获取表单提交值 3 客户端判断不为空…

[Lydsy1805月赛] 对称数

挺不错的一道数据结构题QWQ。 一开始发现这个题如果不看数据范围的话&#xff0c;妥妥的树上莫队啊23333&#xff0c;然鹅10组数据是不可能让你舒舒服服的树上莫队卡过的23333 于是想了想&#xff0c;这个题的模型就是&#xff0c;把u到v链上的权值出现奇偶次的01串搞出来&…

linux下被遗忘的gpio_keys按键驱动

我们新项目硬件设计上使用gpio口做按键&#xff0c;所以我就需要搞定这个驱动&#xff0c;本来想自己写一个gpio口的按键驱动&#xff0c;然后看了下内核下面的代码&#xff0c;已经有现成的了。Linux内核下游很多很多的现成驱动&#xff0c;只要你想得到的&#xff0c;基本都是…

如何通过审计安全事件日志检测密码喷洒(Password Spraying)攻击

许多渗透测试人员和攻击者通常都会使用一种被称为“密码喷洒&#xff08;Password Spraying&#xff09;”的技术来进行测试和攻击。对密码进行喷洒式的攻击&#xff0c;这个叫法很形象&#xff0c;因为它属于自动化密码猜测的一种。这种针对所有用户的自动密码猜测通常是为了避…

每日一题(39)—— sizeof

以下代码中的两个sizeof用法有问题吗&#xff1f; void UpperCase(char str[]) {for(size_t i 0; i < sizeof(str)/sizeof(str[0]); i){str[i] - (a - A);} }char str[] "aBcDe"; cout << "str字符长度为: " << sizeof(str)/sizeof(str[…

IT综合管理 新时期的运维管理思路

IT运维管理给企业带来效益已经有十余载的历史&#xff0c;IT部门也逐步成为为企业的重要支撑部门&#xff0c;通过IT部门管理好企业的网络、桌面、业务、机房环境以及其他IT资源。虽然IT运维管理已经给企业带来了节能增效的实际效益&#xff0c;但这些效益正增着IT规模的与日俱…