使用HSE配置系统时钟
因为STM工程使用固件库,进入main函数时都已配置好时钟,所以我们自己编写时钟配置文件首先需要复位RCC寄存器!
使能HSE
判断HSE是否启动成功
使能预取指
设置FLASH等待周期
配置3条总线的倍频因子
配置锁相环,使能锁相环
等待锁相环稳定
选择锁相环输出为系统时钟,并等待其稳定
void HSE_sysclock_config( uint32_t RCC_PLLMul_x )
{
//先复位RCC寄存器
RCC_DeInit();
/*使用HSE配置系统时钟*/
//使能HSE
RCC_HSEConfig( RCC_HSE_ON );
//检测HSE是否启动成功
if ( SUCCESS == RCC_WaitForHSEStartUp() )
{
//使能预取指,这是FLASH固件中的函数
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//设置FLASH等待周期。 因为倍频成72M 所以等待两个周期。
FLASH_SetLatency(FLASH_Latency_2);
//配置三个总线的倍频因子
//HCLK --> AHB 最大为72M,所以只需要1分频
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//PCLK1 --> APB1 最大为36M,所以要2分频
RCC_PCLK1Config(RCC_HCLK_Div2);
//PCLK2 --> APB2 最大为72M,所以只需要1分频
RCC_PCLK2Config(RCC_HCLK_Div1);
//先配置锁相环 PLLCLK = HSE * 倍频因子
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_x);
//使能PLL
RCC_PLLCmd(ENABLE);
//等待PLL稳定
while ( RESET == RCC_GetFlagStatus(RCC_FLAG_PLLRDY) );
//选择系统时钟(选择锁相环输出)
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//等待选择稳定
while ( 0x08 != RCC_GetSYSCLKSource() );
}
else
{
//HSE启动失败,用户自己编写补救措施
}
}
使用HSI配置系统时钟
因为STM工程使用固件库,进入main函数时都已配置好时钟,所以我们自己编写时钟配置文件首先需要复位RCC寄存器!
使能HSI
判断HSI是否启动成功
使能预取指
设置FLASH等待周期
配置3条总线的倍频因子
配置锁相环,使能锁相环
等待锁相环稳定
选择锁相环输出为系统时钟,并等待其稳定
void HSI_sysclock_config( uint32_t RCC_PLLMul_x )
{
__IO uint32_t HSIStatus = 0;
//先复位RCC寄存器
RCC_DeInit();
/*使用HSI配置系统时钟*/
//使能HSI
RCC_HSICmd(ENABLE);
//检测HSE是否启动成功
HSIStatus = RCC->CR & RCC_CR_HSIRDY;
if ( RCC_CR_HSIRDY == HSIStatus )
{
//使能预取指,这是FLASH固件中的函数
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//设置FLASH等待周期。 因为倍频成72M 所以等待两个周期。
FLASH_SetLatency(FLASH_Latency_2);
//配置三个总线的倍频因子
//HCLK --> AHB 最大为72M,所以只需要1分频
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//PCLK1 --> APB1 最大为36M,所以要2分频
RCC_PCLK1Config(RCC_HCLK_Div2);
//PCLK2 --> APB2 最大为72M,所以只需要1分频
RCC_PCLK2Config(RCC_HCLK_Div1);
//先配置锁相环 PLLCLK = HSE * 倍频因子
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_x);
//使能PLL
RCC_PLLCmd(ENABLE);
//等待PLL稳定
while ( RESET == RCC_GetFlagStatus(RCC_FLAG_PLLRDY) );
//选择系统时钟(选择锁相环输出)
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//等待选择稳定
while ( 0x08 != RCC_GetSYSCLKSource() );
}
else
{
//HSI启动失败,用户自己编写补救措施
}
}
上一篇:STM32—RCC时钟
下一篇:STM32 RTC 读写不正确
推荐阅读
史海拾趣
为了进一步拓展市场,Carlo Gavazzi公司开始实施国际化战略。公司先后在多个国家和地区设立销售和服务团队,将产品和服务推向全球市场。这一过程中,公司不仅面临着文化差异和市场环境的挑战,也积极寻求与当地企业的合作与共赢。通过不断努力,公司逐渐在全球范围内建立起自己的品牌形象和市场地位。
Davies Molding公司深知,人才是企业发展的核心动力。因此,公司高度重视团队建设与人才培养。通过建立完善的培训体系,Davies Molding公司不断提升员工的技能和素质,打造了一支高素质、专业化的团队。这支团队不仅为公司的发展提供了有力保障,还为行业的进步做出了积极贡献。
随着全球对环境保护意识的增强,G-Mag在2010年决定实施绿色转型战略。公司投入大量资源研发环保型电子产品和制造工艺,如开发可降解材料用于产品包装、优化生产线以减少能源消耗和废弃物排放等。同时,G-Mag还积极推广循环经济理念,与上下游企业合作建立废旧电子产品回收体系。这些举措不仅提升了G-Mag的品牌形象,还为其赢得了更多消费者的青睐和政府的支持。在绿色转型的推动下,G-Mag实现了可持续发展与经济效益的双赢。
Fanstel公司深知人才是企业发展的关键因素。因此,公司一直注重人才的培养和引进。公司建立了完善的人才培养机制,为员工提供各种培训和学习机会,帮助他们提升自身素质和能力。同时,Fanstel还积极引进高端人才,打造了一支具有丰富经验和专业技能的研发团队。这些人才的加入为公司的技术创新和产品研发提供了有力支持。
在市场竞争日益激烈的情况下,Fanstel公司意识到市场拓展的重要性。公司制定了一套精准的市场营销策略,针对不同行业和地区的客户需求,推出了定制化的产品和解决方案。同时,Fanstel还积极开拓国际市场,通过参加国际展会、建立海外销售网络等方式,成功将产品打入全球市场。这些举措不仅提升了公司的知名度,也大大增加了公司的销售额。
Antelec公司创立于XXXX年,由一群富有远见和热情的电子工程师组成。创立初期,公司专注于研发先进的电子测量与分析技术,成功开发出一种具有高精度和稳定性的测量仪器,填补了市场上的空白。这一技术突破不仅赢得了客户的青睐,也为公司的后续发展奠定了坚实的基础。
|
用单片机一个口接一个光耦TLP521,然后光耦接三极管,三极管驱动继电器,继电器和光耦的右端都是一个电源,单片机和光耦的左端是一个电源。 问题1:这样的设计对提高系统稳定性有效果么 问题2:其中光耦是不是多此一举,可以去掉呢 这里ZC0是接 ...… 查看全部问答∨ |
目前手头有个项目使用omap3530做了一个显示器,采用wince系统,使用的是广州英码的核心板,本来厂家给定制内核但是不知为什么系统总是不稳定,现在想找一个熟悉wince的高手(要求人在北京)帮忙搞清楚什么原因,或者重新裁剪一下bsp,系统功能很简 ...… 查看全部问答∨ |
|
哪位在Linux下有做过camera的驱动开放,请进来指点一下! 我是用开源的Moto 代码做的,始终会出现这个问题,I2C-CAMERA in fun:i2c_ov9640_read i2c write error code =-121,请帮忙分析一下是什么原因!… 查看全部问答∨ |
目前使用的电压型变频器,当所带电动机减速制动时,电动机进入发电制动状态,其能量通过逆变电路中的反馈二极管流入整流回路输出的直流中间回路,使直流电压升高产生过电压(泵升电压),而导致器件击穿。为了限制泵升电压,在直流侧电容两端并接功 ...… 查看全部问答∨ |
|
输入能够承受比较大的电流,输入电压大概是在90V以上,要求能够降压到12V(加上滤波电容后这个电压用来作为电源) 我查到了好几本书,都没有发发现合适的集成芯片。… 查看全部问答∨ |
|
|
一、绑定(Binding)绑定是一种控制两个或者多个设备应用层之间信息流传递的机制。在ZigBee2006发布版本中,它被称为源绑定,所有的设备都可以执行绑定机制。绑定允许应用程序发送一个数据包而不需要知道目标设备的短地址(此时将目标设备的短地址设 ...… 查看全部问答∨ |
一个自学的菜鸟,在程序中加入了controlsuit里面sample的一些片段(前面的设置没有列出来) GPIO_setPullUp(myGpio, GPIO_Number_6, GPIO_PullUp_Enable); GPIO_setHigh(myGpio, GPIO_Number_6); GPIO_ ...… 查看全部问答∨ |



381LX271M315J032






京公网安备 11010802033920号