STM32
直播中

王波

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

stm8l低功耗运行模式关闭电压调节器lcd屏不显示怎么解决?

请教stm8l 低功耗运行模式,我的代码如下:
void main(void)
{
        AllGpioRPPLowOut();        //配置IO为推免输出低电平
        HSItoLSI();
        PWR- gt;CSR2 = 0x2;
        LCD_GLASS_Init();
//        CLK- gt;REGCSR = 0x02;        // Swith off the Regulator
//        while(((CLK- gt;REGCSR) amp;0x01)==0x01);
        while(1) LCD_GLASS_ScrollSentence( quot;      ** STM8L-DISCOVERY ** quot;,1,SCROLL_SPEED);
}
上面代码电流为100uA,LCD屏能正常显示;
如果去掉注释,也就是说关闭电压调节器,电流为10uA左右,可是此时LCD屏不显示,请问这是怎么回事?怎么解决啊?
为什么一关闭电压调节器就不显示了?
上面两个函数LCD_GLASS_Init和LCD_GLASS_ScrollSentence
都是stm8L-discover评估板程序的函数,没做改动。[/td]
以下内容为评论
[td]回复第 2 楼 于2014-08-21 08:43:18发表:
没遇到过这样的问题,难道是电流小了驱动不了?

不是吧,一般LCD屏耗电都是几uA,所以做低功耗显示数字的时候都用LCD而不是LED,网上的大部分教程实验什么的都是基于LED数码管的,关于LCD的很少,这里可以肯定不是因为电流小驱动不了的原因。这个程序可以直接在官方的stm8l-discover的评估板上跑的。到现在还没找到原因啊。

回帖(1)

京五环以外

2024-5-17 18:10:31
从您提供的代码片段来看,您正在尝试在STM8L微控制器上实现低功耗运行模式,并关闭电压调节器。同时,您希望LCD屏幕能够正常显示。为了解决这个问题,我们需要分析以下几个方面:

1. 确保LCD初始化正确:首先,确保您的LCD初始化函数(LCD_GLASS_Init())正确配置了LCD的时钟、端口和其他相关参数。这将确保LCD在低功耗模式下仍然可以正常工作。

2. 检查电源管理设置:在STM8L微控制器中,PWR模块负责管理电源。您需要确保在进入低功耗模式之前,正确设置了PWR模块的寄存器。例如,PWR_CSR2寄存器用于设置电源模式,您需要确保将其设置为适当的值。

3. 关闭电压调节器:在STM8L微控制器中,电压调节器可以在低功耗模式下关闭以节省能量。要关闭电压调节器,您需要设置PWR_CSR1寄存器中的VREFOUTEN位。但是,请注意,关闭电压调节器可能会影响其他外设的性能。

4. 选择合适的低功耗模式:STM8L微控制器提供了多种低功耗模式,如待机模式、掉电模式等。您需要根据您的应用需求选择合适的低功耗模式。例如,如果您需要在低功耗模式下仍然能够显示LCD内容,您可能需要选择待机模式。

5. 确保唤醒过程正确:在低功耗模式下,您需要确保在唤醒微控制器时,正确地恢复了所有外设的配置。这包括恢复LCD的配置、时钟设置等。

综上所述,要解决STM8L低功耗运行模式下LCD屏幕不显示的问题,您需要确保:

- 正确初始化LCD
- 正确设置PWR模块的寄存器
- 选择合适的低功耗模式
- 在唤醒过程中正确恢复外设配置

以下是一些建议的代码更改:

```c
void main(void)
{
    AllGpioRPPLowOut(); // 配置IO为推免输出低电平
    HSItoLSI(); // 切换到低速内部时钟
    PWR->CSR2 = 0x2; // 设置电源模式
    LCD_GLASS_Init(); // 初始化LCD

    // 关闭电压调节器(根据需要)
    PWR->CSR1 |= PWR_CSR1_VREFOUTEN;

    // 进入低功耗模式(根据需要选择合适的模式)
    // ...

    // 唤醒过程(在唤醒中断中执行)
    // ...
}
```

请注意,您需要根据您的具体需求和硬件配置来调整上述代码。希望这些建议能帮助您解决问题。
举报

更多回帖

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