首先强调:时钟使能必须在外设初始化之前!!!!!!!

  在这引用一个解释,

  “ARM的芯片,外设通常都是给了时钟后才能设置它的寄存器(即才能使用这个外设)。

  STM32、LPC1XXX等等都是这样,这么做的目的是为了省电,使用了所谓时钟门控的技术。

  寄存器是基于什么的?

  当然是触发器!!!准确地说应该是D触发器

  触发器的赋值是一定需要时钟的, 而寄存器的时钟是由总线时钟提供的,就是说没有总线时钟的话,你给寄存器值它是不会读入的。换句话说,只有送来了时钟,触发器才能被改写值,这样寄存器才会工作。

  又会有人说为什么我之前学51的时候为什么不用使能时钟呢?

  当初我们学51的时候,哪会关注功耗,我们能跑起来程序就行了,而且对于大多数厂家来说,绝大多数不会关注功耗。但是STM32不同,为了减少功耗,ST公司为了省电,使用了所谓的时钟门控的技术,这又涉及到了同步电路。同步电路中总有一个时钟控制。

  在默认情况下这些时钟都是disable的。你如果要使用它,首先就需要enable。

  我们也可以把这个时钟简单的比作为门,STM32之所以是低功耗,就是因为他把所有门都默认设置为disable,在你需要用哪个门的时候,开哪个门就可以,也就是说用到什么外设,只要打开对应外设的时钟就可以,其他的没用到的可以还是disable,这样耗能就会减少。

最新文章

  1. [LeetCode] Ugly Number 丑陋数
  2. RedHat Enterprise Linux 6.4 使用 Centos 6 的yum(转)
  3. 【Java】多线程_学习笔记
  4. node.js基础 1之 Querystring参数处理小利器
  5. HashTable, HashMap, LinkedHashMap, ConcurrentHashMap
  6. Unity Standard Assets 简介之 Utility
  7. ADF_Starting系列8_使用EJB/JPA/JSF通过ADF构建Web应用程序之扩展UI Method
  8. [Java Web] 3、WEB开发之HTML基础程序试手
  9. 查找素数(0~1000)的算法(Java代码)
  10. 简单封装JDBC
  11. C# 使用WIN32API设置外部程序窗口无边框
  12. ActiveMQ JMS 在发邮件中的使用
  13. Android 实现UI设计
  14. 多个 (li) 标签如何获取获取选中的里面的某个特定值??
  15. OpenShift实战(一):OpenShift高级安装
  16. AutoCAD下载
  17. 软工+C(1): 题目设计、点评和评分
  18. MSSQL内存架构及管理
  19. TeamViewer app案例分析
  20. windows 7 64 bit 注册dll

热门文章

  1. Codeforces 360C DP 计算贡献
  2. oracle10G锁查询、批量杀锁及常用sql
  3. @InitBinder 前端传递date时间类型属性时,转换错误问题
  4. 【串线篇】面向切面编程AOP
  5. python读取配置文件(ini、yaml、xml)
  6. 贾扬清谈大数据&AI发展的新挑战和新机遇
  7. testNG之参数化测试
  8. 【dart学习】-- Dart之异步编程
  9. ubuntu下共享wifi 使用kde5-nm-connection-editor
  10. 探索Redis设计与实现2:Redis内部数据结构详解——dict