1 | // ***********************************************************************
|
2 | // PWM Initialisierung LCD- und TFT-Hintergrundbeleuchtung
|
3 | // Timer 3, Kanal 3 (TFT), Kanal 4 (LCD)
|
4 | // Signal: TFTLED, LCDLED
|
5 | // ***********************************************************************
|
6 | void init_pwm_tftlcd (void) {
|
7 | #define TIMER_TAKT3 1000000 /* Timer wird mit 1MHz getaktet */
|
8 | TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
|
9 | TIM_OCInitTypeDef TIM_OCInitStructure;
|
10 | uint16_t PrescalerValue;
|
11 |
|
12 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // TIMER 3 Takt freigeben
|
13 | PrescalerValue = (uint16_t) (SystemCoreClock / TIMER_TAKT3) - 1; // Vorteiler berechnen
|
14 |
|
15 | // Timer Grundkonfiguration
|
16 | TIM_TimeBaseStructure.TIM_Period = 1000; // Timer zählt von 0 .. 1000 entspricht 1kHz PWM-Grundfrequenz
|
17 | TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
|
18 | TIM_TimeBaseStructure.TIM_ClockDivision = 0;
|
19 | TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // Zählrichtung (hoch)
|
20 | TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // Timer einstellen
|
21 |
|
22 | // PWM1 Mode Configuration: Kanal 3 PB0=TFTLED
|
23 | TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
|
24 | TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
25 | TIM_OCInitStructure.TIM_Pulse = 0; // Dutty-Cycle:
|
26 | TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
27 | TIM_OC3Init(TIM3, &TIM_OCInitStructure);
|
28 | TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
|
29 |
|
30 | // PWM1 Mode Configuration: Kanal 4 PB1=LCDLED
|
31 | TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
|
32 | TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
33 | TIM_OCInitStructure.TIM_Pulse = 0; // Dutty-Cycle:
|
34 | TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
35 | TIM_OC4Init(TIM3, &TIM_OCInitStructure);
|
36 | TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
|
37 |
|
38 | TIM_ARRPreloadConfig(TIM3, ENABLE);
|
39 | TIM_Cmd(TIM3, ENABLE);
|
40 | }
|
41 |
|
42 | ...
|
43 |
|
44 | // ***********************************************************************
|
45 | // TFT/LCD Hintergrundbeleuchtung - Helligkeit einstellen
|
46 | // Übergabe: anzeige: 0=TFT, 1=LCD
|
47 | // helligkeit: 0 ... 1000 (0=Aus, 500=50%, 1000=Max.)
|
48 | // ***********************************************************************
|
49 | void set_hgbl (uint8_t anzeige, uint16_t helligkeit) {
|
50 | TIM_OCInitTypeDef TIM_OCInitStructure;
|
51 |
|
52 | TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
|
53 | TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
54 | TIM_OCInitStructure.TIM_Pulse = helligkeit;
|
55 | TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
56 |
|
57 | if (anzeige) {
|
58 | // TFT Hintergrundbeleuchtung
|
59 | TIM_OC3Init(TIM3, &TIM_OCInitStructure);
|
60 | } else {
|
61 | // LCD Hintergrundbeleuchtung
|
62 | TIM_OC4Init(TIM3, &TIM_OCInitStructure);
|
63 | }
|
64 | }
|