发新帖我要提问
12
返回列表
打印
[其他ST产品]

STM32F10x从零开始配置时钟

[复制链接]
楼主: qn7a12
手机看帖
扫描二维码
随时随地手机跟帖
21
qn7a12|  楼主 | 2023-1-31 11:00 | 只看该作者 回帖奖励 |倒序浏览
PLL配置
RCC->CFGR = ((7 & 0xf) << 18)|(RCC->CFGR & ~(0xf << 18));//PLL输出9倍频  8M*9=72M
RCC->CFGR = ((1 & 0x01) << 16)|(RCC->CFGR & ~(0x01 << 16));//PLL时钟源选择HSE
RCC->CFGR = ((0 & 0x01) << 17)|(RCC->CFGR & ~(0x01 << 17));//HSE不分频接入PLL
RCC->CR |= (1<<24);//使能PLL
while((RCC->CR & (1 << 25))==0);//等待PLL就绪

使用特权

评论回复
22
qn7a12|  楼主 | 2023-1-31 11:02 | 只看该作者
系统时钟配置
RCC->CFGR = (0x02 & 0x03)|(RCC->CFGR & ~(0x03));//系统时钟源选择PLL
while((RCC->CFGR & 0x0c)!=0x08);//等待PLL作为系统时钟源就绪

使用特权

评论回复
23
qn7a12|  楼主 | 2023-1-31 11:03 | 只看该作者
这样系统时钟就配置完成了,如果HSE接的是8MHz晶振,那么SYSCLK=AHB=APB2=72MHz,APB1=36MHz 。这里并没有开启RTC、USB等时钟,大家可以根据需要自行开启。
对系统时钟的初始化,在STM32F10x的库函数system_stm32f10x.c文件中:SystemInit函数也有类似的实现方法,大家也可以参考下。

使用特权

评论回复
24
qn7a12|  楼主 | 2023-1-31 11:09 | 只看该作者
备注

    系统复位后,HSI 振荡器被选为系统时钟。

使用特权

评论回复
25
qn7a12|  楼主 | 2023-1-31 11:11 | 只看该作者
时钟安全系统可以通过软件被激活。一旦其被激活,时钟监测器将在 HSE 振荡器启动延迟后被使能,并在 HSE 时钟关闭后关闭。如果 HSE 时钟发生故障,此振荡器自动地被关闭,时钟失效事件将被送到高级定时器 TIM1 的断路输入端,并产生时钟安全中断 CSSI,允许软件完成营救操作。此 CSSI 中断被连接到 Cortex-M3 NMI 的中断。

使用特权

评论回复
26
qn7a12|  楼主 | 2023-1-31 11:11 | 只看该作者
如果独立看门狗已经由硬件选项或软件启动,LSI 振荡器将被强制在打开状态,并且不能被关闭。在 LSI 振荡器稳定后,时钟供应给 IWDG。

使用特权

评论回复
27
qn7a12|  楼主 | 2023-1-31 11:13 | 只看该作者
只有当SYSCLK低于24MHz时才能转换预取缓冲器的开启/关闭状态。通常在系统的初始化程序中开启或关闭预取缓冲器,此时微控制器运行于内部的8MHz阻容振荡器(HSI)。

使用特权

评论回复
28
qn7a12|  楼主 | 2023-1-31 11:17 | 只看该作者
注意:当 AHB 时钟的预分频系数不为 ’1’ 时,必须打开预取缓冲器 (FLASH_ACR[4]=1) 。如果在系统中没有高频率的时钟,即HCLK频率较低时,闪存的访问只需半个HCLK周期(半周期的闪存访问只能在时钟频率低于8MHz时进行,使用HSI或HSE并且关闭PLL时可得到这样的频率);在闪存访问控制寄存器中有一个控制位(FLASH_ACR[3])可以选择这种工作方式。

使用特权

评论回复
29
qn7a12|  楼主 | 2023-1-31 11:18 | 只看该作者
注意:当使用了预取缓冲器和 AHB 时钟的预分频系数不为 ’1’ 时,不能使用半周期访问方式。

使用特权

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

本版积分规则