STM32
直播中

王婷

7年用户 992经验值
私信 关注
[问答]

stm8l151配不了LSI时钟的原因?怎么解决?

void CLK_Config()
{
        CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
        CLK_SYSCLKSourceSwitchCmd(ENABLE);
        while(!CLK_GetFlagStatus(CLK_FLAG_LSIRDY));
        CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
        while(CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI);
}
哪位大侠教教本菜鸟。。。。。。。


回帖(1)

话多显蠢

2024-5-6 16:59:18
STM8L151 无法配置 LSI 时钟的原因可能有以下几点:

1. LSI 时钟未启用:确保在初始化代码中启用了 LSI 时钟。可以使用 CLK_LSICmd(ENABLE) 函数来启用 LSI 时钟。

2. LSI 时钟未稳定:在切换到 LSI 时钟之前,需要确保 LSI 时钟已经稳定。可以使用 CLK_GetFlagStatus(CLK_FLAG_LSIRDY) 函数来检查 LSI 时钟是否已经稳定。

3. 错误的时钟源切换顺序:在切换到 LSI 时钟之前,需要先切换到 HSI 时钟。可以使用 CLK_SYSCLKSourceSwitchCmd(ENABLE) 函数来启用时钟源切换。

4. 错误的时钟分频配置:在切换到 LSI 时钟之前,需要确保已经正确配置了系统时钟分频。可以使用 CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1) 函数来配置系统时钟分频。

针对上述问题,可以尝试以下解决方案:

1. 确保在 CLK_Config 函数中启用了 LSI 时钟:

```c
void CLK_Config() {
    CLK_LSICmd(ENABLE); // 启用 LSI 时钟
    // ... 其他代码 ...
}
```

2. 在切换到 LSI 时钟之前,确保 LSI 时钟已经稳定:

```c
void CLK_Config() {
    // ... 其他代码 ...
    while (!CLK_GetFlagStatus(CLK_FLAG_LSIRDY)); // 等待 LSI 时钟稳定
    // ... 其他代码 ...
}
```

3. 确保在切换到 LSI 时钟之前,先切换到 HSI 时钟:

```c
void CLK_Config() {
    // ... 其他代码 ...
    CLK_SYSCLKSourceSwitchCmd(ENABLE); // 启用时钟源切换
    while (!CLK_GetFlagStatus(CLK_FLAG_SWBSY)); // 等待时钟源切换完成
    // ... 其他代码 ...
}
```

4. 确保已经正确配置了系统时钟分频:

```c
void CLK_Config() {
    // ... 其他代码 ...
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); // 配置系统时钟分频
    // ... 其他代码 ...
}
```

5. 最后,确保在切换到 LSI 时钟之后,检查当前的系统时钟源是否为 LSI:

```c
void CLK_Config() {
    // ... 其他代码 ...
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI); // 切换到 LSI 时钟
    while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_LSI); // 等待切换完成
    // ... 其他代码 ...
}
```

通过上述修改,应该可以解决 STM8L151 无法配置 LSI 时钟的问题。如果问题仍然存在,请检查硬件连接和电源供应是否正常。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分