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

📄 bsp_timer.txt

📁 stm32-SDIO+FatFS文件系统txt-int-ascii
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 561]
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Flash\Obj\bsp_timer.o --depend=.\Flash\Obj\bsp_timer.d --cpu=Cortex-M3 --apcs=interwork -O0 --diag_suppress=870 -I..\..\Libraries\CMSIS\CM3\CoreSupport -I..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\User\bsp -I..\..\User\fatfs -I..\..\User -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER ..\..\User\bsp\bsp_timer.c]
                          THUMB

                          AREA ||i.SysTick_ISR||, CODE, READONLY, ALIGN=2

                  SysTick_ISR PROC
;;;68     */
;;;69     void SysTick_ISR(void)
000000  b510              PUSH     {r4,lr}
;;;70     {
;;;71     	static uint8_t s_count = 0;
;;;72     	uint8_t i;
;;;73     
;;;74     	for (i = 0; i < TMR_COUNT; i++)
000002  2400              MOVS     r4,#0
000004  e006              B        |L1.20|
                  |L1.6|
;;;75     	{
;;;76     		bsp_SoftTimerDec(&g_Tmr[i]);
000006  4912              LDR      r1,|L1.80|
000008  eb0100c4          ADD      r0,r1,r4,LSL #3
00000c  f7fffffe          BL       bsp_SoftTimerDec
000010  1c60              ADDS     r0,r4,#1              ;74
000012  b2c4              UXTB     r4,r0                 ;74
                  |L1.20|
000014  2c04              CMP      r4,#4                 ;74
000016  dbf6              BLT      |L1.6|
;;;77     	}
;;;78     
;;;79     	g_iRunTime++;	/* 全局运行时间每1ms增1 */	
000018  480e              LDR      r0,|L1.84|
00001a  6800              LDR      r0,[r0,#0]  ; g_iRunTime
00001c  1c40              ADDS     r0,r0,#1
00001e  490d              LDR      r1,|L1.84|
000020  6008              STR      r0,[r1,#0]  ; g_iRunTime
;;;80     	if (g_iRunTime == 0x7FFFFFFF)
000022  4608              MOV      r0,r1
000024  6800              LDR      r0,[r0,#0]  ; g_iRunTime
000026  f06f4100          MVN      r1,#0x80000000
00002a  4288              CMP      r0,r1
00002c  d102              BNE      |L1.52|
;;;81     	{
;;;82     		g_iRunTime = 0;
00002e  2000              MOVS     r0,#0
000030  4908              LDR      r1,|L1.84|
000032  6008              STR      r0,[r1,#0]  ; g_iRunTime
                  |L1.52|
;;;83     	}
;;;84     		
;;;85     	if (++s_count >= 10)
000034  4808              LDR      r0,|L1.88|
000036  7800              LDRB     r0,[r0,#0]  ; s_count
000038  1c40              ADDS     r0,r0,#1
00003a  b2c0              UXTB     r0,r0
00003c  4906              LDR      r1,|L1.88|
00003e  7008              STRB     r0,[r1,#0]
000040  280a              CMP      r0,#0xa
000042  db03              BLT      |L1.76|
;;;86     	{
;;;87     		s_count = 0;
000044  2000              MOVS     r0,#0
000046  7008              STRB     r0,[r1,#0]
;;;88     
;;;89     
;;;90     
;;;91     		/* 
;;;92     			下面的代码实现所有按键的检测。按键检测每隔10ms一次就行了,一般做40ms的滤波处理就可以
;;;93     			有效过滤掉机械动作造成的按键抖动。
;;;94     		*/
;;;95     		bsp_KeyPro();		/* 该函数在 bsp_button.c 中实现 */
000048  f7fffffe          BL       bsp_KeyPro
                  |L1.76|
;;;96     	}
;;;97     }
00004c  bd10              POP      {r4,pc}
;;;98     
                          ENDP

00004e  0000              DCW      0x0000
                  |L1.80|
                          DCD      g_Tmr
                  |L1.84|
                          DCD      g_iRunTime
                  |L1.88|
                          DCD      s_count

                          AREA ||i.__set_PRIMASK||, CODE, READONLY, ALIGN=1

                  __set_PRIMASK PROC
;;;986     */
;;;987    static __INLINE void __set_PRIMASK(uint32_t priMask)
000000  f3808810          MSR      PRIMASK,r0
;;;988    {
;;;989      register uint32_t __regPriMask         __ASM("primask");
;;;990      __regPriMask = (priMask);
;;;991    }
000004  4770              BX       lr
;;;992    
                          ENDP


                          AREA ||i.bsp_CheckTimer||, CODE, READONLY, ALIGN=2

                  bsp_CheckTimer PROC
;;;188    */
;;;189    uint8_t bsp_CheckTimer(uint8_t _id)
000000  4601              MOV      r1,r0
;;;190    {
;;;191    	if (_id >= TMR_COUNT)
000002  2904              CMP      r1,#4
000004  db01              BLT      |L3.10|
;;;192    	{
;;;193    		return 0;
000006  2000              MOVS     r0,#0
                  |L3.8|
;;;194    	}
;;;195    
;;;196    	if (g_Tmr[_id].flag == 1)
;;;197    	{
;;;198    		g_Tmr[_id].flag = 0;
;;;199    		return 1;
;;;200    	}
;;;201    	else
;;;202    	{
;;;203    		return 0;
;;;204    	}
;;;205    }
000008  4770              BX       lr
                  |L3.10|
00000a  4807              LDR      r0,|L3.40|
00000c  eb0000c1          ADD      r0,r0,r1,LSL #3       ;196
000010  7900              LDRB     r0,[r0,#4]            ;196
000012  2801              CMP      r0,#1                 ;196
000014  d106              BNE      |L3.36|
000016  2000              MOVS     r0,#0                 ;198
000018  4a03              LDR      r2,|L3.40|
00001a  eb0202c1          ADD      r2,r2,r1,LSL #3       ;198
00001e  7110              STRB     r0,[r2,#4]            ;198
000020  2001              MOVS     r0,#1                 ;199
000022  e7f1              B        |L3.8|
                  |L3.36|
000024  2000              MOVS     r0,#0                 ;203
000026  e7ef              B        |L3.8|
;;;206    
                          ENDP

                  |L3.40|
                          DCD      g_Tmr

                          AREA ||i.bsp_DelayMS||, CODE, READONLY, ALIGN=2

                  bsp_DelayMS PROC
;;;129    */
;;;130    void bsp_DelayMS(uint32_t n)
000000  b510              PUSH     {r4,lr}
;;;131    {
000002  4604              MOV      r4,r0
;;;132    	/* 避免 n = 1 出现主程序死锁 */
;;;133    	if (n <= 1)
000004  2c01              CMP      r4,#1
000006  d800              BHI      |L4.10|
;;;134    	{
;;;135    		n = 2;
000008  2402              MOVS     r4,#2
                  |L4.10|
;;;136    	}
;;;137    	
;;;138    	__set_PRIMASK(1);  		/* 关中断 */
00000a  2001              MOVS     r0,#1
00000c  f7fffffe          BL       __set_PRIMASK
;;;139    	g_Tmr[0].count = n;
000010  4807              LDR      r0,|L4.48|
000012  6004              STR      r4,[r0,#0]  ; g_Tmr
;;;140    	g_Tmr[0].flag = 0;
000014  2000              MOVS     r0,#0
000016  4906              LDR      r1,|L4.48|
000018  7108              STRB     r0,[r1,#4]
;;;141    	__set_PRIMASK(0);  		/* 开中断 */
00001a  f7fffffe          BL       __set_PRIMASK
;;;142    
;;;143    	while (1)
00001e  e004              B        |L4.42|
                  |L4.32|
;;;144    	{
;;;145    		CPU_IDLE();	/* 此处是空操作。用户可以定义,让CPU进入IDLE状态,以降低功耗;或实现喂狗 */
;;;146    
;;;147    		/* 等待延迟时间到 */
;;;148    		if (g_Tmr[0].flag == 1)
000020  4803              LDR      r0,|L4.48|
000022  7900              LDRB     r0,[r0,#4]  ; g_Tmr
000024  2801              CMP      r0,#1
000026  d100              BNE      |L4.42|
;;;149    		{
;;;150    			break;
000028  e000              B        |L4.44|
                  |L4.42|
00002a  e7f9              B        |L4.32|
                  |L4.44|
00002c  bf00              NOP      
;;;151    		}
;;;152    	}
;;;153    }
00002e  bd10              POP      {r4,pc}
;;;154    
                          ENDP

                  |L4.48|
                          DCD      g_Tmr

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -