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

📄 bsp_button.txt

📁 stm32-SDIO+FatFS文件系统txt-int-ascii
💻 TXT
📖 第 1 页 / 共 4 页
字号:
00004a  4288              CMP      r0,r1
00004c  da0a              BGE      |L10.100|
;;;395    				{
;;;396    					/* 发送按钮持续按下的消息 */
;;;397    					if (++_pBtn->LongCount == _pBtn->LongTime)
00004e  88e0              LDRH     r0,[r4,#6]
000050  1c40              ADDS     r0,r0,#1
000052  b280              UXTH     r0,r0
000054  80e0              STRH     r0,[r4,#6]
000056  8921              LDRH     r1,[r4,#8]
000058  4288              CMP      r0,r1
00005a  d12e              BNE      |L10.186|
;;;398    					{
;;;399    						/* 键值放入按键FIFO */
;;;400    						bsp_PutKey(_pBtn->KeyCodeLong);						
00005c  7b60              LDRB     r0,[r4,#0xd]
00005e  f7fffffe          BL       bsp_PutKey
000062  e02a              B        |L10.186|
                  |L10.100|
;;;401    					}
;;;402    				}
;;;403    				else
;;;404    				{
;;;405    					if (_pBtn->RepeatSpeed > 0)
000064  7ba0              LDRB     r0,[r4,#0xe]
000066  2800              CMP      r0,#0
000068  dd27              BLE      |L10.186|
;;;406    					{
;;;407    						if (++_pBtn->RepeatCount >= _pBtn->RepeatSpeed)
00006a  7be0              LDRB     r0,[r4,#0xf]
00006c  1c40              ADDS     r0,r0,#1
00006e  b2c0              UXTB     r0,r0
000070  73e0              STRB     r0,[r4,#0xf]
000072  7ba1              LDRB     r1,[r4,#0xe]
000074  4288              CMP      r0,r1
000076  db20              BLT      |L10.186|
;;;408    						{
;;;409    							_pBtn->RepeatCount = 0;
000078  2000              MOVS     r0,#0
00007a  73e0              STRB     r0,[r4,#0xf]
;;;410    							/* 常按键后,每隔10ms发送1个按键 */
;;;411    							bsp_PutKey(_pBtn->KeyCodeDown);														
00007c  7b20              LDRB     r0,[r4,#0xc]
00007e  f7fffffe          BL       bsp_PutKey
000082  e01a              B        |L10.186|
                  |L10.132|
;;;412    						}
;;;413    					}
;;;414    				}
;;;415    			}
;;;416    		}
;;;417    	}
;;;418    	else
;;;419    	{
;;;420    		if(_pBtn->Count > _pBtn->FilterTime)
000084  7920              LDRB     r0,[r4,#4]
000086  7961              LDRB     r1,[r4,#5]
000088  4288              CMP      r0,r1
00008a  dd02              BLE      |L10.146|
;;;421    		{
;;;422    			_pBtn->Count = _pBtn->FilterTime;
00008c  7960              LDRB     r0,[r4,#5]
00008e  7120              STRB     r0,[r4,#4]
000090  e010              B        |L10.180|
                  |L10.146|
;;;423    		}
;;;424    		else if(_pBtn->Count != 0)
000092  7920              LDRB     r0,[r4,#4]
000094  b118              CBZ      r0,|L10.158|
;;;425    		{
;;;426    			_pBtn->Count--;
000096  7920              LDRB     r0,[r4,#4]
000098  1e40              SUBS     r0,r0,#1
00009a  7120              STRB     r0,[r4,#4]
00009c  e00a              B        |L10.180|
                  |L10.158|
;;;427    		}
;;;428    		else
;;;429    		{
;;;430    			if (_pBtn->State == 1)
00009e  7aa0              LDRB     r0,[r4,#0xa]
0000a0  2801              CMP      r0,#1
0000a2  d107              BNE      |L10.180|
;;;431    			{
;;;432    				_pBtn->State = 0;
0000a4  2000              MOVS     r0,#0
0000a6  72a0              STRB     r0,[r4,#0xa]
;;;433    
;;;434    				/* 发送按钮弹起的消息 */
;;;435    				if (_pBtn->KeyCodeUp > 0)
0000a8  7ae0              LDRB     r0,[r4,#0xb]
0000aa  2800              CMP      r0,#0
0000ac  dd02              BLE      |L10.180|
;;;436    				{
;;;437    					/* 键值放入按键FIFO */
;;;438    					bsp_PutKey(_pBtn->KeyCodeUp);			
0000ae  7ae0              LDRB     r0,[r4,#0xb]
0000b0  f7fffffe          BL       bsp_PutKey
                  |L10.180|
;;;439    				}
;;;440    			}
;;;441    		}
;;;442    
;;;443    		_pBtn->LongCount = 0;
0000b4  2000              MOVS     r0,#0
0000b6  80e0              STRH     r0,[r4,#6]
;;;444    		_pBtn->RepeatCount = 0;
0000b8  73e0              STRB     r0,[r4,#0xf]
                  |L10.186|
;;;445    	}
;;;446    }
0000ba  bd10              POP      {r4,pc}
;;;447    
                          ENDP


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

                  bsp_GetKey PROC
;;;109    */
;;;110    uint8_t bsp_GetKey(void)
000000  480b              LDR      r0,|L11.48|
;;;111    {
;;;112    	uint8_t ret;
;;;113    
;;;114    	if (s_Key.Read == s_Key.Write)
000002  7d00              LDRB     r0,[r0,#0x14]  ; s_Key
000004  4a0a              LDR      r2,|L11.48|
000006  7d52              LDRB     r2,[r2,#0x15]  ; s_Key
000008  4290              CMP      r0,r2
00000a  d101              BNE      |L11.16|
;;;115    	{
;;;116    		return KEY_NONE;
00000c  2000              MOVS     r0,#0
                  |L11.14|
;;;117    	}
;;;118    	else
;;;119    	{
;;;120    		ret = s_Key.Buf[s_Key.Read];
;;;121    
;;;122    		if (++s_Key.Read >= KEY_FIFO_SIZE)
;;;123    		{
;;;124    			s_Key.Read = 0;
;;;125    		}
;;;126    		return ret;
;;;127    	}
;;;128    }
00000e  4770              BX       lr
                  |L11.16|
000010  4807              LDR      r0,|L11.48|
000012  7d00              LDRB     r0,[r0,#0x14]         ;120  ; s_Key
000014  4a06              LDR      r2,|L11.48|
000016  5c11              LDRB     r1,[r2,r0]            ;120
000018  4610              MOV      r0,r2                 ;122
00001a  7d00              LDRB     r0,[r0,#0x14]         ;122  ; s_Key
00001c  1c40              ADDS     r0,r0,#1              ;122
00001e  b2c0              UXTB     r0,r0                 ;122
000020  7510              STRB     r0,[r2,#0x14]         ;122
000022  2814              CMP      r0,#0x14              ;122
000024  db01              BLT      |L11.42|
000026  2000              MOVS     r0,#0                 ;124
000028  7510              STRB     r0,[r2,#0x14]         ;124
                  |L11.42|
00002a  4608              MOV      r0,r1                 ;126
00002c  e7ef              B        |L11.14|
;;;129    
                          ENDP

00002e  0000              DCW      0x0000
                  |L11.48|
                          DCD      s_Key

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

                  bsp_InitButton PROC
;;;77     */
;;;78     void bsp_InitButton(void)
000000  b510              PUSH     {r4,lr}
;;;79     {
;;;80     	bsp_InitButtonVar();		/* 初始化按键变量 */
000002  f7fffffe          BL       bsp_InitButtonVar
;;;81     	bsp_InitButtonHard();		/* 初始化按键硬件 */
000006  f7fffffe          BL       bsp_InitButtonHard
;;;82     }
00000a  bd10              POP      {r4,pc}
;;;83     
                          ENDP


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

                  bsp_InitButtonHard PROC
;;;187    */
;;;188    static void bsp_InitButtonHard(void)
000000  b508              PUSH     {r3,lr}
;;;189    {
;;;190    	GPIO_InitTypeDef GPIO_InitStructure;
;;;191    
;;;192    	/*
;;;193    	安富莱STM32F103ZE-EK 按键口线分配:
;;;194    	USER键     : PG8  (低电平表示按下)
;;;195    	TAMPEER键  : PC13 (低电平表示按下)
;;;196    	WKUP键     : PA0  (!!!高电平表示按下)
;;;197    	摇杆UP键   : PG15 (低电平表示按下)
;;;198    	摇杆DOWN键 : PD3  (低电平表示按下)
;;;199    	摇杆LEFT键 : PG14 (低电平表示按下)
;;;200    	摇杆RIGHT键: PG13 (低电平表示按下)
;;;201    	摇杆OK键   : PG7 (低电平表示按下)
;;;202    	*/
;;;203    			
;;;204    	/* 第1步:打开GPIOA GPIOC GPIOD GPIOF GPIOG的时钟
;;;205    	   注意:这个地方可以一次性全打开
;;;206    	*/
;;;207    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC
000002  2101              MOVS     r1,#1
000004  f44f709a          MOV      r0,#0x134
000008  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;208    			| RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOG, ENABLE);
;;;209    	
;;;210    	/* 第2步:配置所有的按键GPIO为浮动输入模式(实际上CPU复位后就是输入状态) */
;;;211    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
00000c  2001              MOVS     r0,#1
00000e  f8ad0000          STRH     r0,[sp,#0]
;;;212    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
000012  2004              MOVS     r0,#4
000014  f88d0003          STRB     r0,[sp,#3]
;;;213    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000018  2003              MOVS     r0,#3
00001a  f88d0002          STRB     r0,[sp,#2]
;;;214    	GPIO_Init(GPIOA, &GPIO_InitStructure);	/* PA0 */
00001e  4669              MOV      r1,sp
000020  480d              LDR      r0,|L13.88|
000022  f7fffffe          BL       GPIO_Init
;;;215    	
;;;216    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
000026  f44f5000          MOV      r0,#0x2000
00002a  f8ad0000          STRH     r0,[sp,#0]
;;;217    	GPIO_Init(GPIOC, &GPIO_InitStructure);	/* PC13 */
00002e  4669              MOV      r1,sp
000030  480a              LDR      r0,|L13.92|
000032  f7fffffe          BL       GPIO_Init
;;;218    	
;;;219    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
000036  2008              MOVS     r0,#8
000038  f8ad0000          STRH     r0,[sp,#0]
;;;220    	GPIO_Init(GPIOD, &GPIO_InitStructure);	/* PD3 */
00003c  4669              MOV      r1,sp
00003e  4808              LDR      r0,|L13.96|
000040  f7fffffe          BL       GPIO_Init
;;;221    	
;;;222    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_13
000044  f24e1080          MOV      r0,#0xe180
000048  f8ad0000          STRH     r0,[sp,#0]
;;;223    					  | GPIO_Pin_14 | GPIO_Pin_15;
;;;224    	GPIO_Init(GPIOG, &GPIO_InitStructure);	/* PG7,8,13,14,15 */
00004c  4669              MOV      r1,sp
00004e  4805              LDR      r0,|L13.100|
000050  f7fffffe          BL       GPIO_Init
;;;225    }
000054  bd08              POP      {r3,pc}
;;;226    	
                          ENDP

000056  0000              DCW      0x0000
                  |L13.88|
                          DCD      0x40010800
                  |L13.92|
                          DCD      0x40011000
                  |L13.96|
                          DCD      0x40011400
                  |L13.100|
                          DCD      0x40012000

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

                  bsp_InitButtonVar PROC
;;;235    */
;;;236    static void bsp_InitButtonVar(void)
000000  2000              MOVS     r0,#0
;;;237    {
;;;238    	/* 对按键FIFO读写指针清零 */
;;;239    	s_Key.Read = 0;
000002  4970              LDR      r1,|L14.452|
000004  7508              STRB     r0,[r1,#0x14]
;;;240    	s_Key.Write = 0;
000006  7548              STRB     r0,[r1,#0x15]
;;;241    
;;;242    	/* 初始化USER按键变量,支持按下、弹起、长按 */

⌨️ 快捷键说明

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