STM32外设使用前为何必须先配置RCC以启动时钟?GPIO及其他外设的时钟使能详解
备注:建议直接看总结!!!!!!!!!!!!!!!!!!!
今天在看STM32,本来就是玩玩,想做个流水灯而已。结果我发现自己竟然连GPIO都不会用,看了一下人家说的库函数教程。
1、开局先设置时钟,我就懵了——玩51单片机的时候,使用IO口是不用设置时钟的。
2、然后就是设置工作模式——共有八种工作模式,这个还不算懵,也算是有所耳闻——但是在51单片机中是不需要设置IO口的工作模式的,P0口是开漏输出,P1、P2、P3都是推挽输出,至于输入,我猜都是输入浮空,由外部给高电平和低电平信号。
3、之后就是输出速度,我不太理解这个输出速度是什么???PWM?把某个端口输出位1,如果不改变端口输出,那不是一直就是1吗
使用GPIO时,为什么要配置RCC(复位 时钟 控制器),使用后有什么效果?不使用的话会怎么样?
驱动外设,为什么要时钟呢?时钟不是影响着单条指令执行速度吗?
为什么不同外设需要的时钟频率不同???外设所需要的最低时钟频率是怎么计算的?
功耗问题?
为什么要时钟呢?寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值,这样寄存器才能工作。
D触发器是什么?
与门、非门、或门、与非门、或非门、异或门——都是什么?
SR锁存器是什么?
单片机为什么要时钟信号呢?单片机只能在时钟节奏下生存(执行指令);就像人需要时间,需要节律,否则就会出现紊乱。
为什么CPU需要时钟这种概念?
端口复用和端口重映射的区别???
为什么要端口复用?
因为端口不够用,如果把所有引脚都用于GPIO,那么芯片的其他功能将没有引脚可以用。就算把一部分引脚用来作为其他功能的引脚来用,也不够。
为什么要端口重映射?
怎么配置端口复用呢?每个端口对于GPIO有7个寄存器,如果要复用的话,应该用到其他寄存器吧——目前接触到的七个寄存器都没有配置复用的功能。
总结:
问题链条:
1、第一个问题:为什么驱动Stm32外设需要先使能该外设对应的时钟?
由第一个问题经过查询资料联想到第二个问题:
2、为什么单片机需要时钟信号?
由第二个问题经过查询资料联想到第三个问题:
3、为什么CPU需要时钟信号?
在查询第三个问题的解答时,看到了一个有趣的提示:
CPU内部就是由这样一个个逻辑电路组成的。
同时,该帖子还提示说:寄存器内部其实用的是D触发器。
由这个提示衍生出第四个问题:
4.D触发器是什么?
啊,这就是数字电子技术基础了。我之前学这玩意的时候,其实不太理解为什么要学这玩意,难道要让我去造芯片?不过呢,通过这个知识点,还是能解答为什么CPU需要时钟信号了。
我就不接着继续延伸了。
感叹一下:其实我翻过很多链接,包括很多高赞链接,大部分链接都只是在强调时钟对外设或者说对单片机很重要很重要,有了时钟会使得单片机工作有序,没有时钟会使得单片机工作混乱——都没答到点子上!!听完这样的描述,我还是不明白为什么单片机需要时钟!!!而解答这个问题,非得再深入一点,深入到CPU最基础的数字电路后,才能理解这个时钟信号是怎么引入的。
其实时钟信号,我早就接触过了,比如时序图。但如果没有今天的刨根问底,我也不理解时序图的核心原理是什么,只知道有时序图这个玩意,照着时序图编写代码就能实现功能。
参考链接1:数字电子技术基础https://www.bilibili.com/video/BV18p411Z7ce?spm_id_from=333.788.videopod.episodes&vd_source=2ea2ea589243930ee77f546a53f7272d&p=25
参考链接2:为什么CPU需要时钟https://blog.csdn.net/weixin_34111819/article/details/93275151?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-93275151-blog-111185845.235%5Ev43%5Epc_blog_bottom_relevance_base2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-93275151-blog-111185845.235%5Ev43%5Epc_blog_bottom_relevance_base2&utm_relevant_index=9
参考链接3:为什么单片机需要时钟:https://blog.csdn.net/weixin_46697509/article/details/111185845
作者:流年的琐碎