STM32-HAL库12-STM32F407VGT6的PWM主从定时器,发送指定数量脉冲

embedded/2024/9/25 3:49:47/

STM32-HAL库12-STM32F407VGT6的PWM主从定时器,发送指定数量脉冲

一、所用材料

STM32F407VGT6自制双伺服电机控制板;
一川A1系列伺服电机驱动器(电0.73KW电机);

二、所学内容

实现PWM发送指定个数脉冲,以实现伺服电机的定位控制。

三、HAL库配置

第一步:RCC配置-选取外部晶振

在这里插入图片描述

第二步:SYS配置-选取SW

在这里插入图片描述

第三步:时钟树配置

在这里插入图片描述

第四步:TIM定时器配置

本文选取TIM1-CH3作为电机1的主TIM的PWM输出口,TIM4作为从TIM;
本文选取TIM2-CH1作为电机2的主TIM的PWM输出口,TIM8作为从TIM;
本文以电机1定位控制为例

  • 以下为TIM1的配置参数:
    在这里插入图片描述
    在这里插入图片描述
  • 以下为TIM4的配置参数:
    在这里插入图片描述
    需要打开TIM4的全局中断
    在这里插入图片描述

四、MDK配置

第一步:main.c

main函数中代码如下:

int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();MX_TIM1_Init();MX_CAN2_Init();MX_CAN1_Init();MX_TIM2_Init();MX_TIM3_Init();MX_TIM4_Init();MX_TIM5_Init();MX_TIM8_Init();/* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);HAL_Delay(10);
//  CAN_Start_Init();									
//  CAN1Filter_Config();
//  CAN2Filter_Config();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_0)==0){HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_0)==0){__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_3, 25); //修改占空比比较值,一直保持占空比50%__HAL_TIM_SET_AUTORELOAD(&htim4,20000-1); //设置要输出的PWM脉冲数1000个HAL_TIM_Base_Start_IT(&htim4);             //启动从定时器HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);while(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_0)==0);}}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

定时器的中断回调如下:

void  HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim == &htim4){if(__HAL_TIM_GET_FLAG(&htim4, TIM_FLAG_CC2) != RESET)//判断是否触发中断   {__HAL_TIM_CLEAR_FLAG(&htim4, TIM_FLAG_CC2); //清除中断标志            HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_3);   //关闭主定时器HAL_TIM_Base_Stop_IT(&htim4);              //关闭从定时器}}
}

通过以上代码即可实现单词按键输入后STM32F407发送20000个脉冲


http://www.ppmy.cn/embedded/33165.html

相关文章

服务器远程连接jupyter notebook

目录 服务器远程连接jupyter notebook1、在服务器端安装notebook2、在服务器端的设置Step 1:Step 2:Step 3: 3. 在服务器端运行jupyter4、在windows 上连接远程服务器 参考资料 服务器远程连接jupyter notebook 1、在服务器端安装notebook conda install jupyter notebook 2…

扫雷(升级版)附全代码

上次我写了简单版本的扫雷(建议看一下扫雷【C语言】-CSDN博客),但是有些功能并没有实现。比如: 没有如果排查位置不是雷,可以展开周围的功能。没有标记的功能。 在这篇中这些功能都会被实现。 文章目录 展开 标记 …

json文件的读取

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏笔者水平有限,欢迎各位大佬指点,相…

c++中map与set的基本使用

c中的map容器与set容器 map的所有函数方法及其用法 在C中,std::map 是一个关联容器,它包含可以重复的键值对(实际上,std::map中的键是唯一的)。每个元素都有一个唯一的键和一个与之关联的值。std::map通常按照其键的…

Linux的基础IO:文件系统

目录 学前补充 磁盘的存储结构 OS如何对磁盘的存储进行逻辑抽象 细节内容 学前补充 问题:计算机只认二进制,即0、1,什么是0、1? 解释:0、1在物理层面可能有不同的表现,0、1是数字逻辑,可以…

IP 寻址与地址解析

目录 前言 1.IP 分类地址 2.IP 子网与超网 3.组成 IP 超网 4.无类地址与 CIDR 5.配置管理 6.地址解析 总结 前言 在互联网协议 (IP) 的世界中,寻址和地址解析是关键概念。它们使设备能够在互联网上唯一地标识和相互通信。让我们深入了解 IP 寻址、子网、超网…

【Conda】解决使用清华源创建虚拟环境不成功问题

文章目录 问题描述:清华源创建不成功解决步骤1 添加官方源步骤2 删除C:/user/你的用户名/的 .condarc 文件步骤3 再次创建 问题描述:清华源创建不成功 本地配置了清华源,但是在创建虚拟环境时不成功,报错如下。 图片若看不清&…

轻松应对数据恢复挑战:雷神笔记本,不同情况不同策略

在数字化时代,数据无疑是我们生活中不可或缺的一部分。无论是重要的工作文件、珍贵的家庭照片,还是回忆满满的视频,一旦丢失,都可能给我们的生活带来诸多不便。雷神笔记本作为市场上备受欢迎的电脑品牌,用户在使用过程…