NXP

单片机MCU学习方法总结

2019-07-12 12:57发布

data/attach/1907/ifu4se3wi565l8zoo76deht964rwkz9k.jpg 根据个人学习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