关于系统时钟初始化函数“void Stm32_Clock_Init(u8 PLL)
来源:互联网 发布:mac客户端网游 编辑:程序博客网 时间:2024/06/06 16:34
void Stm32_Clock_Init(u8 PLL)
{
unsigned char temp=0;
MYRCC_DeInit();//问题1:这个初始化函数有什么用?STM32上电自动复位吗?在led交替闪烁程序里我把这句注释掉也是可行的
RCC->CR|=0x00010000;
while(!(RCC->CR>>17));
RCC->CFGR=0X00000400;
PLL-=2;
RCC->CFGR|=PLL<<18;
RCC->CFGR|=1<<16;
FLASH->ACR|=0x32;//问题2:这个是怎么实现延时2个周期的?
RCC->CR|=0x01000000;
while(!(RCC->CR>>25));
RCC->CFGR|=0x00000002;
while(temp!=0x02)
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
}
其中:
void MYRCC_DeInit(void)
{
RCC->APB1RSTR = 0x00000000;
RCC->APB2RSTR = 0x00000000; //问题3:这两句写1跟写0有什么区别?写0无作用,写1复位外设。我们用IO口时不是应该复位端口吗?怎么还是置0?
RCC->AHBENR = 0x00000014;
RCC->APB2ENR = 0x00000000;
RCC->APB1ENR = 0x00000000;
//RCC->CR |= 0x00000001; //问题4:这句可以注释掉吧?我是这样想的:STM32上电后内部时钟工作,开始执行第一条代码,在外部时钟未工作之前都是内部时钟在起作用,等PLL作为系统时钟设置成功后,也就是“void Stm32_Clock_Init(u8 PLL);”函数里的这个循环
while(temp!=0x02)
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
成功后切换到外部时钟,这样对吗?
成功后切换到外部时钟,这样对吗?
RCC->CFGR &= 0xF8FF0000;
RCC->CR &= 0xFEF6FFFF;
RCC->CR &= 0xFFFBFFFF;
RCC->CFGR &= 0xFF80FFFF;
RCC->CIR = 0x00000000;
#ifdef VECT_TAB_RAM
MY_NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x1000);
#else
MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
#endif
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1,这个就是复位一些外设,不加影响也不大,因为你按复位键,就会对这些外设寄存器进行复位的。
2,这个硬件设计好了的,至于为什么,你得问ST设计芯片的人了。
3,这里是复位结束,其实在前面应该加多2句,设置为1,的比较好点。
4,是可以去掉。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1,这个就是复位一些外设,不加影响也不大,因为你按复位键,就会对这些外设寄存器进行复位的。
2,这个硬件设计好了的,至于为什么,你得问ST设计芯片的人了。
3,这里是复位结束,其实在前面应该加多2句,设置为1,的比较好点。
4,是可以去掉。
0 0
- 关于系统时钟初始化函数“void Stm32_Clock_Init(u8 PLL)
- 关于DSP的时钟以及PLL问题
- 关于DSP的时钟以及PLL问题
- TMS320F28335时钟(1) -----PLL倍频器的初始化详解
- S3C6410系统时钟初始化
- 系统时钟的初始化
- AM335x关于LCD屏幕的时钟PLL配置
- 菜鸟stm32学习笔记(1)系统时钟初始化函数
- 4(1)、uboot中系统时钟初始化函数:system_clock_init
- DSP28335时钟PLL
- 关于static void 函数
- STM32 SYSTick系统时钟初始化
- 中颖系统时钟初始化
- OK6410系统时钟初始化详解
- 系统时钟初始化函数与延时函数的实现(李想-第三讲)
- 【程序】STM32L476RG单片机用寄存器通过PLL将MSI时钟倍频到72MHz并设为系统时钟
- U8 系统篇
- STM32值系统时钟初始化程序设计
- iOS计算textField的光标偏移量
- Xcode6内置环境变量(Build Setting Macros)
- Spring framework
- C++ 顺序表的基本操作
- iOS动画——Layer Animations
- 关于系统时钟初始化函数“void Stm32_Clock_Init(u8 PLL)
- js时间格式
- js 与或运算符 || && 妙用
- inux下解压命令大全
- cocos2dx使用第三方字库.ttf,需要注意的事项
- new String() 和 String 的区别
- Java ClassLoader
- JAVA中StringBuffer类常用方法详解
- c标签