STM32(H7)学习记录-2 脉冲跟随

第五节:STM32输入捕获(用CubeMX学习STM32) STM32输入捕获(用CubeMX学习STM32) HAL库 CubeMX配置 IAR或者Keil编程 经验分享 阅读详情

最近在遇到了一个使用环境,需要在某个IO输入脉冲信号 并且跟随输出脉冲信号。

因此,采用的思路是dmamux 中的 触发输入,从而产生请求。

做法:

采用TIM2 CH3 PWM输出到某个引脚上。TIM12脉冲作为触发输入,DMA1将GPIOx->IDR搬到buffer,buffer再到GPIOy->ORD。(不过BDMA似乎可以实现 外设到外设 具体还没尝试)

注意:

buffer 必须是 DMA1 可访问的地址(DMA2也可) ,因此,要设置

ALIGN_32BYTES(__attribute__((section (".RAM_D3"))) uint32_t buffer1[4]) = {0};

当然分散加载里面要设置

  RW_IRAM4 0x38000000 0x00010000  {  ; RW data - 64KB SRAM4(0x38000000)
   *(.RAM_D3)

以及MPU要对这块区域设置

    MPU_InitStruct.Enable           = MPU_REGION_ENABLE;
    MPU_InitStruct.BaseAddress      = 0x38000000;
    MPU_InitStruct.Size             = ARM_MPU_REGION_SIZE_64KB;	
    MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
    MPU_InitStruct.IsBufferable     = MPU_ACCESS_NOT_BUFFERABLE;
    MPU_InitStruct.IsCacheable      = MPU_ACCESS_CACHEABLE;
    MPU_InitStruct.IsShareable      = MPU_ACCESS_NOT_SHAREABLE;
    MPU_InitStruct.Number           = MPU_REGION_NUMBER2;
    MPU_InitStruct.TypeExtField     = MPU_TEX_LEVEL0;
    MPU_InitStruct.SubRegionDisable = 0x00;
    MPU_InitStruct.DisableExec      = MPU_INSTRUCTION_ACCESS_ENABLE;

效果如下:

在几百KHz下效果还凑合。

又测试了一个200Hz触发中断的情况

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	printf("hello");
}

参考:安富莱H7-BSP DMAMUX的定时器触+DMA双缓冲控制任意IO做PWM和脉冲数控制例程

通用定时器脉冲计数实验(STM32CubeMx配置) 通用定时器脉冲计数实验 阅读详情

相关推荐

基于STM32的频率计Proteus仿真教程

本教程是基于STM32的嵌入式仿真大作业。 使用 Proteus 仿真32单片机,实现了可以测量正弦波、方波、正弦波和锯齿波等波形频率的 频率计,测量误差在1%以内 目录一、电路图设计二、代码设计三、测试结果四、总结 一、电路图设计 前端处理电路由LM324运算放大器组成迟滞比较器和电压跟随器,迟滞特性一定程度上解决了噪声扰动的问题,且可将任意固定频率的信号转化为脉冲,便于单片机的后续处理,而电压跟随器可增强其带载能力。 单片机最小系统如下图所示,也可删除右侧电路,在Proteus中不受影响 二.

老白 1万+

STM32(H7)学习记录-6 脉冲跟随(v2)

当外部脉冲输入到 TIM12的TI2FP2引脚,触发(上升/下降沿都触发)TIM12的计数,但配置TIM12是单脉冲,即输出一个脉冲后就关闭计数。DMA配置的是 下降沿触发,因此,会触发一次DMA (将buffer的数据搬运到 GPIOx->BSRR)有时候,我们需要对一个输入脉冲进行跟随输出脉冲(一个脉冲输入,一个或者多个脉冲输出,IO资源不丰富,且不能占用太多CPU资源的情况下)200KHz脉冲下,效果也还可以(粉色是输入脉冲,绿色是输出脉冲)触发源选择 TI2FP2(上升/下降沿都触发)

m0_71918616的博客 668

STM32CubeMX的正交编码器encoder

由于最近干活遇到需要获取正交编码的功能,所以返回来研究一下STM32CubeMX的编码器功能,之前也更新过STM32的定时器功能,但是因为之前搞平衡车的正交编码器没有搞清楚原理,就直接用了脉冲输入功能草草了事,现在也算是为之前的年轻买单了,不过看到现有的Encoder说明都比较简单,所以就当是为开发者做贡献了,我研究清楚之后来一篇博客。

ASWaterbenben的博客 1万+

PWM 脉宽跟随方案介绍

数字电源产品在使用桥式电路拓扑或是多路交错控制中,有时会需要滞后臂的 PWM 脉宽严格跟随超前臂的 PWM 脉宽,或从路的 PWM 脉宽严格跟随主路的 PWM 脉宽,本文将介绍如何利用高精度定时器实现 PWM 输出脉宽跟随,一种使用 Push-pull + Balance Idle + Auto Enable 方式,一种是使用 Auto Delay 方式。

u014319604的博客 1264

第一次博客记录:STM32判断是否有脉冲输入(不要把简单问题复杂化)

做项目时碰到的一个小问题,由于思路错误小小的困扰了一会 电机运行测试 我是今年毕业的,所以在公司里负责的东西也比较简单,这次是做一个电机的运行测试板,用来测试电机和驱动模块的好坏。测试的电机主要是步进电机和直流减速电机。在步进电机测试模块十分顺利,但是在直流减速电机测试的时候碰到了一点小问题。 测试的直流减速电机都是自带编码器的,所以要同时测试编码器的好坏,编码器正常工作时会反馈两路脉冲,MCU同...

L_Faker的博客 2190

STM32输入捕获实验示例详解

STM32输入捕获实验 寄存器部分讲解(以TIM5_CH1为例) TIMx_CCMR1.ICF[3:0]的作用 滤波器的作用就是“采集取样以便于确定准确的电平状态”。我们以ICIF[3:0] = 0010为例: 实例应用:假设输入信号在最多5个内部时钟周期的时间内抖动,我们须配置滤波器的带宽长于5个时钟周期。因此我们可以(以fDTS频率)连续采样8次,以确认在TI1上一次真实的边沿变换,即在TIMx_CCMR1寄存器中写入IC1F=0011。 TIMx_CCER...

超级霸霸强的博客 6304

STM32H7定时器TIM1-TIM17中断、PWM实现

STM32H7 支持的定时器有点多,要简单的区分下。STM32H7 支持 TIM1-TIM8,TIM12-TIM17 共14 个定时器,而中间的 TIM9,TIM10,TIM11 是不存在的,这点要注意。

yybyg的博客 3506

STM32 定时器的几种基本使用

title: STM32——外设Timer定时器 date: 2020-05-20 14:43:52 tags: categories: STM32学习记录 对定时器的基本认识 先来看看这种MCU有多少定时器: 定时器分为3类: 基本定时器的功能最少,只能充当基本的时基,甚至都没有外部引脚。 通用定时器拥有基本定时器的全部功能,同时有输入捕获模式,用以接收外部的PWM,脉冲之类的信息,也有 高级定时器又有通用定时器的全部功能,又有互补输出模式,功能最为强大 先具体看一下夹在中间的通用定时器的官方文.

Carbon6的博客 2万+

STM32H7学习继续(STM32H7系列8) 定时中断,PWM输出,输入捕获

2020.01.11 以<<STM32H7 开发指南(HAL 库版)>>为导引学习 定时器 STM32H743 内部包含 10 个通用定时器(TIM2TIM5,TIM12TIM17), 每个定时器都可以用来产生 PWM 或者用作输入捕获 不过 TIM2~TIM5 有 4 个通道,TIM12~TIM17 只有 2 个通道。 STM32H743 的通用定时器可以被用于:测量输...

kengkengkeng963的博客 4276

STM32H7定时器主从模式玩转指南:用CubeMX让TIM1发PWM,TIM2当‘会计’数脉冲

本文详细介绍了STM32H7定时器主从模式的实战应用,通过CubeMX配置TIM1生成PWM信号,TIM2实现无中断脉冲计数。这种硬件级联动方案显著降低CPU负载,适用于电机控制、编码器读取等高精度场景,特别适合STM32H743开发者提升嵌入式系统性能。

weixin_30319153的博客 430

【单片机】STM32单片机频率计程序,外部脉冲计数程序,基于脉冲计数的频率计程序,STM32F103

首先,通过RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE)和RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)使能了TIM2和GPIOA的时钟。在这种方法中,你可以使用单片机的定时器模块来测量输入信号的周期,定时器会产生一个计数值,你可以根据这个计数值来推算出输入信号的周期,并通过简单的数学运算将周期转换为频率。通过在一段固定的时间内记录脉冲的个数,然后将脉冲个数除以时间,就可以得到频率值。

q742971636的博客 9614

STM32 定时器1秒执行一次 计算频率 STM32CubemxIDE

今天发现定时器中断总是进不去.发现了2个问题 一.生成的配置文件有问题 需要点好几次NVIC中断,才能生成合格的代码. 生成的tim.c文件中应该有 HAL_NVIC_EnableIRQ(TIM2_IRQn);才能开启中断. 先确认下生成的代码有没有问题, 如果没有那么需要去勾上Nvic中断 再去掉.生成代码来回折腾几次就出来了. 二 . 定时器开中断没有开启 ,定时器开中断默认是没有开启...

走错路的程序员 9706

反向代理的隐形陷阱:为何你的HTTPS请求会降级为HTTP?

本文深入探讨了Nginx反向代理中HTTPS降级为HTTP的隐形陷阱及其安全风险,分析了五大降级诱因,包括协议信息丢失、重定向配置错误等,并提供了完整的防御性配置方案和实战指南,帮助开发者确保Web应用的安全性。

kotlin6android的博客 449

【STM32外设系列】GPS定位模块(ATGM336H)

STM32 是意法半导体公司推出的基于 ARM Cortex-M 内核的 32 位微控制器系列,凭借其出色的性能和丰富的功能,在嵌入式领域应用广泛。

m0_73978383的博客 5315

深入解析Flex NOC总线驱动的实时带宽与延迟优化策略

本文深入解析了Flex NOC总线驱动的核心价值与优化策略。通过解读`/proc/noc/real_time`中的实时带宽与延迟数据,并结合`sysfs`接口进行动态QoS调优,可以有效解决芯片内部数据拥堵问题。文章以智能摄像头和算力盒子的实际案例,详细说明了如何通过优先级调整、带宽限制和参数优化,提升系统在复杂任务下的实时性与稳定性。

weixin_29289821的博客 277

IEDA激活码失效?教你5分钟快速续期的方法

本文针对IEDA激活码失效问题,提供了一套从快速应急到深度排查的完整解决方案。文章不仅详解了5分钟快速续期与清理缓存等应急方法,更深入剖析了授权机制、离线激活流程,并指导如何构建可持续的授权管理策略,帮助开发者彻底解决激活困扰,确保开发环境稳定。

a0b1c2d3的专栏 267

STM32学习记录--关于PWM引脚配置

PWM(Pulse Width Modulation)是一种脉宽调制技术,用来调节信号波形的高电平时间(脉冲宽度)的比例,从而改变有效值。PWM技术常见于电子电路中,广泛应用于各种领域和设备中,包括但不限于以下几个方面:1. 电机控制:PWM可用于控制直流电机、步进电机和交流电机的转速和转向。通过调节脉冲宽度,可以实现精确的电机速度控制和精度定位。2. 电源调节:PWM用于调节电源输出电压或电流。通过控制开关器件的导通时间和断开时间,可以实现电源输出的稳定调节,以满足不同的负载需求。

herui的博客 1万+

Windows Server 2016上,手把手教你搭建MDT 8456自动化部署环境(含ADK 2004与WDS配置)

本文详细指导在Windows Server 2016上搭建MDT 8456自动化部署环境,涵盖ADK 2004与WDS配置全流程。通过标准化操作系统部署、应用程序静默安装和驱动程序注入,实现企业级自动化部署解决方案,显著提升IT运维效率。特别针对兼容性问题和权限陷阱提供实战解决方案。

weixin_29876033的博客 381

基于STM32H743的调试记录6——定时器测速全搞定(编码器、脉冲计数)

本文介绍STM32H743定时器测速的基本配置。编码器测速,外部脉冲信号计数

luoyesuifengfei的博客 3397

从 Integrated Configuration 到 Integration Flow,SAP PI/PO 老配置迁移的一次温和重构

很多还在运行 SAP PI/PO 的系统,Integration Directory 里都积累了不少 Integrated Configuration,也就是日常项目里常说的 ICO。它们可能稳定运行了多年,负责把采购订单、物料主数据、客户主数据、发票、发货通知从一个系统送到另一个系统。问题在于,ICO 这种对象很实用,却不够直观。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 80

SAP生产订单技术性完成(TECO)操作指南与实战应用

生产订单技术关闭操作指南主要包括单笔和批量关闭两种方式,通过CO02/COHV事务码完成。

m0_47402127的博客 1921

【STM32】Hal库学习——PWM驱动电机

51我觉得我学得差不多了,虽然有一些通讯协议还没学,但是由于忙着团队的考核于是要开始弄四旋翼无人机,我打算用stm32的hal库来写。在此留下我的学习印记。 一。配置Hal库 这部分参考【STM32】HAL库 PWM控制电机转速与编码器读取(超详解)HAL库的学习 —— PWM的配置及控制 1.芯片选择 这里根据自己所用的芯片来进行选择,我用的是stm32f103c8t6 2.设置RCC(系统时钟) 设置高速外部时钟HSE 选择外部时钟源 3.串口配置 这里我配置的是USART1..

weever7的博客 3万+

微信小程序|基于小程序+云开发制作一个租房小程序

经济发展的同时伴随着大批人群的流动,租房需求一直是持久不衰的话题,如何租好房,好租房,跟随此文一起制作一个租房小程序,让租房不再困难。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 4915

STM32H7系列高级I2C特性系统学习

深入探讨STM32H7系列中i2c总线的高级功能与配置技巧,帮助开发者掌握i2c在高性能场景下的应用优化方法。

weixin_42575109的博客 367

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

STM32H7B0VBT7 编码器使用DMA 防丢脉冲 记录总的脉冲数

dir = __HAL_TIM_IS_TIM_COUNTING_DOWN() (0=向上,1=向下)这个实现完全按照你的要求,使用HAL库,代码简洁,能准确记录带方向的总脉冲数。· cnt = TIM4->CNT (0~65535,16位计数器)· irq = overflow_count (溢出次数,带方向)· 正向旋转:dir=0,每次溢出 irq+1。· 反向旋转:dir=1,每次溢出 irq-1。· cnt范围:0~65535循环。主函数 main.c(极简调用)CubeMX配置要求。

qq_42949957的博客 303

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: STM32(H7)学习记录-1 FMC
下一篇: STM32(H7)学习记录-3 CANFD
Jet_99
博客等级 码龄4年 112粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值