首页 > 其他分享 >配置STM32单片机的两个高速输入端子接受AB相高速脉冲信号输入的方法

配置STM32单片机的两个高速输入端子接受AB相高速脉冲信号输入的方法

时间:2024-04-08 22:02:47浏览次数:29  
标签:HAL 引脚 配置 TIM 计数器 高速 GPIO 输入 端子

目录

1. 配置GPIO引脚:

2. 配置TIM计数器:

3. 配置中断:

4. 计数器值的获取:


        要使用STM32单片机的两个高速输入端子接受AB相高速脉冲信号输入,并使用TIM计数器的不同通道对每相的计数,请按照以下步骤操作:

1. 配置GPIO引脚:

        首先,需要将两个高速输入端子配置为输入模式。在STM32中,通常使用GPIO端口和引脚来接收外部信号。在stm32f4xx_hal_msp.c文件中找到GPIO_Init()函数,配置相应的GPIO引脚为输入模式。

GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = A_PIN | B_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIO_PORT, &GPIO_InitStruct);

2. 配置TIM计数器:

    使用STM32CubeMX生成的TIM初始化函数,配置TIM计数器的两个通道。在stm32f4xx_hal_tim.c文件中找到HAL_TIM_Base_Init()函数,配置相应的TIM通道。

TIM_MasterConfigTypeDef sMasterConfig = {0};
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIM_MasterConfigSynchronization(&htim, &sMasterConfig);

3. 配置中断:

  在stm32f4xx_it.c文件中找到相应GPIO引脚的IRQHandler()函数,例如GPIO_PORT_IRQHandler()。在该函数中,判断哪个引脚产生中断,并调用相应的TIM通道的计数器。

void GPIO_PORT_IRQHandler(void)
{
    if (__HAL_GPIO_GET_IT(A_PIN) == SET)
    {
        HAL_TIM_IC_Start(&htim, TIM_CHANNEL_1);
    }
    else if (__HAL_GPIO_GET_IT(B_PIN) == SET)
    {
        HAL_TIM_IC_Start(&htim, TIM_CHANNEL_2);
    }
}

4. 计数器值的获取:

        在需要获取计数值的地方,调用相应TIM通道的计数器值即可。例如,在一个循环中获取计数值。

uint32_t count1 = HAL_TIM_GetCounter(&htim, TIM_CHANNEL_1);
uint32_t count2 = HAL_TIM_GetCounter(&htim, TIM_CHANNEL_2);

        以上示例代码仅供参考,具体实现可能需要根据实际硬件和需求进行修改。

标签:HAL,引脚,配置,TIM,计数器,高速,GPIO,输入,端子
From: https://blog.csdn.net/wenchm/article/details/137525249

相关文章

  • 从输入URL到页面渲染的全过程详解
    当我们在浏览器中输入一个URL并按下回车键时,背后其实发生了一系列的复杂过程。这个过程涉及到了网络协议、服务器处理、数据传输等多个环节。下面,我们将详细解析这一过程。一、URL解析当我们在浏览器中输入URL并回车后,浏览器首先会进行URL解析。URL(UniformResourceLocat......
  • 电容隔离型±10V输入隔离放大器特点:ISOC 124P
    产品特点:50KHz(-3dB)高带宽与ISO124P隔离器Pin-Pin兼容低成本小体积,标准DIP16Pin阻燃材料封装精度等级:±0.01级,全量程内非线性度0.01%信号输入与输出之间:3000VDC隔离耐压电源范围:±4.5V~±18V双极运算:Vo=±10V方便易用,固定单位增益配置小体积:22.8X10.2X8.5......
  • STM32CubeMX+MDK通过I2S接口进行音频输入输出(全双工读写一个DMA回调)
    一、前言目前有一个关于通过STM32F411CEUx的I2S总线接口控制SSS1700芯片进行音频输入输出的研究。SSS1700是具有片上振荡器的3S高度集成的USB音频控制器芯片。SSS1700功能支持96KHz24位采样率,带外部音频编解码器(24位/96KHzI2S输入和输出)并具有内置立体声16/24......
  • 高项(5)-人力资源管理-沟通管理-干系人管理-风险管理-采购管理-合同管理-配置管理-知识
    十大管理-项目人力资源管理(4)人力资源管理过程包括:规划人力资源管理组建项目团队建设项目团队管理项目团队输入、输出、工具和技术人力资源管理(规组建管)过程名输入输出工具和技术规划人力资源管理(1)活动资源需求;(2)项目管理计划;(3)事业环境因素;(4)组织过程资产人力资源管理计......
  • 简单顺序链- - 将第一个链的输出作为第二个链的输入
    fromlangchain.chainsimportLLMChain,SimpleSequentialChain#简单序列链fromlangchain_community.llms.ollamaimportOllamafromlangchain_core.promptsimportPromptTemplatellm=Ollama(model="qwen:7b")template="""您的工作是根据用户建议的区域制......
  • Vue input密码输入框自定义密码眼睛icon
    我们用的饿了么UI组件库里,密码输入框的icon是固定不变的,如下所示:点击"眼睛"这个icon不变,现在需求是UI给的设计稿里,密码输入框的"眼睛"有如下两种:代码如下:<el-input:key="passwordType"ref="password"......
  • [转帖]docker输入多行命令
    docker相关学习资料下载地址: docker相关资料合集Docker输入多行命令在使用Docker进行容器管理时,我们经常需要在容器内部执行多行命令。本文将介绍Docker中输入多行命令的几种方式,并提供相应的代码示例。1.使用Shell的行连字符在Docker中,我们可以使用Shell的行连字......
  • WEB漏洞挖掘详细教程--用户输入合规性(sql注入测试)
    前置教程:WEB漏洞挖掘(SRC)详细教程--信息收集篇-CSDN博客WEB漏洞挖掘(SRC)详细教程--身份认证与业务一致性-CSDN博客WEB漏洞挖掘(SRC)详细教程--业务数据篡改-CSDN博客2.4用户输入合规性2.4.1注入测试a.手动注入1.在参数中输入一个单引号”'”,引起执行查询语句的语法错误,得......
  • USB高品质过流限流保护芯片PW1515,带输入过压与耐高压功能
    在现代电子设备中,对电压和电流的精准控制是至关重要的。为了满足这一需求,我们推出了PW1515前端过电压和过电流保护装置。这款装置能够实时监控输入电压和充电电流,确保它们始终在正常范围内运行,从而有效保护负载。PW1515以其卓越的性能和广泛的应用领域而备受关注。它采用SOT23-5L......
  • 解决简中输入法导致macOS卡死的问题
    2024.4.5更新苹果已于macOS14.2更新中修复了简体中文输入法Bug,建议更新至该版本,彻底解决此问题。2023.9.23更新可以采用SCIMKiller:Github原理:定时杀死简体中文输入法打开终端,输入crontab-e然后填入任务0*/2***kill`pgrepSCIM`之后按esc键,输入保存......