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

制作网站的公司淘宝客网站做百度竞价

制作网站的公司,淘宝客网站做百度竞价,商城高中,网站通栏广告素材杂记:STM32 调试信息打印实现方式 一、引言二、使用 USART 串口打印原理(二)实现步骤硬件连接代码实现 使用 ST - LINK 调试器 ITM 打印(一)原理(二)实现步骤硬件连接代码实现 四、使用 Semihos…

杂记:STM32 调试信息打印实现方式

  • 一、引言
  • 二、使用 USART 串口打印
    • 原理
    • (二)实现步骤
      • 硬件连接
      • 代码实现
  • 使用 ST - LINK 调试器 ITM 打印
    • (一)原理
    • (二)实现步骤
      • 硬件连接
      • 代码实现
  • 四、使用 Semihosting 打印
    • (一)原理
    • (二)实现步骤
      • 硬件连接
      • 代码实现
  • 五、对比USART1与STLINK调试器输出打印
    • 5.1 硬件依赖性
    • 5.2 适用场景
    • 5.3 性能
    • 5.4 使用方便性

一、引言

在 STM32 开发过程中,调试信息打印是一种非常实用的调试手段。通过打印关键信息,开发者可以实时了解程序的运行状态,快速定位和解决问题。本文将介绍几种常见的 STM32 调试信息打印实现方式,并给出相应的代码示例和图文说明。

二、使用 USART 串口打印

原理

USART(通用同步异步收发传输器)是 STM32 常用的通信接口,通过配置 USART 并将调试信息以字符形式发送出去,上位机(如电脑)使用串口调试助手接收并显示这些信息。

(二)实现步骤

硬件连接

将 STM32 开发板的 USART 引脚(TX、RX)通过 USB 转串口模块连接到电脑的 USB 接口。例如,使用 STM32F103 系列,通常 USART1 的 TX 为 PA9,RX 为 PA10。

代码实现

#include "stm32f1xx_hal.h"
#include <stdio.h>UART_HandleTypeDef huart1;// 重定向 fputc 函数
int fputc(int ch, FILE *f)
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);return ch;
}void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();while (1){printf("Hello, USART!\r\n");HAL_Delay(1000);}
}

使用 ST - LINK 调试器 ITM 打印

(一)原理

ITM(Instrumentation Trace Macrocell)是 ARM Cortex - M 内核提供的一种调试功能,通过 ST - LINK 调试器将调试信息从芯片传输到开发环境(如 Keil MDK)中显示。

(二)实现步骤

硬件连接

使用 ST - LINK 调试器通过 SWD 或 JTAG 接口连接 STM32 开发板。

代码实现

#include "stm32f1xx_hal.h"
#include <stdio.h>// 使能 ITM
#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA          0x01000000int fputc(int ch, FILE *f)
{if (DEMCR & TRCENA){while (ITM_Port32(0) == 0);ITM_Port8(0) = ch;}return(ch);
}void SystemClock_Config(void);
static void MX_GPIO_Init(void);int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();while (1){printf("Hello, ITM!\r\n");HAL_Delay(1000);}
}

四、使用 Semihosting 打印

(一)原理

Semihosting 是 ARM 提供的一种机制,允许运行在目标芯片上的代码与主机(开发环境)进行交互,通过主机的标准输入输出设备进行调试信息的打印。

(二)实现步骤

硬件连接

使用 ST - LINK 调试器通过 SWD 或 JTAG 接口连接 STM32 开发板。

代码实现

配置半主机模式在Keil中,可以通过以下步骤启用半主机模式:

  1. 打开项目选项(Project -> Options for Target)。
  2. 在“Debug”选项卡中,选择“Settings”。
  3. 在“Semihosting”部分,启用“Semihosting”选项。
    在这里插入图片描述
#include "stm32f1xx_hal.h"
#include <stdio.h>// 重定向 fputc 函数
extern int __io_putchar(int ch);
int fputc(int ch, FILE *f)
{return __io_putchar(ch);
}void SystemClock_Config(void);
static void MX_GPIO_Init(void);int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();while (1){printf("Hello, Semihosting!\r\n");HAL_Delay(1000);}
}

五、对比USART1与STLINK调试器输出打印

5.1 硬件依赖性

• USART1:需要硬件串口支持,需要连接串口线或USB转串口模块。
• STLINK:不需要硬件串口,但需要调试器支持半主机模式。

5.2 适用场景

• USART1:适用于需要在目标硬件上直接查看调试信息的场景,如嵌入式系统开发。• STLINK:适用于需要在开发环境中查看调试信息的场景,如调试阶段。

5.3 性能

• USART1:性能较高,适合大量数据输出。
• STLINK:性能较低,适合少量调试信息输出。

5.4 使用方便性

• USART1:需要配置串口和重定向 printf 函数。
• STLINK:配置简单,直接使用 printf 函数即可。

http://www.yayakq.cn/news/865787/

相关文章:

  • 网站模版二次开发跟手工制作区别长沙网站制作平台
  • discu论坛网站模板大背景 网站
  • 购物网站排名2016网站代码备份
  • 网站搜索引擎优化推广镜像站wordpress
  • 自动发货网站建设建设网站企业网上银行登录官方
  • 前端做网站难吗刚刚
  • 做的不错的h5高端网站济南做网站公司电话
  • 中英文网站建设大概多少钱成都网站建设开
  • 网站建设必须要虚拟主机吗成都建网站公司
  • 潮流资讯类网站建设策划网站管理与维护方案
  • 黄页网站推广app软件中小企业加盟网站建设
  • 手机网站模板单页北京华夏建设有限公司网站
  • 园林景观设计平面图做网站优化企业
  • 攀枝花仁和住房和城乡建设局网站杭州模板做网站
  • 济南网站制作哪家强邢台企业做网站报价
  • 企业静态网站需要备案吗wordpress 跨域 cros
  • 仓库盘点网站开发上位机软件开发
  • 广州建网站ui设计有哪些
  • 网站建设利润越来越低苏州网站建设都找全网天下
  • 什么店是做网站制作的广州最新新闻事件
  • 东南亚购物网站排名做网站前端多少钱
  • 网站301和302saas小程序开发费用
  • 建设网站选什么地方的主机广告logo设计软件
  • python做的网站有哪些珍爱网征婚免费下载
  • 哪些网站可以做平面设计挣钱wordpress打不开在缓冲
  • 深圳网站建设维护酒泉网站建设
  • 响应式网站建设企业怎样建设网站论文
  • 个人网站建站流程湖北省建设工程造价管理协会网站
  • 免费网站app源码广东今科网站建设
  • 网站用什么语言编写wordpress 语言设定