引用:http://blog.csdn.net/u010349006/article/details/416

首先,两个都是C语言。
从51过渡过来的话,就先说寄存器操作。每个MCU都有自己的寄存器,51是功能比较简单的一种,相应的寄存器也比较少,我们常用的就那么几个,像P0 P1 SMOD TMOD之类的,这些存在于标准头文件reg.h里面,因为少,所以大家就直接这么去操作了,每一位对应的意义随便翻一下手册就看得到,甚至做几个小项目就记的很清楚了。所以做51开发的时候大多数都是直接操作寄存器。
到了STM32,原理一样,也是有自己的寄存器,但是作为一款ARM内核的芯片,功能多了非常多,寄存器自然也就多了很多,STM32的手册有一千多页,这时候想去像51那样记住每个寄存器已经不现实了,所以ST的工程师就给大家提供了库函数这么一个东西。
这是个神器。
库函数里面把STM32的所有寄存器用结构体一一对应并且封装起来,而且提供了基本的配置函数。我们要去操作配置某个外设的时候不需要再去翻眼花缭乱的数据手册,直接找到库函数描述拿来就可以用,这样就能把精力放在逻辑代码的开发上,而不是去费力的研究一个芯片的外设要怎么配置寄存器才能驱动起来。
简单讲就是这些了,库函数是为了让开发者从大量繁琐的寄存器操作中脱离出来的一个文件包,在使用一个外设的时候让开发者直接去调用相应的驱动函数而不是自己去翻手册一个一个配置寄存器。
有人说用库函数掌握不到芯片的精髓,见仁见智了。熟悉一款芯片是在不断的开发使用中逐渐了解并掌握的,调试的过程中会遇到很多问题,会要求我们去跟踪相关寄存器的状态,在整个框架都已经建立起来的基础上再去对照手册做具体到寄存器每一位的分析,代码对照现象,很快就能积累起来经验,祝成功。

最新文章

  1. OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序
  2. ssh批量互信脚本
  3. Python模块:collections
  4. 《MySchool数据库设计优化》内部测试
  5. C++复现经典游戏——扫雷
  6. SVN使用安装
  7. 内置对象Global和Math对象
  8. Spring MVC配置DispatcherServlet的url-pattern
  9. 捣蛋phpwind过滤器执行流程
  10. [Unity3D+算法]一小时做个2048
  11. 基于Hadoop生态圈的数据仓库实践 —— ETL
  12. Milk Patterns
  13. centos7 install jdk
  14. TMethod的学习与使用
  15. poj 1177 picture
  16. Why AIXTHREAD_SCOPE Should Be Set To 'S' On AIX
  17. 系统启动时,dts怎么被加载的?
  18. JAVA-变量
  19. Java字符串和容器
  20. Java 编码规范 StandardCharsets.UTF_8 三个方法 toString() name() displayName(),到底用哪个方法更合适?

热门文章

  1. 12、jquery的tree组件
  2. std::locale与boost::locale的学习
  3. pair的用法
  4. 【C++】清空一个C++栈的快速方法
  5. mysql优化1:建表原则
  6. CM集群管理
  7. python+tushare获取股票每日停复牌信息
  8. hdu 6437 /// 最小费用最大流 负花费 SPFA模板
  9. spring boot Swagger2(version=2.7.0) 注解@ApiImplicitParam的属性dataType值为”自定义泛型“应用
  10. leetcood学习笔记-404-左叶子之和