STM32操控外设为什么要先使能时钟
发布日期:2021-11-20 10:17:28
浏览次数:18
分类:技术文章
本文共 937 字,大约阅读时间需要 3 分钟。
STM32操控外设为什么要先使能时钟
STM32的新手,一般都会对一个问题很纠结。我也是,就是所谓的”时钟问题“。我们在尽心STM32编程时,会痛苦地发现这样一个事实:不管你要干嘛,你首先要做的一件事就是使能时钟。而且可能每一次的时钟还是不同的。你就会问:为什么要使能时钟?为什么每次使能的时钟还不一样呢?为什么51单片机中没有这些鬼?
在学51单片机的时候,基本上接触不到I/O方向和外设时钟的概念,I/O想输入就直接读,想输出就直接赋值,串口、AD转化、外部中断等等也都是想用就用,不需要单独配置时钟。这样在初学时的确方便了很多,不需要有乱七八糟的设置就能让芯片跑起来,但是随之带来的就是所谓的功耗问题。但是作为初学者,谁他妈还管这个啊?能让程序跑起来就已经让我们兴奋得几个晚上睡不着觉了。说这话不太合适,但事实上很多芯片生产厂商也不考虑这个问题。 可是随着电子产品集成度越来越高,功耗和发热越来越严重,芯片厂商非常无奈也在开始想办法避免这个问题,而最直接的思路当然就是用多少功能就使能多少功能,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。如果不用的就完全关闭,尽可能降低芯片功耗,所以就出现了这么多的时钟和IO配置。说白了,时钟的功能就好像是一个小开关,你要用什么寄存器就先对应的打开开关,即:使能对应的时钟。 实际上,在这里面还涉及到一个时钟门控技术,而这又涉及到同步电路,我们都知道(默认你们都知道)在同步电路中总是有一个时钟控制。这里我就不赘述了,如果你和我一样是一个强迫症患者,请你回去翻翻一本叫《数字电子技术基础》的书,你一定可以找到答案的,相信我吧。 到这里你就差不多能够理解为什么STM32编程需要不断地使能时钟了,因为默认情况下这些时钟都是disable的。你要使用它,当然需要enable了。如果再不明白,我就想骂了:**寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值,这样寄存器才能工作。**只不过,在51单片机一个时钟系统把一切都包了,在STM32中,我们很明确地做好了分工,让大家各司其职,其实这样还有一个好处就是,不是每个外设都需要系统时钟那么高的频率,就像是高射炮打蚊子一个道理。转载地址:https://blog.csdn.net/weixin_43217963/article/details/97792677 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月27日 07时03分19秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
微信公众号从头开发(接入与消息)
2021-06-30
端口占用 杀死进程
2021-06-30
XStream xml与javabean之间的互转
2021-06-30
Android应用构建:10:使用sdkmanager管理sdk
2021-06-30
Kubernetes基础:MacOS上设定Dashboard
2021-06-30
Go基础:MacOS上配置go语言开发环境
2021-06-30
Operator基础:1: Operator Framework简介
2019-04-27
Operator基础:2: Operator SDK安装
2019-04-27
Operator基础:3: 使用Operator SDK创建Operator
2019-04-27
GitLab基础:使用API获取某个项目下所有成员及权限信息
2019-04-27
Subversion Edge:下载官方旧版的Subversion Edge
2019-04-27
OpenEuler简介与安装
2019-04-27
轻量级容器引擎iSula简介
2019-04-27
Bash基础:在MacOS上确认版本与升级Bash的方法
2019-04-27
版本管理:Subversion Edge:旧版使用OpenJDK的问题和对应方法
2019-04-27
版本管理工具:CentOS下安装配置Subversion Edge 4.0.14
2019-04-27
zsh下brew安装
2019-04-27
Kubernetes 1.3 从入门到进阶 安装篇(1)
2019-04-27
HP-UX 使用SAM进行Printer设定
2019-04-27
Kubernetes 1.3 从入门到进阶 安装篇(2)
2019-04-27