printf影响单片机中断速度

printf是我们常用的调试程序的手段,在第一版程序中,经常会使用printf来验证程序是否工作正确。这样的调试手段应该在正式版的程序发布前注释掉或者删除。而且不当地使用printf也会带来某些功能性问题,例如,在某项目中,需要快速响应一个触发信号,在该触发信号到来时,对触发信号计数,并分别对不同的数字做出不同的反应,代码如下图所示:

void SIGTRIG_IRQHandler(void)
{
  //满洲里国峰电子科技
  //www.guofengdianzi.com
  //确保是否产生了EXTI Line中断
  if(EXTI_GetITStatus(SIGTRIG_EXTI_LINE) != RESET) 
  {    
    TrigNum++;
    // just 4 channels
    if(TrigNum>3)
      TrigNum=0;
    printf("num=%d \r\n", TrigNum);  
    //清除中断标志位
    EXTI_ClearITPendingBit(SIGTRIG_EXTI_LINE);     
  } 
}

在上述代码中,使用printf验证是否每次的触发信号均被正确捕捉,然而我们在测试中发现,这个printf影响了该中断函数的速度,这个触发信号的频率大约是200us,测试时发现响应动作的周期却远大于200us,经排查是printf引起,将其注释后,恢复正常。

void SIGTRIG_IRQHandler(void)
{
  //满洲里国峰电子科技
  //www.guofengdianzi.com  
  //确保是否产生了EXTI Line中断
  if(EXTI_GetITStatus(SIGTRIG_EXTI_LINE) != RESET) 
  {    
    TrigNum++;
    // just 4 channels
    if(TrigNum>3)
      TrigNum=0;
    //printf("num=%d \r\n", TrigNum);  
    //清除中断标志位
    EXTI_ClearITPendingBit(SIGTRIG_EXTI_LINE);     
  } 
}

http://www.niftyadmin.cn/n/5740552.html

相关文章

金融场中的量化交易:民锋数据驱动策略的优势解析市

随着科技的发展,量化交易成为金融市场的重要组成部分。民锋公司通过智能算法和大数据分析,设计了一系列量化交易策略,帮助投资者实现科学投资。本文将探讨民锋在数据驱动策略上的优势,并展示如何通过量化模型在复杂的市场中获得收…

使用 OpenCV 实现图像的透视变换

概述 在计算机视觉领域,经常需要对图像进行各种几何变换,如旋转、缩放和平移等。其中,透视变换(Perspective Transformation)是一种非常重要的变换方式,它能够模拟三维空间中的视角变化,例如从…

采用macvlan绕过某些软件需要MAC授权的问题

采用macvlan绕过某些软件需要MAC授权的问题 一.背景介绍二.macvlan原理1. 支持多层网络架构2. 通过 MAC 地址进行区分3. 网络架构4. 直接与外部网络通信5. 限制与注意事项6. 实际应用场景 三.操作步骤1.开启混杂模式[必须]2.创建macvlan网络3.创建容器4.安装软件并验证 一.背景…

成功解决WSL2上的Ubuntu22.04执行sudo apt-get update指令报错问题

问题:输入sudo apt-get update指令会显示如下报错 问题所在:Temporary failure in name resolution 显然是系统无法解析域名。这可能是 DNS 配置问题。 解决方案: 临时修改 DNS 配置 尝试手动修改 /etc/resolv.conf 文件来使用公共 DNS 服务…

通过Flink读写云原生数据仓库AnalyticDB PostgreSQL版(ADB PG)数据

本文介绍如何通过阿里云实时计算Flink版实时读写云原生数据仓库AnalyticDB PostgreSQL版数据。 背景信息 云原生数据仓库AnalyticDB PostgreSQL版是一种大规模并行处理(MPP)数据仓库服务,可提供海量数据在线分析服务。实时计算Flink版是基于…

使用Python编写一个微信机器人

最近心血来潮,想通过Python编写一个微信机器人。网上搜索了一下可以使用itchat这个包来完成: https://github.com/why2lyj/ItChat-UOS 需要注意的时普通的itchat包已经用不了了,因为微信在很久以前就关闭了通过网络登录的途径,但是…

【算法】Floyd多源最短路径算法

目录 一、概念 二、思路 三、代码 一、概念 在前面的学习中,我们已经接触了Dijkstra、Bellman-Ford等单源最短路径算法。但首先我们要知道何为单源最短路径,何为多源最短路径 单源最短路径:从图中选取一点,求这个点到图中其他…

Python——Selenium快速上手+方法(一站式解决问题)

目录 前言 一、Selenium是什么 二、Python安装Selenium 1、安装Selenium第三方库 2、下载浏览器驱动 3、使用Python来打开浏览器 三、Selenium的初始化 四、Selenium获取网页元素 4.1、获取元素的实用方法 1、模糊匹配获取元素 & 联合多个样式 2、使用拉姆达表达式 3、加上…