首页 > 其他分享 >串口的“窗口”应用(如何通过串口打印其他寄存器内的数据)

串口的“窗口”应用(如何通过串口打印其他寄存器内的数据)

时间:2024-10-09 09:50:38浏览次数:10  
标签:HAL 示例 串口 打印 寄存器 数据 uint32

一、串口应用概述

本文重点叙述使用串口打印其他寄存器内的数据,并且使用STM32的HAL库进行代码编写。

对于串口这个外设,我们一开始接触的就是(串口与上位机通信)用串口返回我们发送的数据。这个实验,可以让我们对串口有一个较为直观的感受。

在这个实验中,串口打印的数据来自串口自身的数据寄存器中的数据,但在实际调试和应用中,我们需要使用串口打印其他寄存器中的数据,此时的串口就像程序的一个“窗口”,我们通过这个“窗口”查看程序中其他寄存器中的数据是否正常,以此来判断程序是否正常运行。

二、操作步骤

使用串口打印其他寄存器内的数据,需要遵循一下步骤:

①串口初始化

配置串口波特率、数据位、停止位和奇偶校验等串口通信参数。并且设置GPIO引脚为串口功能,启用串口时钟,以及配置串口的工作模式和中断。

②读取寄存器数据

编写代码来读取想要的寄存器的值。这涉及到直接操作内存地址或使用特定的寄存器读函数。

③通过串口发送数据

使用HAL库提供的串口发送函数(如HAL_UART_Transmit)将数据发送出去。

④通过上位机接收数据

打开上位机,配置与串口相同的通信参数,以接收和显示通过串口发送的寄存器数据。

三、示例代码

#注意:示例代码只包含步骤②③,示例代码以STM32F103为例。

int main(void)

{

HAL_Init();

SystemClock_Config();

USART1_UART_Init();

uint32_t registerAddress = 0x40021000;         /* 示例寄存器地址 */

uint32_t dataLength = 4;                                  /* 寄存器数据长度 */

uint32_t registerValue;

registerValue = *(__IO uint32_t *)registerAddress;   /* 读取寄存器的值 */

HAL_UART_Transmit(&huart1, (uint8_t *)&registerValue, dataLength, HAL_MAX_DELAY);

                                                                                /* 使用HAL库函数发送数据 */

while (1)

        {

                /* 主循环中可以执行其他任务,例如闪烁LED,以指示程序正在运行 */

        }

}

#注意:步骤②和步骤③是串口作为“窗口”应用的核心

标签:HAL,示例,串口,打印,寄存器,数据,uint32
From: https://blog.csdn.net/aElect/article/details/142776414

相关文章

  • 九、5 USART串口数据包
    数据包作用:把一个个单独的数据给打包起来,将同一批的数据进行打包和分割,方便接收方进行识别,方便我们进行多字节的数据通信。1、串口收发HEX数据包(1)数据包的格式是个人规定的,如以FF为包头,FE为包尾,用于控制接收防止数据与包头包尾重复的处理方法:1)限制载荷数据的范围:可以在发......
  • 对UVM添加超时前的打印信息+AXI低功耗接口+process的await语句+对象当成参数+sv的单例
    对UVM添加超时前的打印信息首先获取到UVM的超时值,然后手动设定\$time的比较和while延时循环,当超出时间后,打印特殊的debug信息。$time<set_time,则进行循环。uvm_cmdline_processorclp;clp=uvm_cmdline_processor::get_inst();stringtimeout_settings[$];stringtimeout......
  • 使用LPD协议来共享打印机
    平台:WIN7、WIN10问题:win10上共享了打印机,WIN7电脑无法访问,连接时提示0x0000011B错误,我记得这是WIN10里安装了某个补丁造成的BUG,无法卸载补丁,改用LPR协议访问共享打印机。方法:一、启动LPD服务。win7和win10上均打开“控制面板”,“程序和功能”,“启动或关闭Windows功能”,下拉找到......
  • Python字符串打印格式
    一、旧式字符串格式化(%格式)在Python中,最早的字符串格式化方法是使用百分号(%)操作符。这种方式可以追溯到C语言,因此对于习惯于C语言的程序员来说是比较熟悉的。1.基本用法基本语法如下:name="Alice"age=30print("Mynameis%sandIam%dyearsold."%(name,age)......
  • 一起学RISC-V汇编第9讲之RISC-V ABI之寄存器使用约定
    目录1RISC-V寄存器使用约定2Caller-saved与Callee-saved2.1对比几种不同的寄存器保存方式2.2为什么要分caller-saved与callee-saved?2.3caller-saved与callee-saved寄存器的灵活使用寄存器使用约定告诉我们函数调用时通过哪些寄存器传递参数、通过哪些寄存器保存返回值、......
  • 串口使用DMA数据接收和发送
    串口DMA部分在这里我一共分3个部分进行介绍,第一部分介绍什么是DMA第二部分是介绍串口DMA+空闲中断实现不定长数据的收发。第三部分是串口DMA中断实现数据收发。第一部分DMA介绍一、基本概念DMA是直接寄存器,这是指一种高速的数据传输操作,允许在外部设备和存储器和寄存器......
  • Log 工具打印日志
    Android采用Log工具打印日志,它将各类日志划分为五个等级:Log.e:表示错误信息,比如可能导致程序崩溃的异常.Log.w:表示警告信息.Log.i:表示一般消息.Log.d:表示调试信息,可把程序运行时的变量值打印出来,方便跟踪调试.Log.v:表示冗余信息.如果设置e的话,后......
  • [半成品]群晖cups链接打印机
    本文是半成品,仅提供思路.不保证能完全成功(因为我就没成功,USB识别不了)本文基于github开源项目以及docker关闭群晖自带的cups群晖是自带cups,你只需要把USB接口链接打印机后,即可在控制面板->外接设备,链接即可我的由于不知名的原因压根识别不到,所以尝试了......
  • truffle 和 ganache 打印账号列表和发送eth
     打印ganache环境的账户列表constlocalhost="http://127.0.0.1:7545";const{Web3}=require("web3");constweb3=newWeb3(newWeb3.providers.HttpProvider(localhost));web3.eth.getAccounts().then(function(result){console.log("账......
  • 【花雕学编程】Arduino动手做(232)---ESP32-S3 CAM使用模拟量霍尔检测磁场并设定阈值控
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......