世界上第一个程序员是女性
作为一个 STM32 的菜鸟级人物, 我刚开始接触 STM32 时, 其实和当年开始学习 51 单片机的心理是一样的. 茫然, 谁说不是呢? 但是, 正常的学习途径无非就是看书, 然后敲代码, 最后烧程序, 有问题就 check, 然后再继续烧, 我都怀疑我快成了火头工. 因为在我的印象中, 只有这类职业才和 "烧" 有着密不可分的联系. 即使当一名敬业 *** 的火头工是我毕生的梦想. OK, 不侃了. 我希望, 通过写日志把我作为一个菜鸟在学习 STM32 中的问题记录下来, 同时以我为鉴, 规避那些没有必要的破事.
学习 STM32 要不要基础
原则上它应该是需要的, 但是, 我们也能发现很多人也是没有基础的. 比如说, 我们实验室的大师兄原来是管理专业, 但是现在相当 **, 软硬皆通. 如果你和很多致力于在技术领域中作出一番成就的人一样, 你必须记住: 你再也不能任性地说要给自己一大块时间系统地学习知识, 不现实. 更多的时候, 情况是: 敲代码时需要什么你就去找相应的 "部分知识", 然后搞明白, 解决当前的问题. 就是这样.
学习 STM32 需要什么基础
理论上, 需要数字电路, 模拟电路, C 语言编程基础, 单片机会一点就更好了, 这样的话会能适应 STM32 的编程开发思路. 不过帮助不大, 这也是我要写 "浅谈时钟问题" 的原因. 而我的情况是, 全都学过, 但你看清楚, 只是学过而已. 关于数字电路和模拟电路这种课程, 我也是记不得什么了. 好在我们实验室, 技术方面的书从来不缺.
学习 STM32 对性别有要求吗
一般, 女生都会问这个问题. 我 也问过, 所以你就知道我为什么能成为 "妇女之友" 了. 玩笑玩笑啦. 其实没有, 女生在这方面有先天性的优势, 心思细腻, 稍一转化, 这就是态度认真的同义词. 而且, 世界上第一个程序员是女性. 行啦, 女同学别得瑟了!!!
进入正题
STM32 的新手, 一般都会对一个问题很纠结. 我也是, 就是所谓的 "时钟问题". 我们在尽心 STM32 编程时, 会痛苦地发现这样一个事实: 不管你要干嘛, 你首先要做的一件事就是使能时钟. 而且可能每一次的时钟还是不同的. 你就会问: 为什么要使能时钟? 为什么每次使能的时钟还不一样呢? 为什么 51 单片机中没有这些鬼?
在学 51 单片机的时候, 基本上接触不到 I/O 方向和外设时钟的概念, I/O 想输入就直接读, 想输出就直接赋值, 串口, AD 转化, 外部中断等等也都是想用就用, 不需要单独配置时钟. 这样在初学时的确方便了很多, 不需要有乱七八糟的设置就能让芯片跑起来, 但是随之带来的就是所谓的功耗问题. 但是作为初学者, 谁他妈还管这个啊? 能让程序跑起来就已经让我们兴奋得几个晚上睡不着觉了. 说这话不太合适, 但事实上很多芯片生产厂商也不考虑这个问题.
可是随着电子产品集成度越来越高, 功耗和发热越来越严重, 芯片厂商非常无奈也在开始想办法避免这个问题, 而最直接的思路当然就是用多少功能就使能多少功能, 对每个外设的时钟都设置了开关, 让用户可以精确地控制, 关闭不需要的设备, 达到节省供电的目的. 如果不用的就完全关闭, 尽可能降低芯片功耗, 所以就出现了这么多的时钟和 IO 配置. 说白了, 时钟的功能就好像是一个小开关, 你要用什么寄存器就先对应的打开开关, 即: 使能对应的时钟.
实际上, 在这里面还涉及到一个时钟门控技术, 而这又涉及到同步电路, 我们都知道 (默认你们都知道) 在同步电路中总是有一个时钟控制. 这里我就不赘述了, 如果你和我一样是一个强迫症患者, 请你回去翻翻一本叫《数字电子技术基础》的书, 你一定可以找到答案的, 相信我吧.
到这里你就差不多能够理解为什么 STM32 编程需要不断地使能时钟了, 因为默认情况下这些时钟都是 disable 的. 你要使用它, 当然需要 enable 了. 如果再不明白, 我就想骂了: 寄存器是由 D 触发器组成的, 只有送来了时钟, 触发器才能被改写值, 这样寄存器才能工作. 只不过, 在 51 单片机一个时钟系统把一切都包了, 在 STM32 中, 我们很明确地做好了分工, 让大家各司其职, 其实这样还有一个好处就是, 不是每个外设都需要系统时钟那么高的频率, 就好像是: 哪个公司会让 CEO 去做底层代码工作一样.
这是我从一个菜鸟的角度谈得一点看法, 不够专业, 但至少会让刚开始学习时的那份纠结锐减不少.
来源: http://www.bubuko.com/infodetail-3087048.html