你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G070RB HSI 时钟配置失败

[复制链接]
xiaoyan 提问时间:2023-2-21 11:12 / 未解决

我们产品有3个模式,正常工作模式(48MHZ HSI),休眠模式(8MHZ HSI),省电模式(48MHZ HSI)

1, 上电默认会将产品配置到正常工作模式,但是当系统从省电模式恢复到正常工作模式时,系统会死机。(注:当我们MASK下面的时钟初始化代码就不会有这个问题。而且不是所有的机子都会出现)

2, 可是在休眠模式恢复到正常工作模式时,就不会死机。是运行同一段代码。

时钟初始化代码为:

LL_RCC_DeInit();

LL_FLASH_SetLatency(LL_FLASH_LATENCY_0);

/ LSI configuration and activation /

if(0 == LL_RCC_LSI_IsReady())

{

LL_RCC_LSI_Enable();

while(0 == LL_RCC_LSI_IsReady()); }

s_eClockFreq = eClock;

LL_UTILS_PLLInitTypeDef stPllConf = {LL_RCC_PLLM_DIV_1, 1, LL_RCC_PLLR_DIV_2};

LL_UTILS_ClkInitTypeDef stClkConf = {LL_RCC_SYSCLK_DIV_1, LL_RCC_APB1_DIV_1};

/ Main PLL configuration and activation /

switch(eClock)

{

case E_CLOCK_FREQ_48MHZ:

// 16 * 12 / 2 / 2 = 48M

stPllConf = {LL_RCC_PLLM_DIV_2, 12, LL_RCC_PLLR_DIV_2};

stClkConf = {LL_RCC_SYSCLK_DIV_1, LL_RCC_APB1_DIV_1};

LL_PLL_ConfigSystemClock_HSI(&stPllConf,&stClkConf);

break;

case E_CLOCK_FREQ_32MHZ:

// 16 * 8 / 2 = 64M

stPllConf = {LL_RCC_PLLM_DIV_1, 8, LL_RCC_PLLR_DIV_2};

// 64 / 2 = 32M

stClkConf = {LL_RCC_SYSCLK_DIV_2, LL_RCC_APB1_DIV_1};

LL_PLL_ConfigSystemClock_HSI(&stPllConf,&stClkConf);

break;

case E_CLOCK_FREQ_24MHZ:

// 16 * 12 / 2 / 2 = 48M

stPllConf = {LL_RCC_PLLM_DIV_2, 12, LL_RCC_PLLR_DIV_2};

// 48 / 2 = 24M

stClkConf = {LL_RCC_SYSCLK_DIV_2, LL_RCC_APB1_DIV_1};

LL_PLL_ConfigSystemClock_HSI(&stPllConf,&stClkConf);

break;

case E_CLOCK_FREQ_16MHZ:

// default is HSI

break;

case E_CLOCK_FREQ_4MHZ:

LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_4);

break;

case E_CLOCK_FREQ_8MHZ:

default:

LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_2);

break;

}

// update system clock frequency

SystemCoreClockUpdate();

LL_RCC_GetSystemClocksFreq(&s_stSystemClocks);

// system tick configure

LL_SYSTICK_SetClkSource(LL_SYSTICK_CLKSOURCE_HCLK);

SysTick_Config((s_stSystemClocks.HCLK_Frequency / 1000));

// Enable used peripheral clock

Drv_Clk_EnableUsedPeripheralsClock();

收藏 评论2 发布时间:2023-2-21 11:12

举报

2个回答
butterflyspring 回答时间:2023-2-21 11:33:34
看起来等待周期不合适,按照手册上介绍,配置少了。 stm32g0 latnecy.png



xiaoyan 回答时间:2023-2-21 14:41:30

是的,改成2个等待周期,解决了这个问题。非常感谢!请教一下LL_RCC_DeInit(); 不是相当于把时钟复位到16MHZ吗?

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版