打印
[应用相关]

STM32系统时钟配置

[复制链接]
楼主: hehhehee
手机看帖
扫描二维码
随时随地手机跟帖
21
hehhehee|  楼主 | 2023-7-23 13:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
我们打开startup_stm32f429_439xx.s文件。当然我这里以F4为例,其他的也都是一样的。会看到在系统复位时候在执行main函数之前先执行了SystemInit函数。那我们现在看看SystemInit函数中都有啥。鼠标放在SystemInit函数上面右键选择Go To Defintion of SystemInit

使用特权

评论回复
22
hehhehee|  楼主 | 2023-7-23 13:17 | 只看该作者
就会跳转到system_stm32f4xx.c文件中的SystemInit函数上来了。下面来一行一行分析:

使用特权

评论回复
23
hehhehee|  楼主 | 2023-7-23 13:17 | 只看该作者
第592行:RCC->CR |= (uint32_t)0x00000001;配置RCC寄存器的时钟控制RCC_CR寄存器第0位为1。打开HSI振荡器。

使用特权

评论回复
24
hehhehee|  楼主 | 2023-7-23 13:18 | 只看该作者
第595行:RCC->CFGR = 0x00000000;复位RCC寄存器的时钟配置CFGR寄存器,全为0。

使用特权

评论回复
25
hehhehee|  楼主 | 2023-7-23 13:18 | 只看该作者
第598行:RCC->CR &= (uint32_t)0xFEF6FFFF;;复位RCC寄存器的时钟控制CR寄存器的HSEON、CSSON、PLLON为0。

使用特权

评论回复
26
hehhehee|  楼主 | 2023-7-23 13:18 | 只看该作者
第601行:RCC->PLLCFGR = 0x24003010;复位RCC寄存器的配置PLLCFGR寄存器。具体的操作可以看下面对应的寄存器位值。

使用特权

评论回复
27
hehhehee|  楼主 | 2023-7-23 13:19 | 只看该作者
第604行:RCC->CR &= (uint32_t)0xFFFBFFFF;复位RCC寄存器的CR寄存器。
第604行:RCC->CIR = 0x00000000;失能RCC寄存器的CIR寄存器,关闭所有中断。这两行就不一一列举了。
第615行:SetSysClock();这个函数主要是配置AHB、AHB1、AHB2的时钟频率。

使用特权

评论回复
28
hehhehee|  楼主 | 2023-7-23 13:19 | 只看该作者
到这里系统时钟就全部配置完成了。在这两个函数中有很多的宏定义,在看代码的时候一定要注意是操作了哪一位,在对应为去找STM32fx的中文参考手册就容易理解多了。

使用特权

评论回复
29
hehhehee|  楼主 | 2023-7-23 13:19 | 只看该作者
要会看宏定义:


#define  RCC_CR_HSEON                 ((uint32_t)0x00010000) 0x0001 0000。

使用特权

评论回复
30
hehhehee|  楼主 | 2023-7-23 13:19 | 只看该作者
就是把RCC寄存器的CR寄存器的HSEON置位1。根据 0x0001 0000可以知道HSEON处于CR寄存器的第16位,这一点很重要。

最后来一个总结,在我们按下开发板上面的复位按键之后,系统从启动文件中先执行SystemInit函数,在SystemInit函数中配置了PLL锁相环的各个分频因子,得到了系统时钟。在SystemInit函数中又调用了SetSysClock()函数,来配置AHB、AHB1、AHB2的时钟频率。

现在我们系统时钟配置你会了吗?需要注意的是,我们写在程序的时候一般不需要配置时钟,因为我们一般用的是被人写好的工程模板,直接拿来用就可以了。但是还是需要了解,时钟树的知识比较难以理解,相信大家看上面的内容都会配置了吧!

使用特权

评论回复
31
ATLAS_chen| | 2023-7-25 09:23 | 只看该作者
系统复位后,默认使用 HSI 作为时钟源

After a system reset, the HSI oscillator is selected as the system clock. When a clock source
is used directly or through PLL as the system clock, it is not possible to stop it.
A switch from one clock source to another occurs only if the target clock source is ready
(clock stable after startup delay or PLL locked). If a clock source that is not yet ready is
selected, the switch occurs when the clock source is ready. Status bits in the RCC clock
control register (RCC_CR) indicate which clock(s) is (are) ready and which clock is currently
used as the system clock.

使用特权

评论回复
32
帛灿灿| | 2023-12-29 07:04 | 只看该作者

利用协议、加密算法或这些算法中的安全漏洞来进行攻击

使用特权

评论回复
33
Bblythe| | 2023-12-29 08:07 | 只看该作者

CPLD解密,DSP解密都习惯称为单片机解密

使用特权

评论回复
34
周半梅| | 2023-12-29 10:03 | 只看该作者

具存储功能的存储器芯片也能加密

使用特权

评论回复
35
Pulitzer| | 2023-12-29 11:06 | 只看该作者

紫外光复位保护电路是不行的

使用特权

评论回复
36
童雨竹| | 2023-12-29 13:02 | 只看该作者

大部分能够读取或者识别Flash上的数据就能够获得Firmware文件

使用特权

评论回复
37
Wordsworth| | 2023-12-29 14:05 | 只看该作者

微探针技术都属于侵入型攻击

使用特权

评论回复
38
Clyde011| | 2023-12-29 15:08 | 只看该作者

大部分单片机都带有加密锁定位或者加密字节

使用特权

评论回复
39
公羊子丹| | 2023-12-29 16:01 | 只看该作者

如果在编程时加密锁定位被使能/锁定,就无法用普通编程器直接读取单片机内的程序

使用特权

评论回复
40
万图| | 2023-12-29 17:04 | 只看该作者

编程器定位插字节

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则