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

news/2024/5/19 4:02:40

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.mrgr.cn/p/45766078

相关文章

Verilog插件:补全模块实例模板

Intellij IDEA插件Verilog Language Support,v2024.2.0版本特性。

深入学习和理解Django模板层:构建动态页面

title: 深入学习和理解Django模板层:构建动态页面 date: 2024/5/5 20:53:51 updated: 2024/5/5 20:53:51 categories:后端开发tags:Django模板 表单处理 静态文件 国际化 性能优化 安全防护 部署实践第一章:模板语法基础 Django模板语法介绍 Django模板语法是一种简洁而强大的…

第一阶段复习

目录最短路部分最小环传递闭包Dij证明反图负环最短路计数次短路分层图的几个典例最短路结合二分 最短路部分 最小环 一些细节:枚举最小环是依据还没有更新经过k的最短路,所以要写在更新经过k的最短路之前。要判断是否存在路径。ijk三指针需要i与k、j与k相连。 传递闭包 f[i][…

开源运维监控平台【WGCLOUD】的调研报告 2024

WGCLOUD是一款开源免费的运维监控软件,具有设计严谨,功能丰富,部署简单,上手学习容易,性能优秀,免费开源开放等特点 网站下载:www.wgstart.com 1、WGCLOUD可以监控各种主机,包括物理机、实体机、虚拟机、云主机、VPS等主机或者服务器 监控指标数据包括:操作系统信息,…

面试必问并发编程内存模型JMM与内存屏障剖析 学习

总课程:1、JMM。每个线程会产生一个变量副本。如下图所示,第二个变量修改了变量initFlag,但线程1并不会退出,是因为每个线程产生了副本。----解决方法:volatileCPU缓存一致性协议:MESI机制,以及内存模型底层八大原子操作。Volatile缓存可见性实现原理:底层实现主要通过…

【详细教程】手把手教你开通YouTube官方API接口(youtube data api v3)

马哥原创教程:开通youtube的API,方便后续调用接口实现爬虫。一、背景调查 1.1 youtube介绍 众所周知,youtube是目前全球最大的视频社交平台,该平台每天产生大量的视频内容,涵盖各种主题和类型,从音乐视频到教育内容,再到娱乐节目和新闻报道等。YouTube的用户群体也非常广…

工作问题记录React(持续更新中)

一、backdrop-filter:blur(20px); 毛玻璃效果,在安卓机上有兼容问题,添加兼容前缀也无效; 解决方案:让设计师调整渐变,不要使用该属性! 复制代码 background: radial-gradient(33% 33% at 100% 5%, #e9e5e5 0%, rgba…

SQL注入漏洞--报错/union/布尔盲注/时间盲注

之前介绍了数据库的基本操作,今天这篇文章就来实操SQL注入。 阅读本文前可以先看一下基本操作,有助于更好理解本文。。。 https://blog.csdn.net/weixin_60885144/article/details/138356410?spm1001.2014.3001.5502 what SQL---结构化查询语言---S…

spring项目创建

从spring initializer下载一个demo Spring boot 在idea中 需要配置java版本和maven版本之后:mvn package不需要下载tomcat,Spring里面pom中包含内置tomcat<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-…

库存管理系统开源啦

软件介绍 ModernWMS是一个针对小型物流仓储供应链流程的开源库存管理系统。该系统的开发初衷是为了满足中小型企业在有限IT预算下对仓储管理的需求。通过总结多年ERP系统研发经验&#xff0c;项目团队开发了这套适用于中小型企业的系统&#xff0c;以帮助那些有特定需求的用户。…

华为鸿蒙系统(Huawei HarmonyOS)

华为鸿蒙系统&#xff08;华为技术有限公司开发的分布式操作系统&#xff09; 华为鸿蒙系统&#xff08;HUAWEI HarmonyOS&#xff09;&#xff0c;是华为公司在2019年8月9日于东莞举行的华为开发者大会&#xff08;HDC.2019&#xff09;上正式发布的分布式操作系统。 华为鸿蒙…

数仓开发:DIM层数据处理

一、了解DIM层 这个就是数仓开发的分层架构 我们现在是在DIM层&#xff0c;从ods表中数据进行加工处理&#xff0c;导入到dwd层&#xff0c;但是记住我们依然是在DIM层&#xff0c;而非是上面的ODS和DWD层。 二、处理维度表数据 ①先确认hive的配置 -- 开启动态分区方案 -- …

高一下三调|ssy的队列|hash dp|题解

SSY的队列题目链接 解析: 考场上看到这个题第一眼是绝望的,毕竟数论咱是一窍不通. 但是往下细看了看这个数据范围,N是很小的,就想了想模拟. 然而只骗到10分. 这个题绩效较高的解法是状压dp,在N<15的范围之内均可薄纱(ppllxx_9G也是成功拿到这70 rank 1了 orz),可得70,但是一…

Git——关于Git的一些补充(1)

Git——关于Git的一些补充(1) 提示:图床在国外且动图比较多的情况下,需要时间加载。 目录: 目录Git——关于Git的一些补充(1)提示:图床在国外且动图比较多的情况下,需要时间加载。目录:Git基础Git文件的生命周期Git文件的存储空间的划分Git安装过程补充说明Git的撤销…

UHF RFID 使用小记

1,概念 UHF:Ultra High Frequency;超高频。 RFID:Radio Frequency Identification;射频识别。 电子标签:即RFID标签,是RFID的俗称。 PDA:Personal Digital Assistant;个人数字助理。 发卡器:对卡进行读写操作的工具。 EPC:Electronic product code;电子产品代码。 …

企业计算机服务器中了lockbit勒索病毒如何处理,lockbit勒索病毒解密流程建议

在虚拟的网络世界里&#xff0c;人们利用网络获取信息的方式有很多&#xff0c;网络为众多企业提供了极大便利性&#xff0c;也大大提高了企业生产运营效率&#xff0c;方便企业开展各项工作业务。但随着网络技术的不断发展与应用&#xff0c;越来越多的企业开始关注企业网络数…

RAGFlow:安装与体验

服务器需要有docker,或者直接访问官方提供的demo: https://demo.ragflow.io/ docker-compose安装 需要确保 vm.max_map_count 不小于 262144 【更多】:sysctl -w vm.max_map_count=262144 克隆仓库:$ git clone https://github.com/infiniflow/ragflow.git 进入 doc…

文学作品|在线阅读

分享文字和音频类的文学作品,陶冶情操,宣传正能量。#wh-tab{font-size:20px;text-align:center;}a:link {text-decoration: none;}td{font-size: 16px;text-align:center;}td:empty:after{content:虚位以待;color:grey;} 前言 若有空,将古今中外的常见文学作品挂载在网络上,…

[转]ptp(precision time protocol)时钟同步

一、介绍1:什么是ptpPTP(Precision Time Protocol) 是一个通过网络同步时钟的一个协议。当硬件支持时,PTP 精度能达到亚微秒,比 NTP(Network Time Protocol)精度更高。 2:ptp应用场景1)数据中心数据中心需要NTP/PTP同步,以确保集群的时域运行。同步对于虚拟机计算是必不…

轨道交通巡检机器人的应用范围

在现代轨道交通系统的庞大网络中&#xff0c;无数的轨道、设备和设施交织在一起&#xff0c;如同一个精密的机器在高效运转。而在这背后&#xff0c;轨道交通巡检机器人正悄然登场&#xff0c;它们如同一个个智能的守护者&#xff0c;穿梭于各个场景之中。那么&#xff0c;这些…