数码之家

 找回密码
 立即注册
搜索
查看: 3250|回复: 5

浅谈STM32F103时钟

[复制链接]
发表于 2019-2-18 12:11:27 | 显示全部楼层 |阅读模式
本帖最后由 skw168 于 2019-2-18 16:14 编辑

前言:最近开始用STM32,功能比传统8位单片机多,目前思维比较混乱,所以在此做个总结

时钟框架






时钟源:
高速外部时钟
高速内部时钟 8MHz
低速内部时钟

关键名词:
PLLSRC 锁相环时钟选择源
PLLMUL 锁相环倍频器
SW 系统时钟选择
AHB 系统时钟分频器
ABP1
ABP2

AHB分频器后的时钟:
HCLK :to AHB bus,core,memory and DMA
ABP1时钟:应用于ABP1(MAX 36MHz)设备和TIM2,3,4
ABP2时钟:MAX 72MHz,应用于ABP2设备,TIM1和ADC

具体程序

void RCC_Configuration(void)
{
        RCC_DeInit(); //除能外部高速时钟
        //RCC_HSEConfig(RCC_HSE_OFF);
        RCC_HSICmd(ENABLE); //使能内部高速时钟

        while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY == RESET)); //等待HSI使能成功

        RCC_HCLKConfig(RCC_SYSCLK_Div1);  //设置AHB时钟  
        RCC_PCLK1Config(RCC_HCLK_Div1);   //设置APB1时钟(低速)
        RCC_PCLK2Config(RCC_HCLK_Div1);   //设置APB2时钟(高速)

        //设置PLL时钟源及倍频系数
        RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_2); // F = 8 / 2 * 2 MHz

        RCC_PLLCmd(ENABLE);//如果PLL被用于系统时钟,那么它不能被失能

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);   //等待指定的 RCC 标志位设置成功 等待PLL初始化成功

        //选择系统时钟
        //RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); //内部高速时钟
        //RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE); //外部高速时钟
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //倍频时钟

        while(RCC_GetSYSCLKSource() != 0x08);//需与被选择的系统时钟对应起来,RCC_SYSCLKSource_PLL  

        //使能APB2时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB  |
                                                 RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD  |
                                                 RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO   |
                         RCC_APB2Periph_ADC1, ENABLE);

        RCC_ADCCLKConfig(RCC_PCLK2_Div8);//ADC1时钟频率 14MHz

        //使能AHB时钟
        //RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

}










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 2家元 +26 收起 理由
2545889167 + 20 32位机的时钟树一般都蛮复杂的,不过stm32.
zidian + 6

查看全部打赏

发表于 2019-2-18 14:09:32 | 显示全部楼层
本帖最后由 bluexiaoyu 于 2019-2-18 14:11 编辑

去用一下 STM32CubeMX,你这个框架图可以图形化直接配置,
对stm32的时钟能有一个总体认识,而且配外设管脚也不会打架,库直接生成好,好用。去年年底刚刚自学stm32改了个stm32的红外热像仪套件玩。
回复 支持 反对

使用道具 举报

发表于 2019-2-18 22:03:08 | 显示全部楼层
32位机的时钟树一般都蛮复杂的,不过stm32的还好了,nxp家的才蛋疼
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-20 19:26:37 | 显示全部楼层
bluexiaoyu 发表于 2019-2-18 14:09
去用一下 STM32CubeMX,你这个框架图可以图形化直接配置,
对stm32的时钟能有一个总体认识,而且配外设管脚 ...

有时间也去试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-20 19:27:32 | 显示全部楼层
2545889167 发表于 2019-2-18 22:03
32位机的时钟树一般都蛮复杂的,不过stm32的还好了,nxp家的才蛋疼

NXP的没用过,8位单片机常用,STM32才刚用,不知道能做点什么
回复 支持 反对

使用道具 举报

发表于 2019-2-21 08:51:47 | 显示全部楼层
skw168 发表于 2019-2-20 19:26
有时间也去试试


可以图形化编辑时钟和pinout,当管脚功能冲突时候还能红色标明问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-21 18:58 , Processed in 0.218401 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表