来自一个电子狂的stm32学习历程
文章尾部有学习时的一些视频资料在学的可以看看那么我们就进入今天的主题我stm32的学习历程
在学习了51单片机之后,早已经对单片机这个东西甚有了解了,所有不管是从内部资源,还是一些常见应用,都可以说的头头是道。但51单片机只是一款入门级的单片机,只适合用来教学用,如果要想跟上社会的脚步,我们不应该停留在这个阶层。所以为了更深入的学习单片机,我便开始向更高端的单片机进军,而这款单片机便是STM32。
32作为一款基于ARM内核的单片机,是目前市场上最受流行的。主要的原因,就是内部资源丰富,功能强大,足足可以应对大多数产品提出的要求。当时买32开发板的时候,我是买的最便宜的Mini版,但是价格已经接近200元了。这可是我省吃俭用积攒出来的,没办法,谁让自己热爱电子呢。
收到开发板之后,我便开始了学习生涯,本以为有了51的基础,学习起来肯定很容易上手,结果我完全错了!当时学习方式有两种,一种是基于寄存器的,还有一种是基于库函数的,我选的是基于寄存器的。一开始,我先熟悉了硬件环境,后面开始进入第一个案列的学习。
当然第一个案列同样是点亮LED灯,但是这个过程不像51单片机那么简单了。首先要配置引脚模式,引脚模式有四种,由对应的寄存器控制。配置好寄存器之后,才可以进行LED的点亮操作。当时唯一的感慨就是,32的寄存器真多,多到你怀疑整个人生,回想一下51就那么十几个,而32呢,反正我没数过,几百个应该是有的!更何况51是8位的,而32直接就是32位的。
51中,我们在大脑中可以非常清晰,每个寄存器的每一位的含义。但是如果你用学51的方式这样去学32,肯定是行不通的。这时候我才真正知道,为什么大多数工程师都要有查“数据手册”的习惯,因为我们根本记不住那么多知识,只要知道怎么会用就行了。
后面随着32知识的积累,慢慢的也就习惯了其中的功能。并且后面,学习下去,我放弃了寄存器方式的学习,而是转为了基于库函数的学习。毕竟我没有那么多的时间,去了解每一个寄存器的功用。如果把他们封装起来,不需要理会其中的寄存器,直接调用对应的函数,岂不是效率提高了很多,这也正是选择库函数学习方式的理由。其实这种越往后面走,你就越会发现这种思路是适应社会的发展的,也就是后端向前端走的一个趋势,前端向应用层走的一个趋势,正如学java的人,他们完全不必知道计算机是怎么工作的,只需要如何调用API就行。
对于32的应用,我其实并没有做出太多的产品,这一切都是因为大二上学期接到了密室逃脱的项目,所以也就断了学习生涯之路,转而走向了工程这条不归路。我想这也可以解释我为什么毕业之后没有选择走研发之路,而是选择了更多的和工程打交道。
印象最深刻的一个32实践就是基于鼠标交互的32最小开发板,这是一个双层板,并且布线也是挺密集的,画板我不知道用了多少时间,但是制作的过程记忆犹新。因为那同样是我熬夜做出来的一个半成品,为什么说是半成品,因为最后发现电路板画错了/哈哈。那段时间的确是事情多,所以也就放弃了修改,不过那块半成品板子被我当成了珍藏品,至今还在我自己家中的工作室置物架上。
后面找工作的时候,发现,其实学好32还是很吃香的,很多小公司都会用32去做产品。所以,如果你自己真的非常喜欢电子这玩意,32这个单片机是一定要吃透的,这个单片机的学习是无止境的,谁让它功能强大,又顺应了时代呢,你说是吧!
(stm32串口应用)
http://www.makeru.com.cn/live/1392_1164.html?s=45051
(stm32直流电机驱动与测速)
http://www.makeru.com.cn/live/1392_1218.html?s=45051
STM32中断
http://www.makeru.com.cn/live/3523_1666.html?s=45051
(定时器)
http://www.makeru.com.cn/live/1392_1199.html?s=45051
来自一个电子狂的stm32学习历程的更多相关文章
- 大三仍是Linux系统小白的我给大家讲讲学习历程
我与Linux结缘是在大三的时候.我与Linux熟识是在偶然遇到<Linux就该这么学>的时候.因为我是电子信息工程专业,在高年级时开设了嵌入式课程,嵌入式系统是一种专用的计算机系统,作为 ...
- Nginx系列0:Nginx学习历程
Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...
- 【STM32学习笔记】STM32f407 使用4*4矩阵键盘
作者:李剀 出处:https://www.cnblogs.com/kevin-nancy/ 欢迎转载,但也请保留上面这段声明.谢谢! 写在前面: 这是本人第一次开始写博客,可能写的不是很好,也请大家谅 ...
- stm32学习笔记----双串口同时打开时的printf()问题
stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...
- stm32学习笔记——外部中断的使用
stm32学习笔记——外部中断的使用 基本概念 stm32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间只能使用一个.比如说,PA0,PB0 ...
- Django的第一个web程序及深入学习
本学习历程参照Practical Django Projects和http://djangobook.py3k.cn上翻译的内容进行 注:本例以本机加以说明: 根据Django的安装过程可知:在命令行 ...
- STM32学习笔记(二) 基于STM32-GPIO的流水灯实现
学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...
- 一个php小白找工作的历程
一个php小白找工作的历程其实对新工作还是有点忐忑的,对于我这样一个有着特殊工作经历的来说更是如此.为了更好的迎接未来,不得不总结下过去.在经历一段时间的职业生涯探索期后,还是觉得自己更适合做程序员这 ...
- 我的Linux学习历程:那些我看过的Linux书籍们
[+]查看原图http://www.ituring.com.cn/article/119401 来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为基本的计时单位.有时茫 ...
随机推荐
- pythonのdjango Session体验
Session Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认)缓存文件缓存+数据库加密cookie1.数据库Session Django默认支 ...
- canvas图片合成中的坑
需求 要用代码来实现多张外部图片和文字的合并而且要上传到七牛云,再将图片链接通过客户端分享出去.图片背景需要支持用户自定义更换. 实现方案 在一个canvas上多次调用drawImage函数,分别绘制 ...
- HTTP协议11-cookie和seesion
因为HTTP协议是无状态的,但是很多网站的功能需要先登录才能使用.这就引入了cookie. Cookie机制 服务器用HTTP头向客户端发送cookies.客户端(浏览器)解析cookies并将它们保 ...
- 【python3 自动化基础之pip】pip常用命令归类
1.升级pippython -m pip install --upgrade pip(包名) 2.安装pymysql pip install pymysql 3.pip按照到指定目录 python - ...
- form表单获取多选的值
flask 中 form 表单直接获取多选框的值时 language = request.values.getlist('values')或 language=request.from.getlist ...
- js定义数组集合
简单描述:最近脑子有点抽,js要用到数组,竟然傻傻的写了 var [] str = .简直是糟糕的不要不要的 //js代码var str = [];var str =new Array(); 啥也不说 ...
- HTTP Status 500 - java.lang.reflect.InvocationTargetException
type Exception report message java.lang.reflect.InvocationTargetException description The server enc ...
- jfinal undertow web.xml
由于 undertow 是为嵌入式 server 而生,所以 jfinal undertow 项目是不需要 web.xml 这个文件的 线上这版 Filter.Servelt.Listener.Web ...
- Gradle: Download 下载慢的解决办法
应该是gradle被墙了,在网上查得:使用阿里云的国内镜像仓库地址,就可以快速的下载需要的文件: 修改项目根目录下的文件 build.gradle : buildscript { repositori ...
- 一条很用的MSSQL语句
select *,ActionName= stuff((select ',' + ActionName from Sys_Action_Table where ModuleId = Sys_Modul ...