📄 backlight.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\backlight.o --depend=.\Obj\backlight.d --device=DARMSTM --apcs=interwork -O0 -Otime -I..\..\Libraries\CMSIS\Core\CM3 -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Source\inc -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER ..\..\Source\src\BackLight.c]
THUMB
AREA ||i.GetBackLight||, CODE, READONLY, ALIGN=2
GetBackLight PROC
;;;131 */
;;;132 uint8_t GetBackLight(void)
000000 4801 LDR r0,|L1.8|
;;;133 {
;;;134 return s_Bright;
000002 7800 LDRB r0,[r0,#0] ; s_Bright
;;;135 }
000004 4770 BX lr
ENDP
000006 0000 DCW 0x0000
|L1.8|
DCD ||.data||
AREA ||i.SetBackLight||, CODE, READONLY, ALIGN=2
SetBackLight PROC
;;;32 */
;;;33 void SetBackLight(uint8_t _bright)
000000 b510 PUSH {r4,lr}
;;;34 {
000002 b088 SUB sp,sp,#0x20
000004 4604 MOV r4,r0
;;;35 GPIO_InitTypeDef GPIO_InitStructure;
;;;36 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
;;;37 TIM_OCInitTypeDef TIM_OCInitStructure;
;;;38
;;;39 s_Bright = _bright;
000006 483a LDR r0,|L2.240|
000008 7004 STRB r4,[r0,#0]
;;;40
;;;41 /* 第1步:打开GPIOB RCC_APB2Periph_AFIO 的时钟 */
;;;42 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
00000a 2101 MOVS r1,#1
00000c 2009 MOVS r0,#9
00000e f7fffffe BL RCC_APB2PeriphClockCmd
;;;43
;;;44 if (_bright == 0)
000012 b994 CBNZ r4,|L2.58|
;;;45 {
;;;46 /* 配置背光GPIO为输入模式 */
;;;47 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
000014 2002 MOVS r0,#2
000016 f8ad001c STRH r0,[sp,#0x1c]
;;;48 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
00001a 2004 MOVS r0,#4
00001c f88d001f STRB r0,[sp,#0x1f]
;;;49 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000020 2003 MOVS r0,#3
000022 f88d001e STRB r0,[sp,#0x1e]
;;;50 GPIO_Init(GPIOB, &GPIO_InitStructure);
000026 a907 ADD r1,sp,#0x1c
000028 4832 LDR r0,|L2.244|
00002a f7fffffe BL GPIO_Init
;;;51
;;;52 /* 关闭TIM3 */
;;;53 TIM_Cmd(TIM3, DISABLE);
00002e 2100 MOVS r1,#0
000030 4831 LDR r0,|L2.248|
000032 f7fffffe BL TIM_Cmd
|L2.54|
;;;54 return;
;;;55 }
;;;56 else if (_bright == BRIGHT_MAX) /* 最大亮度 */
;;;57 {
;;;58 /* 配置背光GPIO为推挽输出模式 */
;;;59 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
;;;60 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
;;;61 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
;;;62 GPIO_Init(GPIOB, &GPIO_InitStructure);
;;;63
;;;64 GPIO_SetBits(GPIOB, GPIO_Pin_1);
;;;65
;;;66 /* 关闭TIM3 */
;;;67 TIM_Cmd(TIM3, DISABLE);
;;;68 return;
;;;69 }
;;;70
;;;71 /* 配置背光GPIO为复用推挽输出模式 */
;;;72 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
;;;73 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
;;;74 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
;;;75 GPIO_Init(GPIOB, &GPIO_InitStructure);
;;;76
;;;77 /* 使能TIM3的时钟 */
;;;78 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
;;;79
;;;80 /* -----------------------------------------------------------------------
;;;81
;;;82 TIM3 ARR Register = 1894 => TIM3 Frequency = TIM3 counter clock/(ARR + 1)
;;;83 TIM3 Frequency = 37.99 KHz (接近38KHz 红外发射管的调制基频)
;;;84 TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 = 50%
;;;85 ----------------------------------------------------------------------- */
;;;86
;;;87 /*
;;;88 TIM3 配置: 产生1路PWM信号;
;;;89 TIM3CLK = 72 MHz, Prescaler = 0(不分频), TIM3 counter clock = 72 MHz
;;;90 计算公式:
;;;91 PWM输出频率 = TIM3 counter clock /(ARR + 1)
;;;92
;;;93 我们期望设置为100Hz
;;;94
;;;95 如果不对TIM3CLK预分频,那么不可能得到100Hz低频。
;;;96 我们设置分频比 = 1000, 那么 TIM3 counter clock = 72KHz
;;;97 TIM_Period = 720 - 1;
;;;98 频率下不来。
;;;99 */
;;;100 TIM_TimeBaseStructure.TIM_Period = 720 - 1; /* TIM_Period = TIM3 ARR Register */
;;;101 TIM_TimeBaseStructure.TIM_Prescaler = 0;
;;;102 TIM_TimeBaseStructure.TIM_ClockDivision = 0;
;;;103 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
;;;104
;;;105 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
;;;106
;;;107 /* PWM1 Mode configuration: Channel1 */
;;;108 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
;;;109 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
;;;110 /*
;;;111 _bright = 1 时, TIM_Pulse = 1
;;;112 _bright = 255 时, TIM_Pulse = TIM_Period
;;;113 */
;;;114 TIM_OCInitStructure.TIM_Pulse = (TIM_TimeBaseStructure.TIM_Period * _bright) / BRIGHT_MAX; /* 改变占空比 */
;;;115
;;;116 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
;;;117 TIM_OC4Init(TIM3, &TIM_OCInitStructure);
;;;118 TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
;;;119
;;;120 TIM_ARRPreloadConfig(TIM3, ENABLE);
;;;121
;;;122 /* TIM3 enable counter */
;;;123 TIM_Cmd(TIM3, ENABLE);
;;;124 }
000036 b008 ADD sp,sp,#0x20
000038 bd10 POP {r4,pc}
|L2.58|
00003a 2cff CMP r4,#0xff ;56
00003c d115 BNE |L2.106|
00003e 2002 MOVS r0,#2 ;59
000040 f8ad001c STRH r0,[sp,#0x1c] ;59
000044 2010 MOVS r0,#0x10 ;60
000046 f88d001f STRB r0,[sp,#0x1f] ;60
00004a 2003 MOVS r0,#3 ;61
00004c f88d001e STRB r0,[sp,#0x1e] ;61
000050 a907 ADD r1,sp,#0x1c ;62
000052 4828 LDR r0,|L2.244|
000054 f7fffffe BL GPIO_Init
000058 2102 MOVS r1,#2 ;64
00005a 4826 LDR r0,|L2.244|
00005c f7fffffe BL GPIO_SetBits
000060 2100 MOVS r1,#0 ;67
000062 4825 LDR r0,|L2.248|
000064 f7fffffe BL TIM_Cmd
000068 e7e5 B |L2.54|
|L2.106|
00006a 2002 MOVS r0,#2 ;72
00006c f8ad001c STRH r0,[sp,#0x1c] ;72
000070 2018 MOVS r0,#0x18 ;73
000072 f88d001f STRB r0,[sp,#0x1f] ;73
000076 2003 MOVS r0,#3 ;74
000078 f88d001e STRB r0,[sp,#0x1e] ;74
00007c a907 ADD r1,sp,#0x1c ;75
00007e 481d LDR r0,|L2.244|
000080 f7fffffe BL GPIO_Init
000084 2101 MOVS r1,#1 ;78
000086 2002 MOVS r0,#2 ;78
000088 f7fffffe BL RCC_APB1PeriphClockCmd
00008c f24020cf MOV r0,#0x2cf ;100
000090 f8ad0014 STRH r0,[sp,#0x14] ;100
000094 2000 MOVS r0,#0 ;101
000096 f8ad0010 STRH r0,[sp,#0x10] ;101
00009a f8ad0016 STRH r0,[sp,#0x16] ;102
00009e f8ad0012 STRH r0,[sp,#0x12] ;103
0000a2 a904 ADD r1,sp,#0x10 ;105
0000a4 4814 LDR r0,|L2.248|
0000a6 f7fffffe BL TIM_TimeBaseInit
0000aa 2060 MOVS r0,#0x60 ;108
0000ac f8ad0000 STRH r0,[sp,#0] ;108
0000b0 2001 MOVS r0,#1 ;109
0000b2 f8ad0002 STRH r0,[sp,#2] ;109
0000b6 f8bd0014 LDRH r0,[sp,#0x14] ;114
0000ba 4360 MULS r0,r4,r0 ;114
0000bc 21ff MOVS r1,#0xff ;114
0000be fb90f0f1 SDIV r0,r0,r1 ;114
0000c2 b280 UXTH r0,r0 ;114
0000c4 f8ad0006 STRH r0,[sp,#6] ;114
0000c8 2000 MOVS r0,#0 ;116
0000ca f8ad0008 STRH r0,[sp,#8] ;116
0000ce 4669 MOV r1,sp ;117
0000d0 4809 LDR r0,|L2.248|
0000d2 f7fffffe BL TIM_OC4Init
0000d6 2108 MOVS r1,#8 ;118
0000d8 4807 LDR r0,|L2.248|
0000da f7fffffe BL TIM_OC4PreloadConfig
0000de 2101 MOVS r1,#1 ;120
0000e0 4805 LDR r0,|L2.248|
0000e2 f7fffffe BL TIM_ARRPreloadConfig
0000e6 2101 MOVS r1,#1 ;123
0000e8 4803 LDR r0,|L2.248|
0000ea f7fffffe BL TIM_Cmd
0000ee e7a2 B |L2.54|
;;;125
ENDP
|L2.240|
DCD ||.data||
|L2.244|
DCD 0x40010c00
|L2.248|
DCD 0x40000400
AREA ||.data||, DATA, ALIGN=0
s_Bright
000000 00 DCB 0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -