根据个人学习MCU的经验,总结关于MCU的学习方法。本文的主题结构如图(完整架构图,见文尾的下载链接):
以下按照主题结构图的内容顺序分析。
一、目标与计划
在开始学习MCU之前,我们先思考以下的问题。整个MCU学习过程下来,很多时候是在对以下问题进行回答。
思考:
原因:为什么要学MCU?
目标:达到什么水平?
计划:怎么达到这个水平(怎么学)?用多长时间?
1、原因:视个人而定
①、为学习而学习?
②、为解决某个问题而学习?
2、目标:视个人而定
①、只是单纯入门怎么使用MCU?
②、打算先入门,再稍稍进阶?
③、打算先入门,再进阶,再深入?
3、计划:关于怎么做的问题。可以以最终目标为向导,对最终目标进行分阶段分解,再对每个阶段的目标进行方法的制定。学习计划制定完成后,剩下是对计划的执行、反馈、调整的问题了。
①、入门:要准备什么?先哪些方面开始接触MCU?
②、进阶:已经具备入门的水平啦?进阶要学什么?
③、深入:入门、进阶都完成?要从哪些深入MCU?
二、步骤
关于MCU的学习步骤,结合个人经验,以32位MCU为例来讲解。
1、准备
自身准备:
①、编程能力:至少会C语言,基本看得懂汇编
②、硬件能力:看得懂基本的原理图;基本的焊接能力;
外界准备:
①、硬件:开发板、调试工具;
②、软件:Keil for ARM(MDK)、JLink驱动、串口终端等的安装
③、资料:MCU数据手册、开发板原理图、MCU的例程
工具使用:
①、MDK:创建工程、工程文件结构的管理、设置参数的配置
②、JLink:JTAG或SWD模式的连接使用,用于烧录、调试
③、万用表:基本的通断路、电压电流测量;
(进阶:1、使用EDA软件绘制原理图;2、使用示波器、逻辑分析仪对数据进行辅助分析)
2、流程
关于MCU的不同阶段的学习基本内容,个人建议如下图所示:

三、部分方法
此部分是关于我个人在学习MCU过程一些常用到的技能的方法论的总结。
1、外设的学习方法
在刚接触一个外设时,可以带带着以下3个问题去阅读MCU的数据手册,找到解答。
①、是什么:了解外设的概述。
②、有什么用:了解外设的功能描述。
③、怎么使用:了解外设的寄存器描述。
2、外设的初始化配置方法
一般MCU的外设的初始化配置流程,方法如下:
①、时钟开启
②、相关引脚配置:是否复用
③、外设寄存器配置:功能模式选择、时钟配置、工作方式配置
④、使能配置:外设使能、是否中断使能
3、外部IC芯片的使用
MCU经常通过通讯接口访问外部IC,如可以通过SPI接口访问外部FLASH、通过IIC访问EEPROM芯片、通过并口访问外部SRAM等等。对于这些外部IC芯片,在使用时,通过阅读这些IC的数据手册时,我们可以重点 关注以下几个内容:
①、是什么:手册的概述
②、有什么用:特性
③、怎么用:通信接口?各个引脚功能?时序?命令?
四、建议点
这部分内容是关于学习MCU过程,我个人的一些建议。
1、模板工程建立
建立一个具备基本功能的工程作为模板工程,并配置好相关参数。方便我们后续复用,后续功能都可以在这个模板工程中添加,不用重复创建工程。
建立模板工程,要注意以下几点:
①、硬盘中模板工程的文件组织结构:启动文件、驱动文件、 main函数、编译中间文件、工程文件等的存放;
②、MDK中的文件组织结构:启动文件、驱动文件、 main函数等的存放;
③、参数配置:MCU型号、晶振频率、调试等的配置
④、包含基本功能:系统时钟配置、串口功能。
2、统一的代码规范
统一的代码规范,有助于编程的规范性,提高代码的可读性、可维护性。建议制定、采用统一的代码规范进行编程,哪怕代码只是写给自己看而已。
制定代码规范,可以关注以下几点:
①、命名规范:
宏定义、变量名、函数名
②、注释规范:
行注释、函数外块注释、函数内段注释
③、排版风格:
代码格式、对齐要求、文件头尾注释格式、函数头注释格式
3、外设学习注意点
初步学习:
①、建议简化代码:
除了GPIO、UART、系统时钟配置外,学习某个外设时,刚开始使用,尽量不要加入其它外设如LCD屏显示、按键等进行触发;将代码功能设计成通过串口打印来观察执行状态。
②、简化调试:
尽量使用串口进行调试,不要通过LCD屏、按键调试。将寄存器数值、变量数值、代码执行过程等通过串口打印出来理解。
等该模块外设各功能调试没问题后,再综合其它外设进行使用。
4、使用寄存器方式 VS 库函数方式学习
关于是用寄存器方式还是库函数方式学习MCU的疑问。个人建议如下:
①、如果想较彻底地了解外设怎么用,刚开始学习,建议还是用寄存器配置方法:根据控制寄存器、状态寄存器的功能描述,结合自己的功能需求,对相应寄存器相应功能位的配置。
好处:对该外设功能的理解更深;对寄存器功能了解更深,有助于调试过程找问题;编程的位运算处理能力;
②、如果已经掌握了怎么样用寄存器方式使用外设的能力,后续接触其它MCU可以通过库函数的方式去学习或编程。因为不同MCU的同样外设功能,一般是大同小异,已经具备了通过寄存器方式对一款MCU的功能使用有较深了解的能力。在接触其它MCU时就没多大必要再去重复造轮子。
:本文内容结构完整的思维导图的下载链接:
http://download.csdn.net/detail/bulebin/9892844

单片机MCU学习方法总结相关推荐

  1. ADAS处理器集成功能安全单片机MCU

    ADAS处理器集成功能安全单片机MCU ADAS processors integrate functional safety MCU 拉斯维加斯-德州仪器公司引进了ADAS和网关处理器TDA4VM和 ...

  2. FMD辉芒微FT61F133A-RB SOP16 ADC/PWM型单片机MCU

    FMD辉芒微FT61F133A-RB SOP16 ADC/PWM型单片机MCU 产品简介 : FT61F13X是一款精简指令集的A/D型8位单片机,其内部集成了一个RAM数据存储器和一个非易失型数据E ...

  3. 02 嵌入式/单片机/MCU众包接单平台有哪些?

    嵌入式/单片机/MCU众包接单平台有哪些? 作者 将狼才鲸 创建日期 2023-02-11 CSDN文章地址:嵌入式/单片机/MCU众包接单平台有哪些? 一直想找到靠谱的嵌入式.单片机接单平台,网上搜 ...

  4. 国产单片机MCU DSH550 ,可应用于中央空调温控器上

    DSH550是一个高性能低功耗的 RISC 8位国产单片机,可应用于中央空调温控器上面. 高性能的 RISC CPU 8 位单片机 MCU 内置 4K×16  位一次性可编程存储器(OTP ROM) ...

  5. 单片机 MCU 固件打包脚本软件

    1 前言 开发完 MCU 软件后,通常都会生成 hex 文件或者 bin 文件,用来做固件烧录或者升级,如果用来做产品开发,就涉及到固件版本的问题,初学者通常采用固件文件重命名来区分版本. 如果需要将 ...

  6. FMD辉芒微原厂FT61F133A-RB SOP16 ADC/PWM型单片机MCU

    FMD辉芒微原厂FT61F133A-RB SOP16 ADC/PWM型单片机MCU 产品简介 : FT61F13X泛海微是一款精简指令集的A/D型8位单片机,其内部集成了一个RAM数据存储器和一个非易 ...

  7. FMD辉芒微原厂FT61F135-TRB SOP20 ADC/PWM型单片机MCU

    FMD辉芒微原厂FT61F135-TRB  SOP20 ADC/PWM型单片机MCU FT61F13X 产品简介 : FT61F13X是一款精简指令集的A/D型8位单片机,其内部集成了一个RAM数据存 ...

  8. FMD辉芒微原厂FT62F085E-RB SOP20 触摸型单片机MCU

    FMD辉芒微原厂FT62F085E-RB SOP20 触摸型单片机MCU 产品简介 : FT62F08X泛海微是一款增强型精简指令集的TOUCH型8位单片机,指令周期2T/4T可选.其特点为宽工作电压 ...

  9. 单片机MCU软硬件联调基本方法

    做MCU软件开发,离不开硬件,软硬件调试的技能也是必须掌握的,现在介绍一些软硬件联调的基本方法. 软硬件联调常使用的方法有 :分支思想.分层法.对比法.这些方法不是只属于软硬件联调可用,在软件开发过程 ...

  10. 理解单片机(MCU)、ARM、DSP,vDSP(Vision DSP )都是处理器,

    可以具体参考知乎上的讨论怎么深入浅出地理解「单片机.ARM.DSP 有互通之处,都是 CPU」? 一.理解MCU,ARM cpu, DSP 作者:匠人时尚 链接:https://www.zhihu.c ...

最新文章

  1. c语言把地址用%d输出字符串,C语言必须要记住的经典程序
  2. PHP PDO 连接SQLSErver,PHP 使用 PDO 方式连接 sqlserver ,拼接 的 sql 命令总是报错
  3. Windows C/C++ 语言菜单基本编程
  4. MyBatis之注解开发
  5. 【NLP】FedNLP: 首个联邦学习赋能NLP的开源框架,NLP迈向分布式新时代
  6. java面向对象各章节教程_第二部分java面向对象编程第08章集合框架List1章节.ppt...
  7. 12306 被质疑过度获取用户隐私,不授权还买不了票
  8. MongoDB如何释放空闲空间?
  9. VMware15下安装Ubuntu18.04
  10. Apache JMeter web 应用测试工具使用快速入门
  11. 一文搞懂软件测试,完整总结软件测试基础知识
  12. keeplive发生脑裂问题处理过程
  13. 如何用邮件群发软件发邮件到对方的信箱里
  14. uniapp路线规划
  15. 乌镇里的AI || 新芒X
  16. lol:opgg国服账号怎么观看韩服
  17. pyinstaler打包paddle
  18. Python-pptx Slides
  19. 【linux系统(ubuntu16.04)】文件权限数字777,440含义解读(精华帖)
  20. 易语言对接腾讯ai智能闲聊

热门文章

  1. 独立思考者的思考模型
  2. Cobalt Strike 的 Profile 文件解析
  3. Xcode No account for team . Add a new account in the Accounts preference pane or verify
  4. linux下puts和gets命令用法,puts()和gets()函数(示例代码)
  5. 卡尔曼滤波器的理解,C代码实现,和opencv里面KalmanFilter 的使用
  6. python模拟12306购票_实现12306模拟登录--Python
  7. java网络编程中Socket什么意思?怎么工作的?
  8. 怎样学手机拼音打字html t=45,在手机上怎么学拼音打字
  9. Python 基于豆瓣电影的可视化分析系统
  10. 阿里云云计算ACP学习(八)---网络与VPC