求问一个STM32的问题 RCC_Configuration()是一个配置时钟的函数有人说不管什么样的程序

2024-05-16 18:25

1. 求问一个STM32的问题 RCC_Configuration()是一个配置时钟的函数有人说不管什么样的程序

看你使用的STM32的库函数了,在3.0版本前的库中,这个一般都是必须的配置的,在3.0以后的版本中出现了个stm32f10x.h的函数,将时钟配置定为默认的,在main函数中不直接使用这个函数了,你可以看一下

求问一个STM32的问题 RCC_Configuration()是一个配置时钟的函数有人说不管什么样的程序

2. STM32单片机库函数问题

一般不行
必须要调用stm32f10x_rcc.c,SystemInit()只是将系统的时钟帮你配置好,其实你也可以不调用它,你可以自己调用stm32f10x_rcc.c中的函数自己来配置,不过这样的话就要记得配置好flash的等待周期,两种方式之间没什么太大区别。另外一般你会需要开启外设的时钟或者其他一些功能就需要调用stm32f10x_rcc.c中的函数。
还有如果你使用的是3.2.0以上的库的话,SystemInit()其实不需要你自己调用,startup_stm32f10x_XX.s中有这样的代码
Reset_Handler
        LDR     R0, =SystemInit
意思就是上电(Reset)后执行的第一段代码就是SystemInit(),这是在main函数之前调用的,所以不需你自己再去调用了
SystemInit()在调用的时候要注意你自己板子上的外部晶振是多少,默认是25MHZ,如果你板子上的晶振的不是这么大的话,你需要修改stm32f10x.h里面的HSE_Value 

补充:system_stm32f10x.c里的函数的功能仅仅是完成系统时钟的配置,如果你不使用任何外设或者用系统时钟做其他用的话是可以不用stm32f10x_rcc.c 
stm32f10x_rcc.c中的函数不仅仅是完成分频倍频的功能,还有开启外设时钟,检测RCC中断,配置RTC时钟等功能,不是单单配置一个系统时钟那么简单

3. stm32的固件库中stm32f10x_it.c 和stm32f10x_rcc.c这两个文件分别是处理什么的 ?什么异同?一定采纳

stm32f10x_it.c是相关外设中断函数文件。

stm32f10x_rcc.c是处理内部时钟相关函数文件。

异同,都是库函数,为用户对方便调用!

stm32的固件库中stm32f10x_it.c 和stm32f10x_rcc.c这两个文件分别是处理什么的 ?什么异同?一定采纳

4. STM32RCC初始化问题

我没有用过STM32的rcc,不过很多库都是这样的,RCC_APB2Periph_GPIOA等这种一般都是宏定义,是一个某一位为1的数字,RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB这样写可以将这两个数字做位或运算,在RCC_APB2PeriphClockCmd函数中应该就是要设置的寄存器对应的位,来开启特定的功能,不知道你的问题是这个意思么~

5. STM32的官方库函数怎么调用?是不是要添加什么头文件?是不是要用添加一个函数包?

添加 #include "stm32f10x.h" 
添加stm32f10x_gpio.c、stm32f10x_usart.c
再按 下图把想要的 文件去掉注释 

STM32的官方库函数怎么调用?是不是要添加什么头文件?是不是要用添加一个函数包?

6. stm32SystemInit()函数和stm32f103_rcc里面的函数都是设定时钟的啊,有什么区别和联系呢请问

系统设置 包括了RCC  RCC设置的这个函数比较底层

7. 在stm32里面时钟配置RCC中 有两句flash的操作,为什么放RCC配置里面,有什么用?

你可以下个固件库手册,这个函数在里面可以搜到。
FLASH_SetLatency(FLASH_Latency_2);----------设置代码延时值(参数里的是指2延时周期)
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);-----使能或者失能预取指缓存(参数里是使能)

在stm32里面时钟配置RCC中 有两句flash的操作,为什么放RCC配置里面,有什么用?

8. STM32初始化时钟函数中最后两句temp=RCC->CFGR>>2; temp&=0x03;怎么理解

temp=RCC->CFGR>>2;
这个的意思是读取RCC->CFGR寄存器的值,然后将其右移2位后再保存在temp变量中。
temp&=0x03;
这个的意思是除了最低两位保留之外,其他位清除。
这两个位(实际就是是RCC->CFGR寄存器的3:2位),名字是SWS[1:0],在参考手册上的解释是:
SWS[1:0]:系统时钟切换状态 (System clock switch status)  由硬件置’1’ 或清’0’ 来指示哪一个时钟源被作为系统时钟。 
00:HSI作为系统时钟; 
01:HSE作为系统时钟; 
10:PLL 输出作为系统时钟; 
11:不可用。
就是说当判断结果为2时,表示PLL输出已经稳定。
最新文章
热门文章
推荐阅读