⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 backlight.txt

📁 STM32手持式示波器源代码
💻 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 + -