OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13133|回复: 17

库函数 SystemInit()与自己写的void RCC_Configuration(void)的区别

[复制链接]

43

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2012-9-25
在线时间
4 小时
发表于 2012-11-8 16:18:32 | 显示全部楼层 |阅读模式

库函数 SystemInit()与自己写的void RCC_Configuration(void)的区别
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
    RCC_DeInit();  //时钟管理重置  /* RCC system reset(for debug purpose) */
    RCC_HSEConfig(RCC_HSE_ON); //打开外部晶振  //Enable HSE
    HSEStartUpStatus = RCC_WaitForHSEStartUp();  //等待外部晶振就绪  //Wait till HSE is ready
    if(HSEStartUpStatus == SUCCESS)
    {
        RCC_HCLKConfig(RCC_SYSCLK_Div1);    //AHB使用系统时钟   //HCLK = SYSCLK
        RCC_PCLK2Config(RCC_HCLK_Div1);     //APB2为HCLK/1      //PCLK2 = HCLK/1
        RCC_PCLK1Config(RCC_HCLK_Div2);     //APB1为HCLK/2      //PCLK1 = HCLK/2
        RCC_ADCCLKConfig(RCC_PCLK2_Div4);   //设置ADC时钟频率
        //注:AHB主要负责外部存储器时钟。PB2负责AD,I/O,高级TIM,串口1。APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。

        FLASH_SetLatency(FLASH_Latency_2);  //flash操作的延时   //Flash 2 wait state
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);   //flash读取缓冲,加速 //Enable Prefetch Buffer
    
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);  //PLLCLK = 8MHz * 9 = 72MHz
        RCC_PLLCmd(ENABLE);  //启动PLL //Enable PLL
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL启动  /* Wait till PLL is ready */
        {
        }
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //将PLL设置为系统时钟源  /* Select PLL as system clock source */
        while(RCC_GetSYSCLKSource() != 0x08)           //等待系统时钟源的启动  /* Wait till PLL is used as system clock source */
        {
        }
    }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

43

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2012-9-25
在线时间
4 小时
 楼主| 发表于 2012-11-8 16:18:55 | 显示全部楼层
我想知道有什么区别呢?
回复 支持 反对

使用道具 举报

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
发表于 2012-11-8 17:07:13 | 显示全部楼层
个人理解为
你写的这个是你要开才开。并且你把各个总线的时钟都定义好了
SYSTEMINT 必须开的只是系统时钟
功能一样
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-8 17:07:27 | 显示全部楼层
找到SystemInit的源码对比下就是了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

43

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2012-9-25
在线时间
4 小时
 楼主| 发表于 2012-11-8 21:31:56 | 显示全部楼层
回复【4楼】正点原子:
--------------------------
我对比不出来。。。。。。。。。请教你一下。。SystemInit是不是之定义了系统时钟。。AHB APB2 APB1都没有定义、。。求解
回复 支持 反对

使用道具 举报

43

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2012-9-25
在线时间
4 小时
 楼主| 发表于 2012-11-8 21:35:16 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我还想问你个问题就是为什么我看你的例程都没有SystemInit()配置呢?为什么我看别人的都是先SystemInit()或者 RCC_Configuration();求解
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-8 22:11:13 | 显示全部楼层
回复【6楼】369000753:
---------------------------------
因为我都不用这个。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

43

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2012-9-25
在线时间
4 小时
 楼主| 发表于 2012-11-9 12:42:48 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
不用那个有什么区别吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-9 13:09:18 | 显示全部楼层
自己实现即可。
我的实现:
//系统时钟初始化函数
//pll:选择的倍频数,从2开始,最大值为16  
void Stm32_Clock_Init(u8 LL)
{
unsigned char temp=0;   
MYRCC_DeInit();   //复位并配置向量表
  RCC->CR|=0x00010000;  //外部高速时钟使能HSEON
while(!(RCC->CR>>17));//等待外部时钟就绪
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2;//抵消2个单位
RCC->CFGR|=PLL<<18;   //设置PLL值 2~16
RCC->CFGR|=1<<16;   //PLLSRC ON 
FLASH->ACR|=0x32;   //FLASH 2个延时周期

RCC->CR|=0x01000000;  //PLLON
while(!(RCC->CR>>25));//等待PLL锁定
RCC->CFGR|=0x00000002;//PLL作为系统时钟  
while(temp!=0x02)     //等待PLL作为系统时钟设置成功
{   
temp=RCC->CFGR>>2;
temp&=0x03;
}    
}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-3-19
在线时间
8 小时
发表于 2014-3-19 11:31:01 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
原子兄,你好,3.5的库文件里没有这个Stm32_Clock_Init(),只有个System_Init()。这个怎么用啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-19 17:11:05 | 显示全部楼层
回复【10楼】lifeng5478:
---------------------------------
那你就用System_Init()
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

21

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
264
金钱
264
注册时间
2013-9-17
在线时间
29 小时
发表于 2014-7-11 17:35:44 | 显示全部楼层
System_Init()这个函数不是在启动文件中调用了啊
 ROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  __main
                IMPORT  SystemInit
                LDR     R0, =SystemInit
                BLX     R0               
                LDR     R0, =__main
                BX      R0
                ENDP
那么这个System_Init()到底使用的是内部晶振还是外部晶振啊 ,我看聊下他会好些定义的是内部晶振啊 要用外部晶振怎么定呀 ‘
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-11 22:28:46 | 显示全部楼层
回复【12楼】11小小:
---------------------------------
请看我们教程--库函数版本.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2014-12-28
在线时间
6 小时
发表于 2015-2-2 11:01:08 | 显示全部楼层
void RCC_HSI_Configuration(void)请问这个函数在哪啊?原子哥的视频上有,但原程序却没有
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-3 00:40:25 | 显示全部楼层
回复【14楼】白桦林:
---------------------------------
库函数代码才有。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

daliang 该用户已被删除
发表于 2017-3-20 14:30:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

daliang 该用户已被删除
发表于 2017-3-20 14:36:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

daliang 该用户已被删除
发表于 2017-3-20 19:21:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-23 04:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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