电力电子技术
直播中

王文娥

7年用户 140经验值
私信 关注
[问答]

STM32操作 I/O口的步骤

STM32中I/O口操作为什么要不断设置使能时钟?

回帖(1)

杨思

2021-1-25 16:54:11
  先来总结一下 STM32 操作 I/O 口的步骤(以精英板为例):
  ① 使能 I/O 口时钟,调用函数为RCC_APB2PeriphClockCmd();
  ② 初始化 I/O 参数,调用GPIO_Init();
  ③ 操作 I/O 口
  看了STM32操作 I/O 口的步骤,是不是一头雾水,因为我们以前学习51单片机的时候,根本没有这么麻烦,I/O 想输入就直接读,想输出就直接赋值,串口、AD转化、外部中断等等也都是想用就用,不需要单独配置时钟。
  51单片机的这种做法确实很方便,不需要有乱七八糟的设置就能让芯片跑起来,但是随之带来的就是所谓的功耗问题。换句话来说就是一些资源根本用不上,但是芯片却还给它分配资源,即增加了芯片的负担,又浪费了资源。
  随着电子产品集成度越来越高,如果还用51单片机的那套,功耗和发热越来越严重,芯片厂商非常无奈也在开始想办法避免这个问题,而最直接的思路当然就是用多少功能就使能多少功能,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。我们学51单片机就知道,单片机之所以能够单独工作,就是因为他又独立的时钟(晶振),那如果想关闭某些功能,就直接关闭它的时钟就好了,所以就出现了这么多的时钟和IO配置。
  最后总结就是,默认情况下这些时钟都是disable的。你要使用它,当然需要enable了。
  寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值,这样寄存器才能工作。只不过,在51单片机一个时钟系统把一切都包了,在STM32中,我们很明确地做好了分工,让大家各司其职,其实这样还有一个好处就是,不是每个外设都需要系统时钟那么高的频率,就像是高射炮打蚊子一个道理。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分