【发布时间】:2014-10-19 19:40:14
【问题描述】:
所以我正在学习 ASM,并拥有一个 LM4F120XL ARM Cortex-M4 MCU。 我正在使用 Keil uVision V4.54。
我熟悉设置端口等,初始化 GPIO 和 UART。
我坚持的是读写,例如通过串行到 TeraTerm/Putty。
我理解 RxFE = 0,FIFO 不为空 - 从中读取; 并且 TxFF = 0,FIFO 未满 - 写入它..
但是在比较并满足这些条件之后,我实际上将什么数据写入 UART_DR,即数据寄存器..?是否只是将数据寄存器加载到寄存器中,将此地址处的值加载到另一个寄存器中,然后......我丢失了,因为我没有更改位我正在添加新数据 - 然后你会从这个寄存器回到数据寄存器寄存器..
所以如果数据寄存器中存在数据,那么它会及时传递出去..? 我可以使用正确的 COM 端口连接到 TeraTerm,调整 BAUD 和 PARITY 设置。但是再一次,如果数据寄存器中存在数据,在到期周期后会自动发送它..?
另外,如何从键盘读取字符..?或其他计算机外围设备..是否知道地址,将值加载到寄存器中,然后将其存储到数据寄存器中?如果 Data-Register 保存数据,那么这将需要以非破坏性方式完成..
为什么每篇关于 MCU 编码的文章都是用 C++ 而不是 ASM 编写的? 我也在学习 C++ 但不知道为什么没有人使用汇编/机器代码..
;-------
读取字符
PUSH {R0, R1}
inloop LDR R0, =UART_FR LDR R1, [R0] 与 R1,#0x10 CMP R1,#0x0 BNE 内循环
LDR R0, =UART_DR
LDR R1, [R0]
************??
STR R1, [R0]
POP {R0, R1}
BX LR
;-------
输出字符
PUSH {R0, R1}
outloop LDR R0, =UART_FR LDR R1, [R0] 与 R1,#0x20 CMP R1,#0x0 BNE 外环回
LDR R0, =UART_DR
LDR R1, [R0]
************??
STR R1, [R0]
POP {R0, R1}
BX LR
;-------
【问题讨论】:
-
欢迎您!在 SO 上,我们通常不使用称呼和其他无关内容,例如“帮助”/“提前致谢”/等。我们并不想表现得不友善,我们大多只是想保持简短。查看帮助部分或 Meta 以了解有关该网站如何运作的更多信息!