STM32单片机怎么学最快?我当初是怎么一周搞定的?
最近看到很多小伙伴学STM32学的一脸茫然,有些甚至学1年都不会,有些虽然学会了外设使用,一做起项目来无从下手。
那今天通过自己的经历来告诉大家STM32怎么学最快,领悟到了1周学会绝对没问题!
一、入门
我刚开始学完51就出去找工作了,那时是2011年,企业对这个职位的要求还不高,会51会改程序基本就能找到工作。
工作中我接触最多的就是STC单片机,做MF卡的权限控制板。
后面又接触到了TFT屏幕的产品,用到了NXP,那是我人生中第一次接触32位ARM7的芯片,使用起来跟比51复杂很多,但是原理都一样,需要自己配置寄存器来使用外设。
后面在一个老工程师的推荐下,听说STM32单片机开发用起来很舒服,开发周期也快。
然后一个新产品就换成了STM32,等搭建好开发环境以后准备看芯片外设怎么用起来的时候,发现一脸懵逼,怎么跟51单片机的程序架构完全不一样?
为了不在老大面前暴露自己的技术水平,我偷偷在某宝上买了一个STM32的开发板。
那个时候还不带视频教程,只是带了每个外设的使用例程。
我性格也比较浮躁,那些数据手册都看不下去,我直接复制例程里面的程序到我的工程里面先看看效果。
中间也踩了很多坑,比如说直接复制过来编译总是会报错,多半都是头文件没整好。
一番倒腾之后,例程终于能跑起来了,那么接下来我的学习技巧 是:
1. 举一反三
就是看到例程效果以后,我会尝试着去改这个例程的外设配置。
比如说例程是控制PA1引脚的灯闪烁,那我会改成PB2,PC2或者其他测试下。
比如说例程定时器1中断是10ms,那我换一个定时器2中断20ms,这样去尝试。
2. 会用就行
当你有系统学习stm32想法的时候,注定就要走很多弯路。
单片机只是一个工具而已,我们只要学会使用它就可以了。
我们学习必须有明确目的,我们目的就是通过单片机做产品产生价值。
把产品用到的外设都能够跑起来,并且知道改哪里是修改什么参数的时候就够了。
后续你随着你经验的增加,你对stm32的理解也会越来越深,很多曾经的问题也会迎刃而解。
如果你照着例程都不会用的话,那大概率是你没学习过51直接跳到STM32,或者没用51做过一些小项目。
这个时候与其死磕,还不如花点时间回去把51单片机系统学一遍 更快。
二、进阶
学会外设使用以后啊,接下来就是进阶阶段,大多数人在这个阶段提升是最慢的,主要有几点原因:
1. 新手接触不到实际产品开发,即使接触也是打杂,参与不到核心的开发。
2. 没有人带,经验和产品思维局限在自己的认知里。
3. 市面上教程都是开发板多,真正接近实际产品的学习板非常少。
所以很多新手,特别是应届生容易陷入了一个死循环,接触不到实际产品开发,找工作就没优势,找不到工作就更接触不到实际产品开发。
对于进阶这块,我在19年随便录制了一套视频,计划只是录出来玩一下的。
内容主要手把手教你写一个轻量级的时间片轮训操作系统,也可以理解成是一个程序架构。
在这个架构的基础上,我提供了在产品开发当中,经常会碰到的一些痛点解决方法,比如说。
1.如果一个产品有10个甚至更多按键需要同时检测短按、短按释放、长按、长按释放动作的时候,代码怎么写可扩展性更强?
2. 如果有10个甚至100个LED灯,要怎么实现每个灯独立的效果,比如说慢闪、快闪、隔3快闪2次,隔5秒快闪1次等等。
3.做物联网网关时会实时跟服务器进行心跳监测,在如此高频和数据量大的情况下,怎么保证数据不丢包。
那解决这些问题所涉及到的技术点有回调函数、任务调度、队列算法等等,如果全部吃透并且加以优化,足以写出可移植性和可扩展性非常强的程序。
这个程序架构是开源提供给大家的,包括视频教程+源码+工具。
需要的大家可以找无际单片机编程获取,大佬就别来了,帮不了你。
这套架构算是我半个职业生涯的精华总结,如果没一定产品开发经验或许看不懂,但是值得你收藏吃灰,当你真正碰到那些问题后,再回过头来看,你会开心的像个小孩!
单片机这么简单?一分钟看懂单片机最小系统电路原理图:STM8S
坚持每天分享本人十几年的单片机系统开发经验,循序渐进,逐步深入,您的关注是我的动力来源!
本文以ST公司的STM8S003单片机为例,给大家讲解一个单片机最小系统的电路原理图:通过单片机采集一个按键信号,点亮一颗LED灯。
如果你看懂了这张原理图,单片机硬件就入门了——真的到进门了!
一、系统框架
电源从电源插座P1进入电路板,经过LM7805稳压成VCC(=5V)给单片机供电,单片机采集按键S1的信号,点亮LED灯D2,编译好的程序经过程序下载口JP1下载到单片机里。
二、电路细节
电源插座P1可以采用12V电源,二极管D1的作用是为了防止电源不小心反接而损坏电路器件。
LM7805前面的两个电容C1和C2和后面的两个电容C3和C4是为电压滤波的,进一步稳定VCC的电压,让VCC的纹波不要太大,因为纹波大了会影响单片机的工作。
电容C5和C6是依据STM8S003的数据手册要求必须用的两颗电容,遵照执行即可,暂时不用深究,后续我的文章中会谈到。
电阻R1是为了限制发光二极管(LED)D2的电流。LED一般需要5-10mA的电流才能点亮,LED本身的压降一般比较固定,其值是1V左右,当单片机控制PC6口输出低电平时,LED将被点亮,这时LED中的电流为:(5V-1V)/0.47KΩ=8.5mA。
按键S1一端接地,一端接单片机PD3口,在PD3口内部可以通过软件设置上拉电阻,当S1断开时,PD3口为高电平;当S1闭合时,PD3口为低电平。单片机依据PD3口的电平状态即可获知按键是否闭合。
JP1是程序下载接口,所有STM8单片机的程序下载接口都是一样的。其中NRST为单片机复位接口,SWIM为程序下载的数据通道,电脑里的程序代码就是通过SWIM传输到单片机中的。
疑问:为啥没有时钟(晶振)电路?因为现在的单片机一般内部集成有RC振荡电路,通过软件可以设置单片机选用内部的RC振荡脉冲作为单片机内部的时钟。只是内部RC振荡电路的时钟不是太精准,对于一些时钟精度要求比较高的场合可以外接晶振电路。不过,大多数实际应用,内部RC振荡电路的精度已经足够了。
三、总结
所有STM8单片机相关的原理图基本上都是在这个电路基础上进行演进,万变不离其宗。
所有其它品牌和系列的单片机,其硬件原理图基本上也大同小异,掌握其中一个原理图,其它单片机的原理图也就都能看懂了。
这样是不是很简单呢?后续我还会讲解更多的单片机知识,内容是逐步深入的,留言加关注是对我最大的支持!
四、课后作业
如何实现LED灯的渐亮渐灭?
相关问答
stm单片机 如何烧程序?STLink是意法半导体推出的用于ST系列单片机的程序烧录器,主要适用于STM8单片机和STM32单片机,具有20针的接口和4针的接口两种形式。其中,STM8单片机会用到四...
单片机 的使用流程?单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发...
51 单片机 怎么改成 stm ?51单片机到STM32的过度,不困难,仅体现在单片机寄存器的配置上,下面分几个方面进行说明。1.从外围电路层面的过度在产品设计中,单片机往往是核心,产品的不...
请问小白学 单片机 的具体方向和步骤该如何呢?我是从大学开始学习单片机的,现在分享一下我的学习感受。单片机学习分为硬件部分和软件部分,硬件那部分需要电路,模电数电等作为基础,软件部分只需要有一点...
stm单片机 中hal是什么意思?stm单片机中HAL是HardwareAbsractLayer的缩写,直译是硬件抽象层的意思,这涉及到软件分层设计结构的理念。这一层主要是针对底层硬件操作的封装,供上层调用...
怎么学会使用keil软件?想要学会使用keil软件,你可以参照以下这几个步骤:1、首先,先到网上下载keil软件安装包,然后按照步骤,安装到电脑上。安装好keil软件之后,打开软件,软图所...安...
求 单片机 编程软件 教程 ?这个问题有点大,因为目前市面上单片机有很多种,而每种单片机都有自己的编程软件,这些编程软件虽然编译原理近似,但是编译环境、编程配置的差别还是很大的,所...
单片机stm 8s003通过pwm控制8个led的亮度?软件模拟的pwm频率不会太高,否则中断太频繁没时间干其它任务了。可以开一个定时中断,时间为pwm周期的1/n,这样pwm的分辨率也就是1/n。软件模拟的pwm频率不会...
stm 8 单片机 用什么软件开发好?STM8单片机是ST意法半导体的8位单片机,该系列单片机有三个分类,分别是:STM8A:汽车级应用芯片;STM8S:标准系列应用芯片;STM8L:低功耗应用芯片;STM8的编...IAR.....
大仙们 有人知道么,可靠 STM 办事处, STM 什么牌子服务态度好??[回答]STM是STepperMotor的简称,STM是一种配备静音步进马达的镜头,比一般DC马达安静、省电。STM马达对焦速度介於传统马达和USM之间,不算快,但是和USM一...