1674 lines
63 KiB
Plaintext
1674 lines
63 KiB
Plaintext
; generated by Component: ARM Compiler 5.06 update 7 (build 960) Tool: ArmCC [4d365d]
|
||
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\flash\obj\main.o --asm_dir=.\Flash\List\ --list_dir=.\Flash\List\ --depend=.\flash\obj\main.d --cpu=Cortex-M3 --apcs=interwork -O0 --diag_suppress=9931,870 -I..\..\Libraries\CMSIS\Device\ST\STM32F10x\Include -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Libraries\STM32_USB-FS-Device_Driver\inc -I..\..\Libraries\CMSIS\Include -I..\..\User\bsp -I..\..\User\bsp\inc -I..\..\User\app\inc -I..\..\User -IC:\Users\w1619\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__MICROLIB -D__UVISION_VERSION=538 -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -DSTM32F10X_HD --omf_browse=.\flash\obj\main.crf ..\..\User\app\src\main.c]
|
||
THUMB
|
||
|
||
AREA ||i.Adc_Init||, CODE, READONLY, ALIGN=2
|
||
|
||
Adc_Init PROC
|
||
;;;53 // 我们默认将开启通道0~3
|
||
;;;54 void Adc_Init(void)
|
||
000000 b500 PUSH {lr}
|
||
;;;55 {
|
||
000002 b087 SUB sp,sp,#0x1c
|
||
;;;56 ADC_InitTypeDef ADC_InitStructure;
|
||
;;;57 GPIO_InitTypeDef GPIO_InitStructure;
|
||
;;;58
|
||
;;;59 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE); // 使能ADC1通道时钟
|
||
000004 2101 MOVS r1,#1
|
||
000006 f44f7001 MOV r0,#0x204
|
||
00000a f7fffffe BL RCC_APB2PeriphClockCmd
|
||
;;;60
|
||
;;;61 RCC_ADCCLKConfig(RCC_PCLK2_Div6); // 设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M
|
||
00000e f44f4000 MOV r0,#0x8000
|
||
000012 f7fffffe BL RCC_ADCCLKConfig
|
||
;;;62
|
||
;;;63 // PA1 作为模拟通道输入引脚
|
||
;;;64 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
|
||
000016 2006 MOVS r0,#6
|
||
000018 f8ad0004 STRH r0,[sp,#4]
|
||
;;;65 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; // 模拟输入引脚
|
||
00001c 2000 MOVS r0,#0
|
||
00001e f88d0007 STRB r0,[sp,#7]
|
||
;;;66 GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||
000022 a901 ADD r1,sp,#4
|
||
000024 4817 LDR r0,|L1.132|
|
||
000026 f7fffffe BL GPIO_Init
|
||
;;;67
|
||
;;;68 ADC_DeInit(ADC1); // 复位ADC1,将外设 ADC1 的全部寄存器重设为缺省值
|
||
00002a 4817 LDR r0,|L1.136|
|
||
00002c f7fffffe BL ADC_DeInit
|
||
;;;69
|
||
;;;70 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; // ADC工作模式:ADC1和ADC2工作在独立模式
|
||
000030 2000 MOVS r0,#0
|
||
000032 9002 STR r0,[sp,#8]
|
||
;;;71 ADC_InitStructure.ADC_ScanConvMode = DISABLE; // 模数转换工作在单通道模式
|
||
000034 f88d000c STRB r0,[sp,#0xc]
|
||
;;;72 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; // 模数转换工作在单次转换模式
|
||
000038 f88d000d STRB r0,[sp,#0xd]
|
||
;;;73 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; // 转换由软件而不是外部触发启动
|
||
00003c f44f2060 MOV r0,#0xe0000
|
||
000040 9004 STR r0,[sp,#0x10]
|
||
;;;74 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // ADC数据右对齐
|
||
000042 2000 MOVS r0,#0
|
||
000044 9005 STR r0,[sp,#0x14]
|
||
;;;75 ADC_InitStructure.ADC_NbrOfChannel = 1; // 顺序进行规则转换的ADC通道的数目
|
||
000046 2001 MOVS r0,#1
|
||
000048 f88d0018 STRB r0,[sp,#0x18]
|
||
;;;76 ADC_Init(ADC1, &ADC_InitStructure); // 根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器
|
||
00004c a902 ADD r1,sp,#8
|
||
00004e 480e LDR r0,|L1.136|
|
||
000050 f7fffffe BL ADC_Init
|
||
;;;77
|
||
;;;78 ADC_Cmd(ADC1, ENABLE); // 使能指定的ADC1
|
||
000054 2101 MOVS r1,#1
|
||
000056 480c LDR r0,|L1.136|
|
||
000058 f7fffffe BL ADC_Cmd
|
||
;;;79
|
||
;;;80 ADC_ResetCalibration(ADC1); // 使能复位校准
|
||
00005c 480a LDR r0,|L1.136|
|
||
00005e f7fffffe BL ADC_ResetCalibration
|
||
;;;81
|
||
;;;82 while (ADC_GetResetCalibrationStatus(ADC1))
|
||
000062 bf00 NOP
|
||
|L1.100|
|
||
000064 4808 LDR r0,|L1.136|
|
||
000066 f7fffffe BL ADC_GetResetCalibrationStatus
|
||
00006a 2800 CMP r0,#0
|
||
00006c d1fa BNE |L1.100|
|
||
;;;83 ; // 等待复位校准结束
|
||
;;;84
|
||
;;;85 ADC_StartCalibration(ADC1); // 开启AD校准
|
||
00006e 4806 LDR r0,|L1.136|
|
||
000070 f7fffffe BL ADC_StartCalibration
|
||
;;;86
|
||
;;;87 while (ADC_GetCalibrationStatus(ADC1))
|
||
000074 bf00 NOP
|
||
|L1.118|
|
||
000076 4804 LDR r0,|L1.136|
|
||
000078 f7fffffe BL ADC_GetCalibrationStatus
|
||
00007c 2800 CMP r0,#0
|
||
00007e d1fa BNE |L1.118|
|
||
;;;88 ; // 等待校准结束
|
||
;;;89
|
||
;;;90 // ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能
|
||
;;;91 }
|
||
000080 b007 ADD sp,sp,#0x1c
|
||
000082 bd00 POP {pc}
|
||
;;;92 // 获得ADC值
|
||
ENDP
|
||
|
||
|L1.132|
|
||
DCD 0x40010800
|
||
|L1.136|
|
||
DCD 0x40012400
|
||
|
||
AREA ||i.Delay_ms||, CODE, READONLY, ALIGN=1
|
||
|
||
Delay_ms PROC
|
||
;;;27 #define IS_MF_VALID (g_RxBuf[1] == 'M' && g_RxBuf[2] == 'F')
|
||
;;;28 static void Delay_ms(uint16_t us)
|
||
000000 2100 MOVS r1,#0
|
||
;;;29 {
|
||
;;;30 uint16_t i;
|
||
;;;31
|
||
;;;32 /*
|
||
;;;33 CPU主频168MHz时,在内部Flash运行, MDK工程不优化。用台式示波器观测波形。
|
||
;;;34 循环次数为5时,SCL频率 = 1.78MHz (读耗时: 92ms, 读写正常,但是用示波器探头碰上就读写失败。时序接近临界)
|
||
;;;35 循环次数为10时,SCL频率 = 1.1MHz (读耗时: 138ms, 读速度: 118724B/s)
|
||
;;;36 循环次数为30时,SCL频率 = 440KHz, SCL高电平时间1.0us,SCL低电平时间1.2us
|
||
;;;37
|
||
;;;38 上拉电阻选择2.2K欧时,SCL上升沿时间约0.5us,如果选4.7K欧,则上升沿约1us
|
||
;;;39
|
||
;;;40 实际应用选择400KHz左右的速率即可
|
||
;;;41 */
|
||
;;;42 for (i = 0; i < (300 * us); i++)
|
||
000002 e001 B |L2.8|
|
||
|L2.4|
|
||
000004 1c4a ADDS r2,r1,#1
|
||
000006 b291 UXTH r1,r2
|
||
|L2.8|
|
||
000008 f44f7296 MOV r2,#0x12c
|
||
00000c 4342 MULS r2,r0,r2
|
||
00000e 428a CMP r2,r1
|
||
000010 dcf8 BGT |L2.4|
|
||
;;;43 ;
|
||
;;;44 }
|
||
000012 4770 BX lr
|
||
;;;45 void key1_task(void);
|
||
ENDP
|
||
|
||
|
||
AREA ||i.Get_Adc||, CODE, READONLY, ALIGN=2
|
||
|
||
Get_Adc PROC
|
||
;;;93 // ch:通道值 0~3 ADC_Channel_1
|
||
;;;94 u16 Get_Adc(u8 ch)
|
||
000000 b510 PUSH {r4,lr}
|
||
;;;95 {
|
||
000002 4604 MOV r4,r0
|
||
;;;96 // 设置指定ADC的规则组通道,一个序列,采样时间
|
||
;;;97 ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5); // ADC1,ADC通道,采样时间为239.5周期
|
||
000004 2307 MOVS r3,#7
|
||
000006 2201 MOVS r2,#1
|
||
000008 4621 MOV r1,r4
|
||
00000a 4809 LDR r0,|L3.48|
|
||
00000c f7fffffe BL ADC_RegularChannelConfig
|
||
;;;98
|
||
;;;99 ADC_SoftwareStartConvCmd(ADC1, ENABLE); // 使能指定的ADC1的软件转换启动功能
|
||
000010 2101 MOVS r1,#1
|
||
000012 4807 LDR r0,|L3.48|
|
||
000014 f7fffffe BL ADC_SoftwareStartConvCmd
|
||
;;;100
|
||
;;;101 while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC))
|
||
000018 bf00 NOP
|
||
|L3.26|
|
||
00001a 2102 MOVS r1,#2
|
||
00001c 4804 LDR r0,|L3.48|
|
||
00001e f7fffffe BL ADC_GetFlagStatus
|
||
000022 2800 CMP r0,#0
|
||
000024 d0f9 BEQ |L3.26|
|
||
;;;102 ; // 等待转换结束
|
||
;;;103
|
||
;;;104 return ADC_GetConversionValue(ADC1); // 返回最近一次ADC1规则组的转换结果
|
||
000026 4802 LDR r0,|L3.48|
|
||
000028 f7fffffe BL ADC_GetConversionValue
|
||
;;;105 }
|
||
00002c bd10 POP {r4,pc}
|
||
;;;106
|
||
ENDP
|
||
|
||
00002e 0000 DCW 0x0000
|
||
|L3.48|
|
||
DCD 0x40012400
|
||
|
||
AREA ||i.Get_Adc_Average||, CODE, READONLY, ALIGN=1
|
||
|
||
Get_Adc_Average PROC
|
||
;;;106
|
||
;;;107 u16 Get_Adc_Average(u8 ch, u8 times)
|
||
000000 e92d41f0 PUSH {r4-r8,lr}
|
||
;;;108 {
|
||
000004 4607 MOV r7,r0
|
||
000006 460c MOV r4,r1
|
||
;;;109 u32 temp_val = 0;
|
||
000008 2500 MOVS r5,#0
|
||
;;;110 u8 t;
|
||
;;;111 for (t = 0; t < times; t++)
|
||
00000a 2600 MOVS r6,#0
|
||
00000c e008 B |L4.32|
|
||
|L4.14|
|
||
;;;112 {
|
||
;;;113 temp_val += Get_Adc(ch);
|
||
00000e 4638 MOV r0,r7
|
||
000010 f7fffffe BL Get_Adc
|
||
000014 4405 ADD r5,r5,r0
|
||
;;;114 Delay_ms(5);
|
||
000016 2005 MOVS r0,#5
|
||
000018 f7fffffe BL Delay_ms
|
||
00001c 1c70 ADDS r0,r6,#1 ;111
|
||
00001e b2c6 UXTB r6,r0 ;111
|
||
|L4.32|
|
||
000020 42a6 CMP r6,r4 ;111
|
||
000022 dbf4 BLT |L4.14|
|
||
;;;115 }
|
||
;;;116 return temp_val / times;
|
||
000024 fbb5f0f4 UDIV r0,r5,r4
|
||
000028 b280 UXTH r0,r0
|
||
;;;117 }
|
||
00002a e8bd81f0 POP {r4-r8,pc}
|
||
;;;118
|
||
ENDP
|
||
|
||
|
||
AREA ||i.get_key4_adc||, CODE, READONLY, ALIGN=1
|
||
|
||
get_key4_adc PROC
|
||
;;;118
|
||
;;;119 u16 get_key4_adc(void)
|
||
000000 b570 PUSH {r4-r6,lr}
|
||
;;;120 {
|
||
;;;121 u16 key4_adc = 0;
|
||
000002 2400 MOVS r4,#0
|
||
;;;122 u16 ad_value;
|
||
;;;123
|
||
;;;124 ad_value = Get_Adc_Average(ADC_Channel_1, 10);
|
||
000004 210a MOVS r1,#0xa
|
||
000006 2001 MOVS r0,#1
|
||
000008 f7fffffe BL Get_Adc_Average
|
||
00000c 4605 MOV r5,r0
|
||
;;;125
|
||
;;;126 key4_adc = ad_value;
|
||
00000e 462c MOV r4,r5
|
||
;;;127 if (key4_adc > 3000)
|
||
000010 f64030b8 MOV r0,#0xbb8
|
||
000014 4284 CMP r4,r0
|
||
000016 dd01 BLE |L5.28|
|
||
;;;128 {
|
||
;;;129 key4_adc = 2; // 前进
|
||
000018 2402 MOVS r4,#2
|
||
00001a e00c B |L5.54|
|
||
|L5.28|
|
||
;;;130 }
|
||
;;;131 else if (key4_adc <= 1200)
|
||
00001c f5b46f96 CMP r4,#0x4b0
|
||
000020 dc01 BGT |L5.38|
|
||
;;;132 {
|
||
;;;133 key4_adc = 1; // 后退
|
||
000022 2401 MOVS r4,#1
|
||
000024 e007 B |L5.54|
|
||
|L5.38|
|
||
;;;134 }
|
||
;;;135 else if ((key4_adc > 1200) && (key4_adc <= 3000))
|
||
000026 f5b46f96 CMP r4,#0x4b0
|
||
00002a dd04 BLE |L5.54|
|
||
00002c f64030b8 MOV r0,#0xbb8
|
||
000030 4284 CMP r4,r0
|
||
000032 dc00 BGT |L5.54|
|
||
;;;136 {
|
||
;;;137 key4_adc = 0; // 后退
|
||
000034 2400 MOVS r4,#0
|
||
|L5.54|
|
||
;;;138 }
|
||
;;;139 return key4_adc;
|
||
000036 4620 MOV r0,r4
|
||
;;;140 }
|
||
000038 bd70 POP {r4-r6,pc}
|
||
;;;141 u16 get_key5_adc(void)
|
||
ENDP
|
||
|
||
|
||
AREA ||i.get_key5_adc||, CODE, READONLY, ALIGN=2
|
||
|
||
get_key5_adc PROC
|
||
;;;140 }
|
||
;;;141 u16 get_key5_adc(void)
|
||
000000 e92d5ff0 PUSH {r4-r12,lr}
|
||
;;;142 {
|
||
;;;143 u16 key5_adc = 0;
|
||
000004 f04f0a00 MOV r10,#0
|
||
;;;144 u16 ad_value;
|
||
;;;145
|
||
;;;146 ad_value = Get_Adc_Average(ADC_Channel_2, 10);
|
||
000008 210a MOVS r1,#0xa
|
||
00000a 2002 MOVS r0,#2
|
||
00000c f7fffffe BL Get_Adc_Average
|
||
000010 4683 MOV r11,r0
|
||
;;;147
|
||
;;;148 // electric_quantity_percent = ((ad_value*3.3/4096.0)-1.846)*100/0.52;
|
||
;;;149 key5_adc = (ad_value * 3.3 / 4096.0);
|
||
000012 4658 MOV r0,r11
|
||
000014 f7fffffe BL __aeabi_ui2d
|
||
000018 4680 MOV r8,r0
|
||
00001a f04f3266 MOV r2,#0x66666666
|
||
00001e 4b13 LDR r3,|L6.108|
|
||
000020 f7fffffe BL __aeabi_dmul
|
||
000024 4606 MOV r6,r0
|
||
000026 2200 MOVS r2,#0
|
||
000028 4b11 LDR r3,|L6.112|
|
||
00002a f7fffffe BL __aeabi_ddiv
|
||
00002e 4604 MOV r4,r0
|
||
000030 f7fffffe BL __aeabi_d2uiz
|
||
000034 fa1ffa80 UXTH r10,r0
|
||
;;;150
|
||
;;;151 if (key5_adc >= 3000)
|
||
000038 f64030b8 MOV r0,#0xbb8
|
||
00003c 4582 CMP r10,r0
|
||
00003e db02 BLT |L6.70|
|
||
;;;152 {
|
||
;;;153 key5_adc = 1; // 前进
|
||
000040 f04f0a01 MOV r10,#1
|
||
000044 e00e B |L6.100|
|
||
|L6.70|
|
||
;;;154 }
|
||
;;;155 else if (key5_adc <= 1200)
|
||
000046 f5ba6f96 CMP r10,#0x4b0
|
||
00004a dc02 BGT |L6.82|
|
||
;;;156 {
|
||
;;;157 key5_adc = 2; // 后退
|
||
00004c f04f0a02 MOV r10,#2
|
||
000050 e008 B |L6.100|
|
||
|L6.82|
|
||
;;;158 }
|
||
;;;159 else if ((key5_adc > 1200) && (key5_adc < 3000))
|
||
000052 f5ba6f96 CMP r10,#0x4b0
|
||
000056 dd05 BLE |L6.100|
|
||
000058 f64030b8 MOV r0,#0xbb8
|
||
00005c 4582 CMP r10,r0
|
||
00005e da01 BGE |L6.100|
|
||
;;;160 {
|
||
;;;161 key5_adc = 0; // 后退
|
||
000060 f04f0a00 MOV r10,#0
|
||
|L6.100|
|
||
;;;162 }
|
||
;;;163 return key5_adc;
|
||
000064 4650 MOV r0,r10
|
||
;;;164 }
|
||
000066 e8bd9ff0 POP {r4-r12,pc}
|
||
;;;165
|
||
ENDP
|
||
|
||
00006a 0000 DCW 0x0000
|
||
|L6.108|
|
||
DCD 0x400a6666
|
||
|L6.112|
|
||
DCD 0x40b00000
|
||
|
||
AREA ||i.main||, CODE, READONLY, ALIGN=2
|
||
|
||
REQUIRE _printf_percent
|
||
REQUIRE _printf_u
|
||
REQUIRE _printf_int_dec
|
||
REQUIRE _printf_sizespec
|
||
REQUIRE _printf_pre_padding
|
||
REQUIRE _printf_flags
|
||
REQUIRE _printf_widthprec
|
||
REQUIRE _printf_x
|
||
REQUIRE _printf_longlong_hex
|
||
main PROC
|
||
;;;209 }
|
||
;;;210 int main(void)
|
||
000000 b508 PUSH {r3,lr}
|
||
;;;211 {
|
||
;;;212 uint8_t ucKeyCode;
|
||
;;;213 uint32_t freq = 1500;
|
||
000002 f24058dc MOV r8,#0x5dc
|
||
;;;214 uint16_t motor_move1 = 0;
|
||
000006 2700 MOVS r7,#0
|
||
;;;215 uint32_t g_sysclk_src = 0, g_pll_mul = 0;
|
||
000008 2500 MOVS r5,#0
|
||
00000a 2600 MOVS r6,#0
|
||
;;;216 // uint16_t motor_move2 = 0;
|
||
;;;217
|
||
;;;218 SCB->VTOR = 0x08008000;
|
||
00000c 484a LDR r0,|L7.312|
|
||
00000e 494b LDR r1,|L7.316|
|
||
000010 6008 STR r0,[r1,#0]
|
||
;;;219
|
||
;;;220 /* === MCO 测试: PA8 输出 PLLCLK/2,示波器测量 PA8 === */
|
||
;;;221 {
|
||
;;;222 GPIO_InitTypeDef GPIO_InitStruct;
|
||
;;;223 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
|
||
000012 2101 MOVS r1,#1
|
||
000014 2004 MOVS r0,#4
|
||
000016 f7fffffe BL RCC_APB2PeriphClockCmd
|
||
;;;224 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
|
||
00001a f44f7080 MOV r0,#0x100
|
||
00001e f8ad0000 STRH r0,[sp,#0]
|
||
;;;225 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
|
||
000022 2018 MOVS r0,#0x18
|
||
000024 f88d0003 STRB r0,[sp,#3]
|
||
;;;226 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
|
||
000028 2003 MOVS r0,#3
|
||
00002a f88d0002 STRB r0,[sp,#2]
|
||
;;;227 GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||
00002e 4669 MOV r1,sp
|
||
000030 4843 LDR r0,|L7.320|
|
||
000032 f7fffffe BL GPIO_Init
|
||
;;;228 RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_MCO) | RCC_CFGR_MCO_PLL;
|
||
000036 4843 LDR r0,|L7.324|
|
||
000038 6840 LDR r0,[r0,#4]
|
||
00003a f04060e0 ORR r0,r0,#0x7000000
|
||
00003e 4941 LDR r1,|L7.324|
|
||
000040 6048 STR r0,[r1,#4]
|
||
;;;229 /* MCO 输出 PLL/2:72MHz 系统 = 36MHz, 48MHz 系统 = 24MHz */
|
||
;;;230 }
|
||
;;;231
|
||
;;;232 /* 运行时检测实际系统时钟 */
|
||
;;;233 {
|
||
;;;234 g_sysclk_src = RCC->CFGR & RCC_CFGR_SWS;
|
||
000042 4608 MOV r0,r1
|
||
000044 6840 LDR r0,[r0,#4]
|
||
000046 f000050c AND r5,r0,#0xc
|
||
;;;235 if (g_sysclk_src == 0x08)
|
||
00004a 2d08 CMP r5,#8
|
||
00004c d104 BNE |L7.88|
|
||
;;;236 {
|
||
;;;237 g_pll_mul = (RCC->CFGR & RCC_CFGR_PLLMULL) >> 18;
|
||
00004e 4608 MOV r0,r1
|
||
000050 6840 LDR r0,[r0,#4]
|
||
000052 f3c04683 UBFX r6,r0,#18,#4
|
||
;;;238 g_pll_mul = g_pll_mul + 2;
|
||
000056 1cb6 ADDS r6,r6,#2
|
||
|L7.88|
|
||
;;;239 }
|
||
;;;240 }
|
||
;;;241
|
||
;;;242 bsp_Init(); /* 硬件初始化 */
|
||
000058 f7fffffe BL bsp_Init
|
||
;;;243
|
||
;;;244 /* 打印调试信息(需在串口初始化后) */
|
||
;;;245 {
|
||
;;;246 if (g_sysclk_src == 0x00)
|
||
00005c b91d CBNZ r5,|L7.102|
|
||
;;;247 printf("SYSCLK = HSI 8MHz\r\n");
|
||
00005e a03a ADR r0,|L7.328|
|
||
000060 f7fffffe BL __2printf
|
||
000064 e00d B |L7.130|
|
||
|L7.102|
|
||
;;;248 else if (g_sysclk_src == 0x04)
|
||
000066 2d04 CMP r5,#4
|
||
000068 d103 BNE |L7.114|
|
||
;;;249 printf("SYSCLK = HSE\r\n");
|
||
00006a a03c ADR r0,|L7.348|
|
||
00006c f7fffffe BL __2printf
|
||
000070 e007 B |L7.130|
|
||
|L7.114|
|
||
;;;250 else if (g_sysclk_src == 0x08)
|
||
000072 2d08 CMP r5,#8
|
||
000074 d105 BNE |L7.130|
|
||
;;;251 {
|
||
;;;252 printf("PLL MUL = %u, PLL = 8MHz * %u = %uMHz\r\n", g_pll_mul, g_pll_mul, 8 * g_pll_mul);
|
||
000076 00f3 LSLS r3,r6,#3
|
||
000078 4632 MOV r2,r6
|
||
00007a 4631 MOV r1,r6
|
||
00007c a03b ADR r0,|L7.364|
|
||
00007e f7fffffe BL __2printf
|
||
|L7.130|
|
||
;;;253 }
|
||
;;;254 printf("SystemCoreClock var = %lu\r\n", SystemCoreClock);
|
||
000082 4844 LDR r0,|L7.404|
|
||
000084 6801 LDR r1,[r0,#0] ; SystemCoreClock
|
||
000086 a044 ADR r0,|L7.408|
|
||
000088 f7fffffe BL __2printf
|
||
;;;255 printf("RCC->CFGR = 0x%08lX, PPRE1=%lu\r\n", RCC->CFGR, (RCC->CFGR >> 8) & 0x7);
|
||
00008c 482d LDR r0,|L7.324|
|
||
00008e 6840 LDR r0,[r0,#4]
|
||
000090 f3c02202 UBFX r2,r0,#8,#3
|
||
000094 482b LDR r0,|L7.324|
|
||
000096 6841 LDR r1,[r0,#4]
|
||
000098 a046 ADR r0,|L7.436|
|
||
00009a f7fffffe BL __2printf
|
||
;;;256 printf("TIM6 PSC = %u, ARR = %u\r\n", TIM6->PSC, TIM6->ARR);
|
||
00009e 484e LDR r0,|L7.472|
|
||
0000a0 8d82 LDRH r2,[r0,#0x2c]
|
||
0000a2 8d01 LDRH r1,[r0,#0x28]
|
||
0000a4 a04d ADR r0,|L7.476|
|
||
0000a6 f7fffffe BL __2printf
|
||
;;;257 }
|
||
;;;258
|
||
;;;259 Adc_Init(); // ADC初始化
|
||
0000aa f7fffffe BL Adc_Init
|
||
;;;260 BEEP_Start(freq, 20, 1, 1);
|
||
0000ae 2301 MOVS r3,#1
|
||
0000b0 461a MOV r2,r3
|
||
0000b2 2114 MOVS r1,#0x14
|
||
0000b4 4640 MOV r0,r8
|
||
0000b6 f7fffffe BL BEEP_Start
|
||
;;;261
|
||
;;;262 g_tTube.state = WORK;
|
||
0000ba 2001 MOVS r0,#1
|
||
0000bc 494e LDR r1,|L7.504|
|
||
0000be 72c8 STRB r0,[r1,#0xb]
|
||
;;;263 MOTO_Stop();
|
||
0000c0 f7fffffe BL MOTO_Stop
|
||
;;;264
|
||
;;;265 /* 主程序大循环 */
|
||
;;;266 while (1)
|
||
0000c4 e036 B |L7.308|
|
||
|L7.198|
|
||
;;;267 {
|
||
;;;268 bsp_Idle(); /* CPU空闲时执行的函数,在 bsp.c */
|
||
0000c6 f7fffffe BL bsp_Idle
|
||
;;;269 uart_msg_idle();
|
||
0000ca f7fffffe BL uart_msg_idle
|
||
;;;270 if (Flag_100ms == 1)
|
||
0000ce 484b LDR r0,|L7.508|
|
||
0000d0 7800 LDRB r0,[r0,#0] ; Flag_100ms
|
||
0000d2 2801 CMP r0,#1
|
||
0000d4 d11a BNE |L7.268|
|
||
;;;271 {
|
||
;;;272 Flag_100ms = 0;
|
||
0000d6 2000 MOVS r0,#0
|
||
0000d8 4948 LDR r1,|L7.508|
|
||
0000da 7008 STRB r0,[r1,#0]
|
||
;;;273 motor_move1 = get_key4_adc();
|
||
0000dc f7fffffe BL get_key4_adc
|
||
0000e0 4607 MOV r7,r0
|
||
;;;274 // motor_move2 = get_key5_adc();
|
||
;;;275 if (motor_move1 == 1) // key4
|
||
0000e2 2f01 CMP r7,#1
|
||
0000e4 d108 BNE |L7.248|
|
||
;;;276 {
|
||
;;;277 motor_move1 = 0;
|
||
0000e6 2700 MOVS r7,#0
|
||
;;;278 // 前进
|
||
;;;279 motor_dir(1500, 0, 3000);
|
||
0000e8 f64032b8 MOV r2,#0xbb8
|
||
0000ec 2300 MOVS r3,#0
|
||
0000ee 4619 MOV r1,r3
|
||
0000f0 1050 ASRS r0,r2,#1
|
||
0000f2 f7fffffe BL motor_dir
|
||
0000f6 e009 B |L7.268|
|
||
|L7.248|
|
||
;;;280 }
|
||
;;;281 else if (motor_move1 == 2)
|
||
0000f8 2f02 CMP r7,#2
|
||
0000fa d107 BNE |L7.268|
|
||
;;;282 {
|
||
;;;283 motor_move1 = 0;
|
||
0000fc 2700 MOVS r7,#0
|
||
;;;284 // 后退
|
||
;;;285 motor_dir(1500, 1, 3000);
|
||
0000fe f64032b8 MOV r2,#0xbb8
|
||
000102 2300 MOVS r3,#0
|
||
000104 2101 MOVS r1,#1
|
||
000106 1050 ASRS r0,r2,#1
|
||
000108 f7fffffe BL motor_dir
|
||
|L7.268|
|
||
;;;286 }
|
||
;;;287 }
|
||
;;;288 /* 处理按键事件 */
|
||
;;;289 ucKeyCode = bsp_GetKey();
|
||
00010c f7fffffe BL bsp_GetKey
|
||
000110 4604 MOV r4,r0
|
||
;;;290
|
||
;;;291 if (ucKeyCode > 0)
|
||
000112 2c00 CMP r4,#0
|
||
000114 dd0e BLE |L7.308|
|
||
;;;292 {
|
||
;;;293 /* 有键按下 */
|
||
;;;294 switch (ucKeyCode) // key6
|
||
000116 2c01 CMP r4,#1
|
||
000118 d002 BEQ |L7.288|
|
||
00011a 2c04 CMP r4,#4
|
||
00011c d108 BNE |L7.304|
|
||
00011e e002 B |L7.294|
|
||
|L7.288|
|
||
;;;295 {
|
||
;;;296 case KEY_DOWN_K6: // key6 短按
|
||
;;;297 {
|
||
;;;298 MOTO_ZorePos();
|
||
000120 f7fffffe BL MOTO_ZorePos
|
||
;;;299 break;
|
||
000124 e005 B |L7.306|
|
||
|L7.294|
|
||
;;;300 }
|
||
;;;301
|
||
;;;302 case KEY_DOWN_K1: // Key1 短按
|
||
;;;303 {
|
||
;;;304 BEEP_KeyTone(); // 按键提示音
|
||
000126 f7fffffe BL BEEP_KeyTone
|
||
;;;305 bsp_ToogleDispMode();
|
||
00012a f7fffffe BL bsp_ToogleDispMode
|
||
;;;306 break;
|
||
00012e e000 B |L7.306|
|
||
|L7.304|
|
||
;;;307 }
|
||
;;;308
|
||
;;;309 default:
|
||
;;;310 break;
|
||
000130 bf00 NOP
|
||
|L7.306|
|
||
000132 bf00 NOP ;299
|
||
|L7.308|
|
||
000134 e7c7 B |L7.198|
|
||
;;;311 }
|
||
;;;312 }
|
||
;;;313 }
|
||
;;;314 }
|
||
;;;315
|
||
ENDP
|
||
|
||
000136 0000 DCW 0x0000
|
||
|L7.312|
|
||
DCD 0x08008000
|
||
|L7.316|
|
||
DCD 0xe000ed08
|
||
|L7.320|
|
||
DCD 0x40010800
|
||
|L7.324|
|
||
DCD 0x40021000
|
||
|L7.328|
|
||
000148 53595343 DCB "SYSCLK = HSI 8MHz\r\n",0
|
||
00014c 4c4b203d
|
||
000150 20485349
|
||
000154 20384d48
|
||
000158 7a0d0a00
|
||
|L7.348|
|
||
00015c 53595343 DCB "SYSCLK = HSE\r\n",0
|
||
000160 4c4b203d
|
||
000164 20485345
|
||
000168 0d0a00
|
||
00016b 00 DCB 0
|
||
|L7.364|
|
||
00016c 504c4c20 DCB "PLL MUL = %u, PLL = 8MHz * %u = %uMHz\r\n",0
|
||
000170 4d554c20
|
||
000174 3d202575
|
||
000178 2c20504c
|
||
00017c 4c203d20
|
||
000180 384d487a
|
||
000184 202a2025
|
||
000188 75203d20
|
||
00018c 25754d48
|
||
000190 7a0d0a00
|
||
|L7.404|
|
||
DCD SystemCoreClock
|
||
|L7.408|
|
||
000198 53797374 DCB "SystemCoreClock var = %lu\r\n",0
|
||
00019c 656d436f
|
||
0001a0 7265436c
|
||
0001a4 6f636b20
|
||
0001a8 76617220
|
||
0001ac 3d20256c
|
||
0001b0 750d0a00
|
||
|L7.436|
|
||
0001b4 5243432d DCB "RCC->CFGR = 0x%08lX, PPRE1=%lu\r\n",0
|
||
0001b8 3e434647
|
||
0001bc 52203d20
|
||
0001c0 30782530
|
||
0001c4 386c582c
|
||
0001c8 20505052
|
||
0001cc 45313d25
|
||
0001d0 6c750d0a
|
||
0001d4 00
|
||
0001d5 00 DCB 0
|
||
0001d6 00 DCB 0
|
||
0001d7 00 DCB 0
|
||
|L7.472|
|
||
DCD 0x40001000
|
||
|L7.476|
|
||
0001dc 54494d36 DCB "TIM6 PSC = %u, ARR = %u\r\n",0
|
||
0001e0 20505343
|
||
0001e4 203d2025
|
||
0001e8 752c2041
|
||
0001ec 5252203d
|
||
0001f0 2025750d
|
||
0001f4 0a00
|
||
0001f6 00 DCB 0
|
||
0001f7 00 DCB 0
|
||
|L7.504|
|
||
DCD g_tTube
|
||
|L7.508|
|
||
DCD Flag_100ms
|
||
|
||
AREA ||i.motor_dir||, CODE, READONLY, ALIGN=2
|
||
|
||
motor_dir PROC
|
||
;;;165
|
||
;;;166 void motor_dir(uint32_t freq, uint8_t _dir, int64_t _stpes)
|
||
000000 e92d41f0 PUSH {r4-r8,lr}
|
||
;;;167 {
|
||
000004 4607 MOV r7,r0
|
||
000006 460c MOV r4,r1
|
||
000008 4615 MOV r5,r2
|
||
00000a 461e MOV r6,r3
|
||
;;;168 // [r,1,1500,108288]
|
||
;;;169
|
||
;;;170 if (g_tTube.state == WORK)
|
||
00000c 482b LDR r0,|L8.188|
|
||
00000e 7ac0 LDRB r0,[r0,#0xb] ; g_tTube
|
||
000010 2801 CMP r0,#1
|
||
000012 d150 BNE |L8.182|
|
||
;;;171 {
|
||
;;;172 if (_dir == 1)
|
||
000014 2c01 CMP r4,#1
|
||
000016 d117 BNE |L8.72|
|
||
;;;173 {
|
||
;;;174 _dir = 1;
|
||
000018 bf00 NOP
|
||
;;;175 if (g_tMoto.sv_pulse + 100 < INT64_MAX)
|
||
00001a 4929 LDR r1,|L8.192|
|
||
00001c e9d1010a LDRD r0,r1,[r1,#0x28]
|
||
000020 3064 ADDS r0,r0,#0x64
|
||
000022 f1410100 ADC r1,r1,#0
|
||
000026 f06f4200 MVN r2,#0x80000000
|
||
00002a 4051 EORS r1,r1,r2
|
||
00002c ea710000 ORNS r0,r1,r0
|
||
000030 d020 BEQ |L8.116|
|
||
;;;176 g_tMoto.sv_pulse = g_tMoto.sv_pulse + 100;
|
||
000032 4823 LDR r0,|L8.192|
|
||
000034 e9d0300a LDRD r3,r0,[r0,#0x28]
|
||
000038 2264 MOVS r2,#0x64
|
||
00003a 189a ADDS r2,r3,r2
|
||
00003c f1400000 ADC r0,r0,#0
|
||
000040 491f LDR r1,|L8.192|
|
||
000042 e9c1200a STRD r2,r0,[r1,#0x28]
|
||
000046 e015 B |L8.116|
|
||
|L8.72|
|
||
;;;177 }
|
||
;;;178 else if (_dir == 0)
|
||
000048 b9a4 CBNZ r4,|L8.116|
|
||
;;;179 {
|
||
;;;180 _dir = 0;
|
||
00004a 2400 MOVS r4,#0
|
||
;;;181 if (g_tMoto.sv_pulse - 100 > INT64_MIN)
|
||
00004c 491c LDR r1,|L8.192|
|
||
00004e e9d1010a LDRD r0,r1,[r1,#0x28]
|
||
000052 3864 SUBS r0,r0,#0x64
|
||
000054 f1610100 SBC r1,r1,#0
|
||
000058 f04f4200 MOV r2,#0x80000000
|
||
00005c 4051 EORS r1,r1,r2
|
||
00005e 4308 ORRS r0,r0,r1
|
||
000060 d008 BEQ |L8.116|
|
||
;;;182 g_tMoto.sv_pulse = g_tMoto.sv_pulse - 100;
|
||
000062 4817 LDR r0,|L8.192|
|
||
000064 e9d0200a LDRD r2,r0,[r0,#0x28]
|
||
000068 3a64 SUBS r2,r2,#0x64
|
||
00006a f1600000 SBC r0,r0,#0
|
||
00006e 4914 LDR r1,|L8.192|
|
||
000070 e9c1200a STRD r2,r0,[r1,#0x28]
|
||
|L8.116|
|
||
;;;183 }
|
||
;;;184
|
||
;;;185 if (g_tMoto.pv_pulse < g_tMoto.sv_pulse)
|
||
000074 4812 LDR r0,|L8.192|
|
||
000076 e9d01008 LDRD r1,r0,[r0,#0x20]
|
||
00007a 4a11 LDR r2,|L8.192|
|
||
00007c e9d2320a LDRD r3,r2,[r2,#0x28]
|
||
000080 1ac9 SUBS r1,r1,r3
|
||
000082 4190 SBCS r0,r0,r2
|
||
000084 da07 BGE |L8.150|
|
||
;;;186 {
|
||
;;;187
|
||
;;;188 if (g_tMoto.sv_pulse > INT64_MAX)
|
||
000086 bf00 NOP
|
||
;;;189 {
|
||
;;;190 g_tMoto.sv_pulse = INT64_MAX;
|
||
;;;191 }
|
||
;;;192 else if (g_tMoto.sv_pulse <= INT64_MAX)
|
||
;;;193 {
|
||
;;;194 MOTO_Start(1500, 0, 100);
|
||
000088 2264 MOVS r2,#0x64
|
||
00008a 2100 MOVS r1,#0
|
||
00008c f24050dc MOV r0,#0x5dc
|
||
000090 f7fffffe BL MOTO_Start
|
||
000094 e00f B |L8.182|
|
||
|L8.150|
|
||
;;;195 }
|
||
;;;196 }
|
||
;;;197 else if (g_tMoto.pv_pulse > g_tMoto.sv_pulse)
|
||
000096 480a LDR r0,|L8.192|
|
||
000098 e9d0200a LDRD r2,r0,[r0,#0x28]
|
||
00009c 4908 LDR r1,|L8.192|
|
||
00009e e9d13108 LDRD r3,r1,[r1,#0x20]
|
||
0000a2 1ad2 SUBS r2,r2,r3
|
||
0000a4 4188 SBCS r0,r0,r1
|
||
0000a6 da06 BGE |L8.182|
|
||
;;;198 {
|
||
;;;199 if (g_tMoto.sv_pulse < INT64_MIN)
|
||
0000a8 bf00 NOP
|
||
;;;200 {
|
||
;;;201 g_tMoto.sv_pulse = INT64_MIN;
|
||
;;;202 }
|
||
;;;203 else if (g_tMoto.sv_pulse >= INT64_MIN)
|
||
;;;204 {
|
||
;;;205 MOTO_Start(1500, 1, 100);
|
||
0000aa 2264 MOVS r2,#0x64
|
||
0000ac 2101 MOVS r1,#1
|
||
0000ae f24050dc MOV r0,#0x5dc
|
||
0000b2 f7fffffe BL MOTO_Start
|
||
|L8.182|
|
||
;;;206 }
|
||
;;;207 }
|
||
;;;208 }
|
||
;;;209 }
|
||
0000b6 e8bd81f0 POP {r4-r8,pc}
|
||
;;;210 int main(void)
|
||
ENDP
|
||
|
||
0000ba 0000 DCW 0x0000
|
||
|L8.188|
|
||
DCD g_tTube
|
||
|L8.192|
|
||
DCD g_tMoto
|
||
|
||
AREA ||i.print_sys_info||, CODE, READONLY, ALIGN=2
|
||
|
||
REQUIRE _printf_percent
|
||
REQUIRE _printf_s
|
||
REQUIRE _printf_str
|
||
REQUIRE _printf_str
|
||
print_sys_info PROC
|
||
;;;321
|
||
;;;322 void print_sys_info(void)
|
||
000000 b510 PUSH {r4,lr}
|
||
;;;323 {
|
||
;;;324 printf("\r\n");
|
||
000002 a019 ADR r0,|L9.104|
|
||
000004 f7fffffe BL __2printf
|
||
;;;325 printf("----------------------------->\r\n");
|
||
000008 a018 ADR r0,|L9.108|
|
||
00000a f7fffffe BL __2printf
|
||
;;;326 printf("-> 设备名称:无限旋转控制器\r\n");
|
||
00000e a020 ADR r0,|L9.144|
|
||
000010 f7fffffe BL __2printf
|
||
;;;327 printf("-> software verson: V1.0\r\n");
|
||
000014 a029 ADR r0,|L9.188|
|
||
000016 f7fffffe BL __2printf
|
||
;;;328 printf("-> compile time: %s\r\n", __TIME__);
|
||
00001a a12f ADR r1,|L9.216|
|
||
00001c a031 ADR r0,|L9.228|
|
||
00001e f7fffffe BL __2printf
|
||
;;;329 printf("-> compile date: %s\r\n", __DATE__);
|
||
000022 a136 ADR r1,|L9.252|
|
||
000024 a038 ADR r0,|L9.264|
|
||
000026 f7fffffe BL __2printf
|
||
;;;330 printf("-> [多场低温科技有限公司]\r\n");
|
||
00002a a03d ADR r0,|L9.288|
|
||
00002c f7fffffe BL __2printf
|
||
;;;331 printf("------------------------------\r\n");
|
||
000030 a045 ADR r0,|L9.328|
|
||
000032 f7fffffe BL __2printf
|
||
;;;332 printf("->可用命令:\r\n");
|
||
000036 a04d ADR r0,|L9.364|
|
||
000038 f7fffffe BL __2printf
|
||
;;;333 printf("1. [s] // 停止电机转动\r\n");
|
||
00003c a051 ADR r0,|L9.388|
|
||
00003e f7fffffe BL __2printf
|
||
;;;334 printf("2. [?] // 读取当前位置角度\r\n");
|
||
000042 a058 ADR r0,|L9.420|
|
||
000044 f7fffffe BL __2printf
|
||
;;;335 printf("3. [z] // 设置当前位置为零点\r\n");
|
||
000048 a060 ADR r0,|L9.460|
|
||
00004a f7fffffe BL __2printf
|
||
;;;336 printf("4. [MF] // 打印系统信息\r\n");
|
||
00004e a06a ADR r0,|L9.504|
|
||
000050 f7fffffe BL __2printf
|
||
;;;337 printf("5. [r:10:360] // 转动命令,10为转动角速度,360为目标角度\r\n");
|
||
000054 4870 LDR r0,|L9.536|
|
||
000056 f7fffffe BL __2printf
|
||
;;;338 printf("6. [rr:10:20] // 转动命令,10为转动角速度,20为相对转动角度\r\n");
|
||
00005a 4870 LDR r0,|L9.540|
|
||
00005c f7fffffe BL __2printf
|
||
;;;339 printf("<-----------------------------\r\n");
|
||
000060 a06f ADR r0,|L9.544|
|
||
000062 f7fffffe BL __2printf
|
||
;;;340 }
|
||
000066 bd10 POP {r4,pc}
|
||
;;;341
|
||
ENDP
|
||
|
||
|L9.104|
|
||
000068 0d0a00 DCB "\r\n",0
|
||
00006b 00 DCB 0
|
||
|L9.108|
|
||
00006c 2d2d2d2d DCB "----------------------------->\r\n",0
|
||
000070 2d2d2d2d
|
||
000074 2d2d2d2d
|
||
000078 2d2d2d2d
|
||
00007c 2d2d2d2d
|
||
000080 2d2d2d2d
|
||
000084 2d2d2d2d
|
||
000088 2d3e0d0a
|
||
00008c 00
|
||
00008d 00 DCB 0
|
||
00008e 00 DCB 0
|
||
00008f 00 DCB 0
|
||
|L9.144|
|
||
000090 2d3e20e8 DCB "-> ",232,174,190,229,164,135,229,144,141,231,167,176,239
|
||
000094 aebee5a4
|
||
000098 87e5908d
|
||
00009c e7a7b0ef
|
||
0000a0 bc9ae697 DCB 188,154,230,151,160,233,153,144,230,151,139,232,189,172,230
|
||
0000a4 a0e99990
|
||
0000a8 e6978be8
|
||
0000ac bdace6
|
||
0000af 8ea7e588 DCB 142,167,229,136,182,229,153,168,"\r\n",0
|
||
0000b3 b6e599a8
|
||
0000b7 0d0a00
|
||
0000ba 00 DCB 0
|
||
0000bb 00 DCB 0
|
||
|L9.188|
|
||
0000bc 2d3e2073 DCB "-> software verson: V1.0\r\n",0
|
||
0000c0 6f667477
|
||
0000c4 61726520
|
||
0000c8 76657273
|
||
0000cc 6f6e3a20
|
||
0000d0 56312e30
|
||
0000d4 0d0a00
|
||
0000d7 00 DCB 0
|
||
|L9.216|
|
||
0000d8 31363a32 DCB "16:27:16",0
|
||
0000dc 373a3136
|
||
0000e0 00
|
||
0000e1 00 DCB 0
|
||
0000e2 00 DCB 0
|
||
0000e3 00 DCB 0
|
||
|L9.228|
|
||
0000e4 2d3e2063 DCB "-> compile time: %s\r\n",0
|
||
0000e8 6f6d7069
|
||
0000ec 6c652074
|
||
0000f0 696d653a
|
||
0000f4 2025730d
|
||
0000f8 0a00
|
||
0000fa 00 DCB 0
|
||
0000fb 00 DCB 0
|
||
|L9.252|
|
||
0000fc 41707220 DCB "Apr 16 2026",0
|
||
000100 31362032
|
||
000104 30323600
|
||
|L9.264|
|
||
000108 2d3e2063 DCB "-> compile date: %s\r\n",0
|
||
00010c 6f6d7069
|
||
000110 6c652064
|
||
000114 6174653a
|
||
000118 2025730d
|
||
00011c 0a00
|
||
00011e 00 DCB 0
|
||
00011f 00 DCB 0
|
||
|L9.288|
|
||
000120 2d3e205b DCB "-> [",229,164,154,229,156,186,228,189,142,230,184,169,231
|
||
000124 e5a49ae5
|
||
000128 9cbae4bd
|
||
00012c 8ee6b8a9
|
||
000130 e7
|
||
000131 a791e68a DCB 167,145,230,138,128,230,156,137,233,153,144,229,133,172,229
|
||
000135 80e69c89
|
||
000139 e99990e5
|
||
00013d 85ace5
|
||
000140 8fb85d0d DCB 143,184,"]\r\n",0
|
||
000144 0a00
|
||
000146 00 DCB 0
|
||
000147 00 DCB 0
|
||
|L9.328|
|
||
000148 2d2d2d2d DCB "------------------------------\r\n",0
|
||
00014c 2d2d2d2d
|
||
000150 2d2d2d2d
|
||
000154 2d2d2d2d
|
||
000158 2d2d2d2d
|
||
00015c 2d2d2d2d
|
||
000160 2d2d2d2d
|
||
000164 2d2d0d0a
|
||
000168 00
|
||
000169 00 DCB 0
|
||
00016a 00 DCB 0
|
||
00016b 00 DCB 0
|
||
|L9.364|
|
||
00016c 2d3ee58f DCB "->",229,143,175,231,148,168,229,145,189,228,187,164,239
|
||
000170 afe794a8
|
||
000174 e591bde4
|
||
000178 bba4ef
|
||
00017b bc9a5c72 DCB 188,154,"\\r\n",0
|
||
00017f 0a00
|
||
000181 00 DCB 0
|
||
000182 00 DCB 0
|
||
000183 00 DCB 0
|
||
|L9.388|
|
||
000184 312e205b DCB "1. [s] // ",229,129,156,230,173,162,231,148,181,230,156
|
||
000188 735d2020
|
||
00018c 2f2f20e5
|
||
000190 819ce6ad
|
||
000194 a2e794b5
|
||
000198 e69c
|
||
00019a bae8bdac DCB 186,232,189,172,229,138,168,"\r\n",0
|
||
00019e e58aa80d
|
||
0001a2 0a00
|
||
|L9.420|
|
||
0001a4 322e205b DCB "2. [?] // ",232,175,187,229,143,150,229,189,147,229,137
|
||
0001a8 3f5d2020
|
||
0001ac 2f2f20e8
|
||
0001b0 afbbe58f
|
||
0001b4 96e5bd93
|
||
0001b8 e589
|
||
0001ba 8de4bd8d DCB 141,228,189,141,231,189,174,232,167,146,229,186,166,"\r\n"
|
||
0001be e7bdaee8
|
||
0001c2 a792e5ba
|
||
0001c6 a60d0a
|
||
0001c9 00 DCB 0
|
||
0001ca 00 DCB 0
|
||
0001cb 00 DCB 0
|
||
|L9.460|
|
||
0001cc 332e205b DCB "3. [z] // ",232,174,190,231,189,174,229,189,147,229,137
|
||
0001d0 7a5d2020
|
||
0001d4 2f2f20e8
|
||
0001d8 aebee7bd
|
||
0001dc aee5bd93
|
||
0001e0 e589
|
||
0001e2 8de4bd8d DCB 141,228,189,141,231,189,174,228,184,186,233,155,182,231,130
|
||
0001e6 e7bdaee4
|
||
0001ea b8bae99b
|
||
0001ee b6e782
|
||
0001f1 b95c720a DCB 185,"\\r\n",0
|
||
0001f5 00
|
||
0001f6 00 DCB 0
|
||
0001f7 00 DCB 0
|
||
|L9.504|
|
||
0001f8 342e205b DCB "4. [MF] // ",230,137,147,229,141,176,231,179,187,231,187
|
||
0001fc 4d465d20
|
||
000200 2f2f20e6
|
||
000204 8993e58d
|
||
000208 b0e7b3bb
|
||
00020c e7bb
|
||
00020e 9fe4bfa1 DCB 159,228,191,161,230,129,175,"\r\n",0
|
||
000212 e681af0d
|
||
000216 0a00
|
||
|L9.536|
|
||
DCD ||.conststring||
|
||
|L9.540|
|
||
DCD ||.conststring||+0x50
|
||
|L9.544|
|
||
000220 3c2d2d2d DCB "<-----------------------------\r\n",0
|
||
000224 2d2d2d2d
|
||
000228 2d2d2d2d
|
||
00022c 2d2d2d2d
|
||
000230 2d2d2d2d
|
||
000234 2d2d2d2d
|
||
000238 2d2d2d2d
|
||
00023c 2d2d0d0a
|
||
000240 00
|
||
000241 00 DCB 0
|
||
000242 00 DCB 0
|
||
000243 00 DCB 0
|
||
|
||
AREA ||i.send_sv_2_uart||, CODE, READONLY, ALIGN=2
|
||
|
||
REQUIRE _printf_percent
|
||
REQUIRE _printf_widthprec
|
||
REQUIRE _printf_f
|
||
REQUIRE _printf_fp_dec
|
||
send_sv_2_uart PROC
|
||
;;;315
|
||
;;;316 void send_sv_2_uart(void)
|
||
000000 b570 PUSH {r4-r6,lr}
|
||
;;;317 {
|
||
;;;318 float angle = g_tTube.pulse * 360.0f / STEP_PER_LAP; // 22 * 16 * 24
|
||
000002 490b LDR r1,|L10.48|
|
||
000004 6908 LDR r0,[r1,#0x10] ; g_tTube
|
||
000006 f7fffffe BL __aeabi_i2f
|
||
00000a 4606 MOV r6,r0
|
||
00000c 4909 LDR r1,|L10.52|
|
||
00000e f7fffffe BL __aeabi_fmul
|
||
000012 4605 MOV r5,r0
|
||
000014 4908 LDR r1,|L10.56|
|
||
000016 f7fffffe BL __aeabi_fdiv
|
||
00001a 4604 MOV r4,r0
|
||
;;;319 printf("[w,%.2f]\r\n", angle);
|
||
00001c 4620 MOV r0,r4
|
||
00001e f7fffffe BL __aeabi_f2d
|
||
000022 4605 MOV r5,r0
|
||
000024 462a MOV r2,r5
|
||
000026 460b MOV r3,r1
|
||
000028 a004 ADR r0,|L10.60|
|
||
00002a f7fffffe BL __2printf
|
||
;;;320 }
|
||
00002e bd70 POP {r4-r6,pc}
|
||
;;;321
|
||
ENDP
|
||
|
||
|L10.48|
|
||
DCD g_tTube
|
||
|L10.52|
|
||
DCD 0x43b40000
|
||
|L10.56|
|
||
DCD 0x46043400
|
||
|L10.60|
|
||
00003c 5b772c25 DCB "[w,%.2f]\r\n",0
|
||
000040 2e32665d
|
||
000044 0d0a00
|
||
000047 00 DCB 0
|
||
|
||
AREA ||i.uart_msg_idle||, CODE, READONLY, ALIGN=2
|
||
|
||
REQUIRE _scanf_real
|
||
REQUIRE _printf_sizespec
|
||
REQUIRE _printf_percent
|
||
REQUIRE _printf_d
|
||
REQUIRE _printf_u
|
||
REQUIRE _printf_lld
|
||
REQUIRE _printf_f
|
||
REQUIRE _printf_int_dec
|
||
REQUIRE _printf_longlong_dec
|
||
REQUIRE _printf_fp_dec
|
||
uart_msg_idle PROC
|
||
;;;341
|
||
;;;342 void uart_msg_idle(void)
|
||
000000 e92d43f0 PUSH {r4-r9,lr}
|
||
;;;343 {
|
||
000004 b087 SUB sp,sp,#0x1c
|
||
;;;344 uint8_t n = 0;
|
||
000006 2400 MOVS r4,#0
|
||
;;;345 float freq = 0;
|
||
000008 2000 MOVS r0,#0
|
||
00000a 9006 STR r0,[sp,#0x18]
|
||
;;;346 float pulse = 0;
|
||
00000c 2500 MOVS r5,#0
|
||
;;;347 float angle = 0;
|
||
00000e 9005 STR r0,[sp,#0x14]
|
||
;;;348
|
||
;;;349 if (g_ucRxRcvNewFlag)
|
||
000010 48a1 LDR r0,|L11.664|
|
||
000012 7800 LDRB r0,[r0,#0] ; g_ucRxRcvNewFlag
|
||
000014 2800 CMP r0,#0
|
||
000016 d01b BEQ |L11.80|
|
||
;;;350 {
|
||
;;;351 g_ucRxRcvNewFlag = 0;
|
||
000018 2000 MOVS r0,#0
|
||
00001a 499f LDR r1,|L11.664|
|
||
00001c 7008 STRB r0,[r1,#0]
|
||
;;;352
|
||
;;;353 n = strlen((char *)g_RxBuf);
|
||
00001e 489f LDR r0,|L11.668|
|
||
000020 f7fffffe BL strlen
|
||
000024 b2c4 UXTB r4,r0
|
||
;;;354 if (n == 3)
|
||
000026 2c03 CMP r4,#3
|
||
000028 d113 BNE |L11.82|
|
||
;;;355 {
|
||
;;;356 switch (g_RxBuf[1])
|
||
00002a 489c LDR r0,|L11.668|
|
||
00002c 7840 LDRB r0,[r0,#1] ; g_RxBuf
|
||
00002e 283f CMP r0,#0x3f
|
||
000030 d004 BEQ |L11.60|
|
||
000032 2873 CMP r0,#0x73
|
||
000034 d005 BEQ |L11.66|
|
||
000036 287a CMP r0,#0x7a
|
||
000038 d109 BNE |L11.78|
|
||
00003a e005 B |L11.72|
|
||
|L11.60|
|
||
;;;357 {
|
||
;;;358 case '?':
|
||
;;;359 send_sv_2_uart();
|
||
00003c f7fffffe BL send_sv_2_uart
|
||
;;;360 break;
|
||
000040 e006 B |L11.80|
|
||
|L11.66|
|
||
;;;361 case 's':
|
||
;;;362 MOTO_Stop();
|
||
000042 f7fffffe BL MOTO_Stop
|
||
;;;363 break;
|
||
000046 e003 B |L11.80|
|
||
|L11.72|
|
||
;;;364 case 'z':
|
||
;;;365 MOTO_ZorePos();
|
||
000048 f7fffffe BL MOTO_ZorePos
|
||
;;;366 break;
|
||
00004c e000 B |L11.80|
|
||
|L11.78|
|
||
;;;367 default:
|
||
;;;368 break;
|
||
00004e bf00 NOP
|
||
|L11.80|
|
||
000050 e11e B |L11.656|
|
||
|L11.82|
|
||
;;;369 }
|
||
;;;370 }
|
||
;;;371 else if (n == 4)
|
||
000052 2c04 CMP r4,#4
|
||
000054 d10a BNE |L11.108|
|
||
;;;372 {
|
||
;;;373 if (IS_MF_VALID)
|
||
000056 4891 LDR r0,|L11.668|
|
||
000058 7840 LDRB r0,[r0,#1] ; g_RxBuf
|
||
00005a 284d CMP r0,#0x4d
|
||
00005c d1f8 BNE |L11.80|
|
||
00005e 488f LDR r0,|L11.668|
|
||
000060 7880 LDRB r0,[r0,#2] ; g_RxBuf
|
||
000062 2846 CMP r0,#0x46
|
||
000064 d1f4 BNE |L11.80|
|
||
;;;374 {
|
||
;;;375 print_sys_info();
|
||
000066 f7fffffe BL print_sys_info
|
||
00006a e111 B |L11.656|
|
||
|L11.108|
|
||
;;;376 }
|
||
;;;377 }
|
||
;;;378 else if (g_RxBuf[1] == 'r')
|
||
00006c 488b LDR r0,|L11.668|
|
||
00006e 7840 LDRB r0,[r0,#1] ; g_RxBuf
|
||
000070 2872 CMP r0,#0x72
|
||
000072 d178 BNE |L11.358|
|
||
;;;379 {
|
||
;;;380 // [r,10,100] // 10°/s 转到100°
|
||
;;;381 if (sscanf((char *)g_RxBuf, "[r:%f:%f]", &freq, &angle) == 2)
|
||
000074 ab05 ADD r3,sp,#0x14
|
||
000076 aa06 ADD r2,sp,#0x18
|
||
000078 a189 ADR r1,|L11.672|
|
||
00007a 4888 LDR r0,|L11.668|
|
||
00007c f7fffffe BL __0sscanf
|
||
000080 2802 CMP r0,#2
|
||
000082 d176 BNE |L11.370|
|
||
;;;382 {
|
||
;;;383 if (freq < 0.01f)
|
||
000084 4989 LDR r1,|L11.684|
|
||
000086 9806 LDR r0,[sp,#0x18]
|
||
000088 f7fffffe BL __aeabi_cfcmple
|
||
00008c d202 BCS |L11.148|
|
||
;;;384 freq = 0.01f;
|
||
00008e 4887 LDR r0,|L11.684|
|
||
000090 9006 STR r0,[sp,#0x18]
|
||
000092 e006 B |L11.162|
|
||
|L11.148|
|
||
;;;385 else if (freq > MAX_SPEED)
|
||
000094 4986 LDR r1,|L11.688|
|
||
000096 9806 LDR r0,[sp,#0x18]
|
||
000098 f7fffffe BL __aeabi_cfrcmple
|
||
00009c d201 BCS |L11.162|
|
||
;;;386 freq = MAX_SPEED;
|
||
00009e 4884 LDR r0,|L11.688|
|
||
0000a0 9006 STR r0,[sp,#0x18]
|
||
|L11.162|
|
||
;;;387 pulse = (angle / 360) * STEP_PER_LAP; // angle所有需要的脉冲
|
||
0000a2 4984 LDR r1,|L11.692|
|
||
0000a4 9805 LDR r0,[sp,#0x14]
|
||
0000a6 f7fffffe BL __aeabi_fdiv
|
||
0000aa 4606 MOV r6,r0
|
||
0000ac 4982 LDR r1,|L11.696|
|
||
0000ae f7fffffe BL __aeabi_fmul
|
||
0000b2 4605 MOV r5,r0
|
||
;;;388 freq = freq * (STEP_PER_LAP / 360.0f); // 角速度所需要的脉冲频率
|
||
0000b4 4981 LDR r1,|L11.700|
|
||
0000b6 9806 LDR r0,[sp,#0x18]
|
||
0000b8 f7fffffe BL __aeabi_fmul
|
||
0000bc 9006 STR r0,[sp,#0x18]
|
||
;;;389 g_tMoto.sv_pulse = (int64_t)pulse;
|
||
0000be 4628 MOV r0,r5
|
||
0000c0 f7fffffe BL __aeabi_f2lz
|
||
0000c4 4a7e LDR r2,|L11.704|
|
||
0000c6 e9c2010a STRD r0,r1,[r2,#0x28]
|
||
;;;390
|
||
;;;391 printf("[r] freq=%lu, angle=%f, pulse=%ld, sv_pulse=%lld\r\n", (unsigned long)freq, angle, (long)pulse, g_tMoto.sv_pulse);
|
||
0000ca 4628 MOV r0,r5
|
||
0000cc f7fffffe BL __aeabi_f2iz
|
||
0000d0 4606 MOV r6,r0
|
||
0000d2 9805 LDR r0,[sp,#0x14]
|
||
0000d4 f7fffffe BL __aeabi_f2d
|
||
0000d8 4607 MOV r7,r0
|
||
0000da 4688 MOV r8,r1
|
||
0000dc 9806 LDR r0,[sp,#0x18]
|
||
0000de f7fffffe BL __aeabi_f2uiz
|
||
0000e2 4681 MOV r9,r0
|
||
0000e4 4876 LDR r0,|L11.704|
|
||
0000e6 6ac1 LDR r1,[r0,#0x2c] ; g_tMoto
|
||
0000e8 6a80 LDR r0,[r0,#0x28] ; g_tMoto
|
||
0000ea 463a MOV r2,r7
|
||
0000ec 4643 MOV r3,r8
|
||
0000ee 9600 STR r6,[sp,#0]
|
||
0000f0 e9cd0102 STRD r0,r1,[sp,#8]
|
||
0000f4 4649 MOV r1,r9
|
||
0000f6 a073 ADR r0,|L11.708|
|
||
0000f8 f7fffffe BL __2printf
|
||
;;;392 printf("TIM6 before start: PSC=%u, ARR=%u\r\n", TIM6->PSC, TIM6->ARR);
|
||
0000fc 487e LDR r0,|L11.760|
|
||
0000fe 8d82 LDRH r2,[r0,#0x2c]
|
||
000100 8d01 LDRH r1,[r0,#0x28]
|
||
000102 a07e ADR r0,|L11.764|
|
||
000104 f7fffffe BL __2printf
|
||
;;;393
|
||
;;;394 if (g_tMoto.pv_pulse < g_tMoto.sv_pulse)
|
||
000108 486d LDR r0,|L11.704|
|
||
00010a e9d03008 LDRD r3,r0,[r0,#0x20]
|
||
00010e 4a6c LDR r2,|L11.704|
|
||
000110 e9d2120a LDRD r1,r2,[r2,#0x28]
|
||
000114 1a59 SUBS r1,r3,r1
|
||
000116 4190 SBCS r0,r0,r2
|
||
000118 da08 BGE |L11.300|
|
||
;;;395 {
|
||
;;;396 MOTO_Start(freq, 0, 123);
|
||
00011a 9806 LDR r0,[sp,#0x18]
|
||
00011c f7fffffe BL __aeabi_f2uiz
|
||
000120 4606 MOV r6,r0
|
||
000122 227b MOVS r2,#0x7b
|
||
000124 2100 MOVS r1,#0
|
||
000126 f7fffffe BL MOTO_Start
|
||
00012a e018 B |L11.350|
|
||
|L11.300|
|
||
;;;397 }
|
||
;;;398 else if (g_tMoto.pv_pulse > g_tMoto.sv_pulse)
|
||
00012c 4864 LDR r0,|L11.704|
|
||
00012e e9d0100a LDRD r1,r0,[r0,#0x28]
|
||
000132 4b63 LDR r3,|L11.704|
|
||
000134 e9d32308 LDRD r2,r3,[r3,#0x20]
|
||
000138 1a89 SUBS r1,r1,r2
|
||
00013a 4198 SBCS r0,r0,r3
|
||
00013c da08 BGE |L11.336|
|
||
;;;399 {
|
||
;;;400 MOTO_Start(freq, 1, 123);
|
||
00013e 9806 LDR r0,[sp,#0x18]
|
||
000140 f7fffffe BL __aeabi_f2uiz
|
||
000144 4606 MOV r6,r0
|
||
000146 227b MOVS r2,#0x7b
|
||
000148 2101 MOVS r1,#1
|
||
00014a f7fffffe BL MOTO_Start
|
||
00014e e006 B |L11.350|
|
||
|L11.336|
|
||
;;;401 }
|
||
;;;402 else
|
||
;;;403 {
|
||
;;;404 BEEP_Start(1500, 5, 5, 3);
|
||
000150 2303 MOVS r3,#3
|
||
000152 2205 MOVS r2,#5
|
||
000154 4611 MOV r1,r2
|
||
000156 f24050dc MOV r0,#0x5dc
|
||
00015a f7fffffe BL BEEP_Start
|
||
|L11.350|
|
||
;;;405 }
|
||
;;;406 printf("TIM6 after start: PSC=%u, ARR=%u\r\n", TIM6->PSC, TIM6->ARR);
|
||
00015e 4866 LDR r0,|L11.760|
|
||
000160 8d82 LDRH r2,[r0,#0x2c]
|
||
000162 8d01 LDRH r1,[r0,#0x28]
|
||
000164 e001 B |L11.362|
|
||
|L11.358|
|
||
000166 e08c B |L11.642|
|
||
000168 e003 B |L11.370|
|
||
|L11.362|
|
||
00016a a06d ADR r0,|L11.800|
|
||
00016c f7fffffe BL __2printf
|
||
000170 e08e B |L11.656|
|
||
|L11.370|
|
||
;;;407 }
|
||
;;;408 else if (sscanf((char *)g_RxBuf, "[rr:%f:%f]", &freq, &angle) == 2)
|
||
000172 ab05 ADD r3,sp,#0x14
|
||
000174 aa06 ADD r2,sp,#0x18
|
||
000176 a173 ADR r1,|L11.836|
|
||
000178 4848 LDR r0,|L11.668|
|
||
00017a f7fffffe BL __0sscanf
|
||
00017e 2802 CMP r0,#2
|
||
000180 d177 BNE |L11.626|
|
||
;;;409 {
|
||
;;;410 if (pulse < 0.01f)
|
||
000182 494a LDR r1,|L11.684|
|
||
000184 4628 MOV r0,r5
|
||
000186 f7fffffe BL __aeabi_cfcmple
|
||
00018a d201 BCS |L11.400|
|
||
;;;411 pulse = 0.01f;
|
||
00018c 4d47 LDR r5,|L11.684|
|
||
00018e e005 B |L11.412|
|
||
|L11.400|
|
||
;;;412 else if (pulse > MAX_SPEED)
|
||
000190 4947 LDR r1,|L11.688|
|
||
000192 4628 MOV r0,r5
|
||
000194 f7fffffe BL __aeabi_cfrcmple
|
||
000198 d200 BCS |L11.412|
|
||
;;;413 pulse = MAX_SPEED;
|
||
00019a 4d45 LDR r5,|L11.688|
|
||
|L11.412|
|
||
;;;414 pulse = (angle / 360) * STEP_PER_LAP; // angle所有需要的脉冲
|
||
00019c 4945 LDR r1,|L11.692|
|
||
00019e 9805 LDR r0,[sp,#0x14]
|
||
0001a0 f7fffffe BL __aeabi_fdiv
|
||
0001a4 4606 MOV r6,r0
|
||
0001a6 4944 LDR r1,|L11.696|
|
||
0001a8 f7fffffe BL __aeabi_fmul
|
||
0001ac 4605 MOV r5,r0
|
||
;;;415 freq = freq * (STEP_PER_LAP / 360.0f); // 角速度所需要的脉冲频率
|
||
0001ae 4943 LDR r1,|L11.700|
|
||
0001b0 9806 LDR r0,[sp,#0x18]
|
||
0001b2 f7fffffe BL __aeabi_fmul
|
||
0001b6 9006 STR r0,[sp,#0x18]
|
||
;;;416 g_tMoto.sv_pulse += (int64_t)pulse;
|
||
0001b8 4628 MOV r0,r5
|
||
0001ba f7fffffe BL __aeabi_f2lz
|
||
0001be 4a40 LDR r2,|L11.704|
|
||
0001c0 e9d2320a LDRD r3,r2,[r2,#0x28]
|
||
0001c4 18c0 ADDS r0,r0,r3
|
||
0001c6 4151 ADCS r1,r1,r2
|
||
0001c8 4a3d LDR r2,|L11.704|
|
||
0001ca e9c2010a STRD r0,r1,[r2,#0x28]
|
||
;;;417
|
||
;;;418 printf("[rr] freq=%lu, angle=%f, pulse=%ld, sv_pulse=%lld\r\n", (unsigned long)freq, angle, (long)pulse, g_tMoto.sv_pulse);
|
||
0001ce 4628 MOV r0,r5
|
||
0001d0 f7fffffe BL __aeabi_f2iz
|
||
0001d4 4606 MOV r6,r0
|
||
0001d6 9805 LDR r0,[sp,#0x14]
|
||
0001d8 f7fffffe BL __aeabi_f2d
|
||
0001dc 4607 MOV r7,r0
|
||
0001de 4688 MOV r8,r1
|
||
0001e0 9806 LDR r0,[sp,#0x18]
|
||
0001e2 f7fffffe BL __aeabi_f2uiz
|
||
0001e6 4681 MOV r9,r0
|
||
0001e8 4835 LDR r0,|L11.704|
|
||
0001ea 6ac1 LDR r1,[r0,#0x2c] ; g_tMoto
|
||
0001ec 6a80 LDR r0,[r0,#0x28] ; g_tMoto
|
||
0001ee 463a MOV r2,r7
|
||
0001f0 4643 MOV r3,r8
|
||
0001f2 9600 STR r6,[sp,#0]
|
||
0001f4 e9cd0102 STRD r0,r1,[sp,#8]
|
||
0001f8 4649 MOV r1,r9
|
||
0001fa a055 ADR r0,|L11.848|
|
||
0001fc f7fffffe BL __2printf
|
||
;;;419 printf("TIM6 before start: PSC=%u, ARR=%u\r\n", TIM6->PSC, TIM6->ARR);
|
||
000200 483d LDR r0,|L11.760|
|
||
000202 8d82 LDRH r2,[r0,#0x2c]
|
||
000204 8d01 LDRH r1,[r0,#0x28]
|
||
000206 a03d ADR r0,|L11.764|
|
||
000208 f7fffffe BL __2printf
|
||
;;;420
|
||
;;;421 if (g_tMoto.pv_pulse < g_tMoto.sv_pulse)
|
||
00020c 482c LDR r0,|L11.704|
|
||
00020e e9d01008 LDRD r1,r0,[r0,#0x20]
|
||
000212 4a2b LDR r2,|L11.704|
|
||
000214 e9d2320a LDRD r3,r2,[r2,#0x28]
|
||
000218 1ac9 SUBS r1,r1,r3
|
||
00021a 4190 SBCS r0,r0,r2
|
||
00021c da08 BGE |L11.560|
|
||
;;;422 {
|
||
;;;423 MOTO_Start(freq, 0, 123);
|
||
00021e 9806 LDR r0,[sp,#0x18]
|
||
000220 f7fffffe BL __aeabi_f2uiz
|
||
000224 4606 MOV r6,r0
|
||
000226 227b MOVS r2,#0x7b
|
||
000228 2100 MOVS r1,#0
|
||
00022a f7fffffe BL MOTO_Start
|
||
00022e e018 B |L11.610|
|
||
|L11.560|
|
||
;;;424 }
|
||
;;;425 else if (g_tMoto.pv_pulse > g_tMoto.sv_pulse)
|
||
000230 4823 LDR r0,|L11.704|
|
||
000232 e9d0100a LDRD r1,r0,[r0,#0x28]
|
||
000236 4a22 LDR r2,|L11.704|
|
||
000238 e9d23208 LDRD r3,r2,[r2,#0x20]
|
||
00023c 1ac9 SUBS r1,r1,r3
|
||
00023e 4190 SBCS r0,r0,r2
|
||
000240 da08 BGE |L11.596|
|
||
;;;426 {
|
||
;;;427 MOTO_Start(freq, 1, 123);
|
||
000242 9806 LDR r0,[sp,#0x18]
|
||
000244 f7fffffe BL __aeabi_f2uiz
|
||
000248 4606 MOV r6,r0
|
||
00024a 227b MOVS r2,#0x7b
|
||
00024c 2101 MOVS r1,#1
|
||
00024e f7fffffe BL MOTO_Start
|
||
000252 e006 B |L11.610|
|
||
|L11.596|
|
||
;;;428 }
|
||
;;;429 else
|
||
;;;430 {
|
||
;;;431 BEEP_Start(1500, 5, 5, 3);
|
||
000254 2303 MOVS r3,#3
|
||
000256 2205 MOVS r2,#5
|
||
000258 4611 MOV r1,r2
|
||
00025a f24050dc MOV r0,#0x5dc
|
||
00025e f7fffffe BL BEEP_Start
|
||
|L11.610|
|
||
;;;432 }
|
||
;;;433 printf("TIM6 after start: PSC=%u, ARR=%u\r\n", TIM6->PSC, TIM6->ARR);
|
||
000262 4825 LDR r0,|L11.760|
|
||
000264 8d82 LDRH r2,[r0,#0x2c]
|
||
000266 8d01 LDRH r1,[r0,#0x28]
|
||
000268 a02d ADR r0,|L11.800|
|
||
00026a f7fffffe BL __2printf
|
||
00026e e00f B |L11.656|
|
||
000270 e7ff B |L11.626|
|
||
|L11.626|
|
||
;;;434 }
|
||
;;;435 else
|
||
;;;436 {
|
||
;;;437 BEEP_Start(1500, 5, 5, 3);
|
||
000272 2303 MOVS r3,#3
|
||
000274 2205 MOVS r2,#5
|
||
000276 4611 MOV r1,r2
|
||
000278 f24050dc MOV r0,#0x5dc
|
||
00027c f7fffffe BL BEEP_Start
|
||
000280 e006 B |L11.656|
|
||
|L11.642|
|
||
;;;438 }
|
||
;;;439 }
|
||
;;;440 else
|
||
;;;441 {
|
||
;;;442 BEEP_Start(1500, 5, 5, 3);
|
||
000282 2303 MOVS r3,#3
|
||
000284 2205 MOVS r2,#5
|
||
000286 4611 MOV r1,r2
|
||
000288 f24050dc MOV r0,#0x5dc
|
||
00028c f7fffffe BL BEEP_Start
|
||
|L11.656|
|
||
;;;443 }
|
||
;;;444 }
|
||
;;;445 }
|
||
000290 b007 ADD sp,sp,#0x1c
|
||
000292 e8bd83f0 POP {r4-r9,pc}
|
||
;;;446
|
||
ENDP
|
||
|
||
000296 0000 DCW 0x0000
|
||
|L11.664|
|
||
DCD g_ucRxRcvNewFlag
|
||
|L11.668|
|
||
DCD g_RxBuf
|
||
|L11.672|
|
||
0002a0 5b723a25 DCB "[r:%f:%f]",0
|
||
0002a4 663a2566
|
||
0002a8 5d00
|
||
0002aa 00 DCB 0
|
||
0002ab 00 DCB 0
|
||
|L11.684|
|
||
DCD 0x3c23d70a
|
||
|L11.688|
|
||
DCD 0x43c80000
|
||
|L11.692|
|
||
DCD 0x43b40000
|
||
|L11.696|
|
||
DCD 0x46043400
|
||
|L11.700|
|
||
DCD 0x41bc05b0
|
||
|L11.704|
|
||
DCD g_tMoto
|
||
|L11.708|
|
||
0002c4 5b725d20 DCB "[r] freq=%lu, angle=%f, pulse=%ld, sv_pulse=%lld\r\n",0
|
||
0002c8 66726571
|
||
0002cc 3d256c75
|
||
0002d0 2c20616e
|
||
0002d4 676c653d
|
||
0002d8 25662c20
|
||
0002dc 70756c73
|
||
0002e0 653d256c
|
||
0002e4 642c2073
|
||
0002e8 765f7075
|
||
0002ec 6c73653d
|
||
0002f0 256c6c64
|
||
0002f4 0d0a00
|
||
0002f7 00 DCB 0
|
||
|L11.760|
|
||
DCD 0x40001000
|
||
|L11.764|
|
||
0002fc 54494d36 DCB "TIM6 before start: PSC=%u, ARR=%u\r\n",0
|
||
000300 20626566
|
||
000304 6f726520
|
||
000308 73746172
|
||
00030c 743a2050
|
||
000310 53433d25
|
||
000314 752c2041
|
||
000318 52523d25
|
||
00031c 750d0a00
|
||
|L11.800|
|
||
000320 54494d36 DCB "TIM6 after start: PSC=%u, ARR=%u\r\n",0
|
||
000324 20616674
|
||
000328 65722073
|
||
00032c 74617274
|
||
000330 3a205053
|
||
000334 433d2575
|
||
000338 2c204152
|
||
00033c 523d2575
|
||
000340 0d0a00
|
||
000343 00 DCB 0
|
||
|L11.836|
|
||
000344 5b72723a DCB "[rr:%f:%f]",0
|
||
000348 25663a25
|
||
00034c 665d00
|
||
00034f 00 DCB 0
|
||
|L11.848|
|
||
000350 5b72725d DCB "[rr] freq=%lu, angle=%f, pulse=%ld, sv_pulse=%lld\r\n",0
|
||
000354 20667265
|
||
000358 713d256c
|
||
00035c 752c2061
|
||
000360 6e676c65
|
||
000364 3d25662c
|
||
000368 2070756c
|
||
00036c 73653d25
|
||
000370 6c642c20
|
||
000374 73765f70
|
||
000378 756c7365
|
||
00037c 3d256c6c
|
||
000380 640d0a00
|
||
|
||
AREA ||.conststring||, DATA, READONLY, MERGE=1, STRINGS, ALIGN=2
|
||
|
||
000000 352e205b DCB "5. [r:10:360] // ",232,189,172,229,138,168,229,145,189,228
|
||
000004 723a3130
|
||
000008 3a333630
|
||
00000c 5d202f2f
|
||
000010 20e8bdac
|
||
000014 e58aa8e5
|
||
000018 91bde4
|
||
00001b bba4efbc DCB 187,164,239,188,140,"10",228,184,186,232,189,172,229,138
|
||
00001f 8c3130e4
|
||
000023 b8bae8bd
|
||
000027 ace58a
|
||
00002a a8e8a792 DCB 168,232,167,146,233,128,159,229,186,166,239,188,140,"360"
|
||
00002e e9809fe5
|
||
000032 baa6efbc
|
||
000036 8c333630
|
||
00003a e4b8bae7 DCB 228,184,186,231,155,174,230,160,135,232,167,146,229,186,166
|
||
00003e 9baee6a0
|
||
000042 87e8a792
|
||
000046 e5baa6
|
||
000049 5c720a00 DCB "\\r\n",0
|
||
00004d 00 DCB 0
|
||
00004e 00 DCB 0
|
||
00004f 00 DCB 0
|
||
000050 362e205b DCB "6. [rr:10:20] // ",232,189,172,229,138,168,229,145,189,228
|
||
000054 72723a31
|
||
000058 303a3230
|
||
00005c 5d202f2f
|
||
000060 20e8bdac
|
||
000064 e58aa8e5
|
||
000068 91bde4
|
||
00006b bba4efbc DCB 187,164,239,188,140,"10",228,184,186,232,189,172,229,138
|
||
00006f 8c3130e4
|
||
000073 b8bae8bd
|
||
000077 ace58a
|
||
00007a a8e8a792 DCB 168,232,167,146,233,128,159,229,186,166,239,188,140,"20",228
|
||
00007e e9809fe5
|
||
000082 baa6efbc
|
||
000086 8c3230e4
|
||
00008a b8bae79b DCB 184,186,231,155,184,229,175,185,232,189,172,229,138,168,232
|
||
00008e b8e5afb9
|
||
000092 e8bdace5
|
||
000096 8aa8e8
|
||
000099 a792e5ba DCB 167,146,229,186,166,"\\r\n",0
|
||
00009d a65c720a
|
||
0000a1 00
|
||
|
||
AREA ||.data||, DATA, ALIGN=0
|
||
|
||
Flag_100ms
|
||
000000 00 DCB 0x00
|
||
|
||
;*** Start embedded assembler ***
|
||
|
||
#line 1 "..\\..\\User\\app\\src\\main.c"
|
||
AREA ||.rev16_text||, CODE
|
||
THUMB
|
||
EXPORT |__asm___6_main_c_34afbc26____REV16|
|
||
#line 114 "..\\..\\Libraries\\CMSIS\\Include\\core_cmInstr.h"
|
||
|__asm___6_main_c_34afbc26____REV16| PROC
|
||
#line 115
|
||
|
||
rev16 r0, r0
|
||
bx lr
|
||
ENDP
|
||
AREA ||.revsh_text||, CODE
|
||
THUMB
|
||
EXPORT |__asm___6_main_c_34afbc26____REVSH|
|
||
#line 128
|
||
|__asm___6_main_c_34afbc26____REVSH| PROC
|
||
#line 129
|
||
|
||
revsh r0, r0
|
||
bx lr
|
||
ENDP
|
||
|
||
;*** End embedded assembler ***
|
||
|
||
__ARM_use_no_argv EQU 0
|