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

stm32L驱动段式液晶

[复制链接]
木易-357428 发布时间:2015-1-7 18:15
很多朋友在驱动STM32l段式液晶的时候,代码如下:
4 X+ Q5 a& A: ]" P. vvoid LCD_GLASS_Init(void)
, p. z% K" o( \+ G{
3 h1 D, F8 H1 [5 j* L+ ^* a, W    LCD_InitTypeDef LCD_InitStruct;, l& V1 x" D& o; L: L& A
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_LCD, ENABLE);
, }: l% k# L6 a( k) Y' }% T! n     ! k, T7 F! E: i7 h  {5 y9 T% c: f
    LCD_InitStruct.LCD_Prescaler = LCD_Prescaler_2;
% y( h' V; |4 L+ r4 |    LCD_InitStruct.LCD_Divider = LCD_Divider_16;  E* Z4 I1 ?- _# M: ~
    LCD_InitStruct.LCD_Duty = LCD_Duty_1_8;7 m; x. R* ]3 J; \" r
    LCD_InitStruct.LCD_Bias = LCD_Bias_1_4 ;
7 L: e/ W4 x% C7 c8 @( J8 e    LCD_InitStruct.LCD_VoltageSource = LCD_VoltageSource_Internal;% R+ @& `5 b+ H8 T" D
   
: a2 W1 h. Y+ q3 m6 w     . v. ]' T% l  n. N: [8 o- q4 u- q
    /* Initialize the LCD */
# O2 V3 O; @* ^0 {    LCD_Init(&LCD_InitStruct);
5 Q% _! B# b0 m7 O* ]1 p0 N            
8 r4 M$ k0 X! W2 _    LCD_MuxSegmentCmd(ENABLE);
3 G) z+ D* u1 F2 g6 L      
7 y4 D2 _) d5 i6 k0 y& k5 r- \    /* To set contrast to mean value */
/ ?( R  u8 C9 t7 C5 E2 Z6 z0 C" B% m: f, y    LCD_ContrastConfig(LCD_Contrast_Level_6);8 B; V5 E3 m4 D. s2 B
      8 _  j0 M, R5 \* q9 ^) P, `
    LCD_DeadTimeConfig(LCD_DeadTime_0);8 @; }: r! r- d! f/ Z  A
    LCD_PulseOnDurationConfig(LCD_PulseOnDuration_4);
; s9 A7 ]7 F  O1 b; v# \; L   
, c$ s2 t* }/ l    /* Wait Until the LCD FCR register is synchronized */
6 k  `0 w+ v- B9 a( ^; g    LCD_WaitForSynchro();- j2 b- G! F( s8 v+ m
      
9 ~7 R2 b" u  I$ l$ @& a8 R6 z, b    /* Enable LCD peripheral */, a4 m* `& z) R& h4 f& N7 X
    LCD_Cmd(ENABLE);' P, H) ]& [/ ^! {5 Q
      
( J! o, i8 _# @    /* Wait Until the LCD is enabled */9 x0 ^6 o7 x+ X
    while(LCD_GetFlagStatus(LCD_FLAG_ENS) == RESET)$ t9 b9 \+ D( Z. n# L( V% @
    {
, X2 d. M" N! a% d( s    }
% n/ o+ F3 r! \2 @5 Q    /*!< Wait Until the LCD Booster is ready */  7 C  }2 i( w7 D% f: k9 s
    while(LCD_GetFlagStatus(LCD_FLAG_RDY) == RESET)
& s2 N' m) R1 q) ]6 `8 J    {
2 e; N) `4 `- C. d' Y  ^: p2 K    }
. l6 E6 t7 w1 @  H2 u    4 p6 S* `' F+ E9 P* R  k% K# d1 N7 ^
    LCD_BlinkConfig(LCD_BlinkMode_Off,LCD_BlinkFrequency_Div1024);   
. K" E8 U9 l8 l6 `4 d6 e5 [    LCD_GLASS_Clear();
) X, l! ]: {2 Z( v}
/ D: T# O2 O2 Y; P! |# Z
4 j6 l8 V5 f% M+ r3 ~3 l& k& J, B7 p3 i, I0 G9 t
详细的解释我就不说了,大家常遇到的问题是程序执行到这句的时候“   while(LCD_GetFlagStatus(LCD_FLAG_ENS) == RESET)  ”无法过去,而死在这。我在做这个项目的时候,也有很多同事遇到了这种情况,所以在这里分享一下问题的原因。
& E/ U: S! D1 S首先说一下,这样配置段式液晶没有问题,但是,要知道段式液晶的时钟是来源于何处。STM32L上datasheet有说明,LCD段式液晶的时钟来源于RTC,也就是说,想使用段式液晶,必须先配置好RTC时钟。希望可以帮到遇到这个问题的朋友们。. L" ]1 \* _5 A) I5 }7 |

& b% H+ r# F9 A/ p
赞 收藏 评论1 发布时间:2015-1-7 18:15

举报

1个回答
默罕默德.ST 回答时间:2015-1-7 19:11:21
代码  看起来有点晕
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版