当前位置: 首页 > news >正文

第三章 基于rtthread标准库的串口和shell应用

1 串口介绍

STM32F429IGT6 最多可提供 8 路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持 LIN、支持调制解调器操作、智能卡协议和 IrDA SIR ENDEC 规范、具有 DMA 等。

1,串口时钟使能。串口作为 STM32F429 的一个外设,其时钟由外设时钟使能寄存器控制,这里我们使用的串口 1 是在 APB2ENR 寄存器的第 4 位。APB2ENR 寄存器在之前已经介绍过,这里不再介绍。只是说明一点,就是除了串口 1 和串口 6 的时钟使能在 APB2ENR 寄存器,其他串口的时钟使能位都在 APB1ENR 寄存器。

2,串口波特率设置。在 5.3.2 节,我们已经介绍过了,每个串口都有一个自己独立的波特率寄存器 USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的。具体实现方法。

3,串口控制。STM32F429 的每个串口都有 3 个控制寄存器 USART_CR1~3,串口的很多配置都是通过这 3 个寄存器来设置的。这里我们只要用到 USART_CR1 就可以实现我们的功能了。

在这里插入图片描述
起始位:表示数据传输的开始,电平逻辑为 “0” 。

数据位:可能值有 5、6、7、8、9,表示传输这几个 bit 位数据。一般取值为 8,因为一个 ASCII 字符值为 8 位。

奇偶校验位:用于接收方对接收到的数据进行校验,校验 “1” 的位数为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性,使用时不需要此位也可以。

停止位: 表示一帧数据的结束。电平逻辑为 “1”。

波特率:串口通信时的速率,它用单位时间内传输的二进制代码的有效位(bit)数来表示,其单位为每秒比特数 bit/s(bps)。常见的波特率值有 4800、9600、14400、38400、115200等,数值越大数据传输的越快,波特率为 115200 表示每秒钟传输 115200 位数据。

1.1 硬件介绍

P4 的 RXD 和 TXD 用跳线帽与 PA9 和 PA10 连接起来。
在这里插入图片描述

1.2 stcubemx 配置

1.2.1 配置usart

这个配置不影响默认的配置,这里可以随便配置。 rtthread 可以随时配置系统。
在这里插入图片描述

1.2.2 配置优先级

在这里插入图片描述

1.2.4 生成代码

点击生成自动代码

2 构建工程

2.1 增加usart.c 文件

在Scconstript的里面,添加usart.c 的文件
在这里插入图片描述

2.2 配置Kconfig的文件

启动usart1, usart1 默认连接到shell调试口。
在这里插入图片描述

2.3 重构文件

在env的环境中,输入 `

$ scons --target=mdk5 -s`

在这里插入图片描述

3 Finshell 应用

3.1 硬件配置

系统默认在drv_common.c 、drv_usart.c 和 serial.h 的文件中默认调用配置。

在这里插入图片描述

3.2 shell 指令介绍

在 RT-Thread 中默认内置了一些 FinSH 命令,在 FinSH 中输入 help 后回车或者直接按下 Tab 键,就可以打印当前系统支持的所有命令。

msh 模式下,按下 Tab 键后可以列出当前支持的所有命令。默认命令的数量不是固定的,RT-Thread 的各个组件会向 FinSH 输出一些命令。例如,当打开 DFS 组件时,就会把 ls,cp,cd 等命令加到 FinSH 中,方便开发者调试。

以下为按下 Tab 键后打印出来的当前支持的所有显示 RT-Thread 内核状态信息的命令,左边是命令名称,右边是关于命令的描述:

msh />
RT-Thread shell commands:
pin              - pin [option]
reboot           - Reboot System
help             - RT-Thread shell help.
ps               - List threads in the system.
free             - Show the memory usage in the system
clear            - clear the terminal screen
version          - show RT-Thread version information
list             - list objectsmsh />list
Usage: list [options]
[options]:thread     - list threadstimer      - list timerssem        - list semaphoresmutex      - list mutexsevent      - list eventsmailbox    - list mailboxsmsgqueue   - list message queuesmemheap    - list memory heapsmempool    - list memory poolsdevice     - list devicesfd         - list file descriptors
msh />

3.3 指令运行

在这里插入图片描述

http://www.dtcms.com/a/266810.html

相关文章:

  • vue 循环无限滚动表格
  • 用distance_transform 检测线性凸包
  • Java项目:基于SSM框架实现的忘忧小区物业管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • 双因子认证(2FA)是什么?从零设计一个安全的双因子登录接口
  • Linux-进程概念(3)
  • 在HP暗影精灵Ubuntu20.04上修复IntelAX211Wi-Fi不可用的全过程记录——系统安装以后没有WIFI图标无法使用无线网
  • RabbitMQ 高级特性之 TTL
  • Spring Boot 应用启动时,端口 8080 已被其他进程占用,怎么办
  • 物联网中的Unity/Unreal引擎集成:数字孪生与可视化控制
  • 【Spring Boot】HikariCP 与 Druid 连接池全面对比
  • OpenCV中超分辨率(Super Resolution)模块类cv::dnn_superres::DnnSuperResImpl
  • 数字工厂的核心引擎:物联网驱动生产智能化升级
  • 前端查询条件加密传输方案(SM2加解密)
  • Flink SQLServer CDC 环境配置与验证
  • vue3 el-table 行筛选 设置为单选
  • Oreacle(SQL语言基础)
  • 【问题解决】VSCode终端中看不到Git-Bash
  • XILINX Kintex 7系列FPGA的全局时钟缓冲器(BUFG)和区域时钟缓冲器(BUFR/BUFH)的区别
  • 【PyTorch】PyTorch预训练模型缓存位置迁移,也可拓展应用于其他文件的迁移
  • HTTP协议利用TCP的特性来实现长连接
  • Compose笔记(三十)--图片选择器
  • 【Spring Boot】HikariCP 连接池 YAML 配置详解
  • 洛谷P1941 [NOIP 2014 提高组] 飞扬的小鸟
  • vue3 获取选中的el-table行数据
  • MySQL 查询进阶指南:子查询、多表连接与 UNION 操作全解析
  • SQL 快速参考手册-SQL001
  • Swagger 安装使用教程
  • 高效的在Vue3中使用Vuex
  • Android-自定义View的实战学习总结
  • python训练day49 CBAM