You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TM4C123G开发板ARM汇编程序:按钮GPIO初始化问题咨询

TM4C123G GPIO按钮初始化(ARM汇编实现)

假设你用开发板自带的用户按钮(通常接PA0引脚,默认是NMI功能,需解锁才能作为普通GPIO使用),以下是完整的初始化步骤、汇编代码,以及按钮状态读取、消抖的实现思路,方便对接你的LED模式切换逻辑。

一、核心初始化步骤(汇编代码)

1. 使能GPIOA端口时钟

TM4C所有外设必须先开启对应时钟才能操作,GPIOA的时钟控制位在SYSCTL_RCGCGPIO_R寄存器的第0位:

; 使能GPIOA时钟
LDR R0, =SYSCTL_RCGCGPIO_R
LDR R1, [R0]
ORR R1, R1, #0x01        ; 置位第0位,开启GPIOA时钟
STR R1, [R0]

; 等待时钟稳定(可选但推荐)
LDR R0, =SYSCTL_PRGPIO_R
WAIT_GPIOA:
LDR R1, [R0]
ANDS R1, R1, #0x01
BEQ WAIT_GPIOA

2. 解锁PA0引脚(关键步骤!)

PA0默认被锁定为NMI功能,必须先解锁才能配置为普通GPIO:

; 解锁GPIOA锁定寄存器
LDR R0, =GPIOA_LOCK_R
LDR R1, =0x4C4F434B      ; 解锁密钥固定为0x4C4F434B
STR R1, [R0]

; 允许修改PA0的配置寄存器
LDR R0, =GPIOA_CR_R
LDR R1, [R0]
ORR R1, R1, #0x01        ; 置位第0位,允许修改PA0配置
STR R1, [R0]

3. 配置引脚为上拉输入

按钮通常接地,配置上拉电阻后,未按压时引脚为高电平,按压时为低电平:

; 启用PA0上拉电阻
LDR R0, =GPIOA_PUR_R
LDR R1, [R0]
ORR R1, R1, #0x01        ; 置位第0位,启用上拉
STR R1, [R0]

; 设置PA0为输入方向
LDR R0, =GPIOA_DIR_R
LDR R1, [R0]
BIC R1, R1, #0x01        ; 清零第0位,设置为输入
STR R1, [R0]

; 启用PA0数字功能
LDR R0, =GPIOA_DEN_R
LDR R1, [R0]
ORR R1, R1, #0x01        ; 置位第0位,启用数字输入
STR R1, [R0]

二、读取按钮状态与消抖

机械按钮会产生抖动,直接读取会导致误判,建议添加简单延时消抖:

; 读取PA0按钮状态,返回R1=0表示按下,R1=1表示未按
READ_BUTTON:
LDR R0, =GPIOA_DATA_R
LDR R1, [R0]
AND R1, R1, #0x01        ; 提取PA0状态
CMP R1, #0
BEQ CHECK_DEBOUNCE       ; 检测到低电平,进入消抖
BX LR

CHECK_DEBOUNCE:
BL DELAY_10MS            ; 调用10ms延时子程序
LDR R0, =GPIOA_DATA_R
LDR R2, [R0]
AND R2, R2, #0x01
CMP R2, #0
BEQ BUTTON_PRESSED       ; 延时后仍为低电平,确认按下
BX LR

BUTTON_PRESSED:
; 这里添加模式切换逻辑,比如切换LED移位方向/模式
; 注意处理单次按压(等待按钮释放)
WAIT_RELEASE:
LDR R0, =GPIOA_DATA_R
LDR R2, [R0]
AND R2, R2, #0x01
CMP R2, #1
BEQ WAIT_RELEASE
BX LR

; 简单的10ms延时子程序(假设主频80MHz,可根据实际主频调整循环次数)
DELAY_10MS:
LDR R3, =800000          ; 80MHz下,循环800000次约10ms
DELAY_LOOP:
SUBS R3, R3, #1
BNE DELAY_LOOP
BX LR

三、对接LED模式切换逻辑

在BUTTON_PRESSED处,可设置一个模式寄存器(比如R4),每次按下时切换值:

BUTTON_PRESSED:
CMP R4, #0
BEQ MODE1
MOV R4, #0
BX LR
MODE1:
MOV R4, #1
BX LR

之后在LED移位的主循环中,根据R4的值选择不同的移位方向或点亮逻辑即可。

内容的提问来源于stack exchange,提问作者euniquity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:50:22