在线时间568 小时
UID3436040
注册时间2018-5-6
NXP金币3437
TA的每日心情 | 开心 19 分钟前 |
|---|
签到天数: 1315 天 连续签到: 27 天 [LV.10]以坛为家III
金牌会员
 
- 积分
- 17253
- 最后登录
- 2026-2-5
|
# 模拟NXP RT2021串口通信实现
import time
# 系统配置参数
SYSTEM_CLOCK = 24000000 # 24MHz系统时钟
UART_INSTANCE = 0 # 使用UART0
BAUD_RATE = 115200 # 115200波特率
DATA_BITS = 8 # 8位数据位
STOP_BITS = 1 # 1位停止位
PARITY = 'None' # 无校验
# 模拟硬件寄存器结构
class UART_Type:
def __init__(self):
self.CTRL = 0
self.STAT = 0
self.DATA = 0
self.BAUD = 0
# 全局硬件实例
UART0 = UART_Type()
def BOARD_UART_Init():
"""初始化UART配置"""
# 配置波特率(115200)
UART0.BAUD = (SYSTEM_CLOCK // BAUD_RATE) - 1
# 配置数据格式:8数据位,1停止位,无校验
UART0.CTRL = (DATA_BITS << 8) | (STOP_BITS << 12)
# 使能UART模块
UART0.CTRL |= (1 << 0)
# 清除状态标志
UART0.STAT = 0xFFFF
def UART_WriteByte(base, data):
"""发送单个字节"""
# 等待发送就绪(TX就绪)
while not (base.STAT & (1 << 1)):
pass
# 写入数据到DATA寄存器
base.DATA = data
# 等待发送完成
while not (base.STAT & (1 << 2)):
pass
def UART_SendString(base, s):
"""发送字符串"""
for char in s:
UART_WriteByte(base, ord(char))
def main():
"""主程序"""
# 模拟系统初始化
print("系统初始化完成")
# 初始化UART
BOARD_UART_Init()
print("UART初始化完成,波特率115200 8N1")
while True:
# 发送"Hello world"
UART_SendString(UART0, "Hello world\r\n")
print("发送完成:Hello world")
# 延时1秒
time.sleep(1)
# 执行主程序
if __name__ == "__main__":
main()
|
|