STM32 - CubeMX 的使用实例详细(04.1)- STM32F103的 - 定时器设定详细解释 - PWM波的产生 - 频率占空比的设定 - 软件代码分析
前言:本文详细条例STM32 103定时器的设定
1 定时器简介
中等容量的STM32F103xx增强型系列产品包含1个高级控制定时器、3个普通定时器,以及2个看门 狗定时器和1个系统嘀嗒定时器。
下表比较了高级控制定时器、普通定时器和基本定时器的功能:
表4 定时器功能比较
高级控制定时器(TIM1)
高级控制定时器(TIM1)可以被看成是分配到6个通道的三相PWM发生器,它具有带死区插入的互补 PWM输出,还可以被当成完整的通用定时器。
四个独立的通道可以用于:
● 输入捕获
● 输出比较
● 产生PWM(边缘或中心对齐模式)
● 单脉冲输出
配置为16位标准定时器时,它与TIMx定时器具有相同的功能。配置为16位PWM发生器时,它具有全 调制能力(0~100%)。
在调试模式下,计数器可以被冻结,同时PWM输出被禁止,从而切断由这些输出所控制的开关。 很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功 能与TIM定时器协同操作,提供同步或事件链接功能。
CubeMX 定时器选项:
1 在Timers里面选择PWM输出:
2 设定PWM的输出频率和占空比
没设定之前是这样
Prescaler ,是预分频,
在设定预分频的前一步,你先要确认你的CLOCK Configuration
上一节我们已经介绍了如何设定到72M的最大频率,这里,我们看到给到Timer的最大分频就是72M
PWM 输出设定
然后 在实际的管脚去测量,发现没有输出!!!
因为没有做下面的详细设定
设定好之后,按下【GENERATE CODE】代码,自动生成初始化代码:
static void MX_TIM3_Init(void)
{/* USER CODE BEGIN TIM3_Init 0 *//* USER CODE END TIM3_Init 0 */TIM_MasterConfigTypeDef sMasterConfig = {0};TIM_OC_InitTypeDef sConfigOC = {0};/* USER CODE BEGIN TIM3_Init 1 *//* USER CODE END TIM3_Init 1 */htim3.Instance = TIM3;htim3.Init.Prescaler = 0;htim3.Init.CounterMode = TIM_COUNTERMODE_UP;htim3.Init.Period = 18000-1;htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;if (HAL_TIM_PWM_Init(&htim3) != HAL_OK){Error_Handler();}sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK){Error_Handler();}sConfigOC.OCMode = TIM_OCMODE_PWM1;sConfigOC.Pulse = 9000;sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK){Error_Handler();}/* USER CODE BEGIN TIM3_Init 2 *//* USER CODE END TIM3_Init 2 */HAL_TIM_MspPostInit(&htim3);}
/*** @brief The application entry point.* @retval int*/
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_TIM3_Init();MX_TIM1_Init();MX_TIM4_Init();/* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);/* 4K */HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){
STM32 - CubeMX 的使用实例详细(04.1)- STM32F103的 - 定时器设定详细解释 - PWM波的产生 - 频率占空比的设定 - 软件代码分析相关推荐
- STM32 - CubeMX 的使用实例详细(01)- STM32F103的配置 - GPIO设定
前言,项目需要STMF103的片子做PWM的控制,感觉ST的新版的IDE的配置功能很强大,想用用看. 项目采用的是STM32F103C8T6 1 端口的配置 1.1 MCU选型 MCU框图可以查阅: ...
- STM32 - CubeMX 的使用实例详细(01.1)- ST-LINK V2 的配置
MX很方便,但是,由于自动生成的代码,这样的话,就容易有一些配置冲突,因为选项太多了. ST-LINK V2 的样子: 这个版本应该是国内的简化版本: 管脚配置应该如下: 其实只要连接3根线就可以了 ...
- STM32 CubeMX HAL库 之红外接收(NEC协议)定时器捕获
第一次自己写完整的硬件驱动,发上来给大家看看,顺便吸收些改进方案,希望各位能够不吝赐教,指出代码的不足之处.同时我也很高兴这代码能给你带来帮助. 工程使用CubeMX创建,使用VS Code编程,单片 ...
- STM32单片机:定时器TIM输出PWM波
学习32单片机过程中使用的工具:MDK Keil5 + 正点原子精英版(STM32F103ZET6)+ STM32CubeMX + HAL开发 一.PWM的产生原理 关于PWM的产生原理网上有很多教程 ...
- STM32一个定时器同时捕获4路PWM波
问题的提出: 最近需要用航模遥控器控制遥控车,32单片机做主控,需要用到4个通道即需要捕获4路PWM波.如果用四个定时器来捕获四路PWM波,就太浪费资源了.由于STM32单片机的定时器资源有限,故设想 ...
- 使用STM32测量脉宽可变的PWM波的脉冲宽度
最近受疫情影响导致我莫得办法出去玩,打游戏一不小心又给打通关了就只能找点东西玩玩了,所以就有了下面这篇文章......搞这个东西的时候遇见一些好玩的问题,我写在第6部分,希望能帮到看到这篇小文章的同志 ...
- stm32之ADC应用实例(单通道、多通道、基于DMA)
硬件:STM32F103VCT6 开发工具:Keil uVision4 下载调试工具:ARM仿真器 网上资料很多,这里做一个详细的整合.(也不是很详细,但很通俗). 所用的芯片内嵌3个12位的模拟/数 ...
- c语言定时器定时1ms程序,STM32 Cubemx 配置定时器定时1mS
最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记. 以建立一个定时1mS定时器为例: 1.先打开定时器 2.配置好时钟 3.配置定时器设置 重点来了,以前在这里我 ...
- 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)
概述:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏.项目源码地址:点击下载. 硬件要求: 普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电 ...
最新文章
- 华为鸿蒙新概念机,华为P50概念机确认,麒麟芯片+鸿蒙系统,这才是真旗舰!...
- .net版 类似火车头的网页采集
- cad 关键字被保留了?选择集关键字保留了? N S W E关键字无法用?
- TF之AutoML之AdaNet框架:AdaNet框架的简介、特点、使用方法详细攻略
- RISC-V应用创新大赛开放报名啦!
- 【转载】关于测试人员的职业发展
- Sencha Architect 2 的使用
- Adobe Flex Application LifeCycle
- python 干什么工作具有明显优势-Python在数据分析方面有什么独特优势
- BZOJ2038:[2009国家集训队]小Z的袜子——题解
- Android源码目录结构
- 奠定技术基石 英特尔创新引擎闪耀CES2019
- 5步教你成功求职进入BAT
- 利用openpose跑关键点
- 移动高德地图marker点
- 6种css3鼠标滑过动画效果
- 安卓手机软件开发_这款安卓神器,让你下片更轻松!千万别滥用
- 设备维护管理的内容是什么?这四点你必须知道
- 大数据需要学习哪些技术?
- iOS闪退的原因和方案总结