初学stm32---高级定时器输出n个pwm波

目录

高级定时器简介:(F1)

高级定时器框图

重复计数器特性

高级定时器输出指定个数PWM实验原理

高级定时器输出指定个数PWM实验配置步骤

相关HAL库函数介绍

关键结构体介绍


高级定时器简介:(F1)

1.高级定时器 :TIM1/TIM8

2.主要特性:

  • (1)16位递增、递减、中心对齐计数器(计数值:0~65535)
  • (2)16位预分频器(分频系数:1~65536)
  • (3)可用于触发DAC、ADC
  • (4)在更新事件、触发事件、输入捕获、输出比较时,会产生中断/DMA请求
  • (5)4个独立通道,可用于:输入捕获、输出比较、输出PWM、单脉冲模式
  • (6)使用外部信号控制定时器且可实现多个定时器互连的同步电路
  • (7)支持编码器和霍尔传感器电路等
  • (8)重复计数器
  • (9)死区时间带可编程的互补输出
  • (10)断路输入,用于将定时器的输出信号置于用户可选的安全配置中

高级定时器框图

重复****计数器特性

计数器每次上溢或下溢都能使重复计数器减1,减到0时,再发生一次溢出就会产生更新事件。

如果设置RCR为N,更新事件将在N+1次溢出时发生

高级定时器输出指定个数PWM实验原理

1,配置边沿对齐模式输出PWM

2,指定输出N个PWM,则把N-1写入RCR

3,在更新中断内,关闭计数器

注意:高级定时器通道输出必须把MOE位置1

高级定时器输出指定个数PWM实验配置步骤

1,配置定时器基础工作参数 HAL_TIM_PWM_Init()

2,定时器PWM输出MSP初始化 HAL_TIM_PWM_MspInit() 配置NVIC、CLOCK、GPIO等

3,配置PWM模式/比较值等 HAL_TIM_PWM_ConfigChannel()

4,设置优先级,使能中断 HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()

5,使能定时器更新中断 __HAL_TIM_ENABLE_IT()

6,使能输出、主输出、计数器 HAL_TIM_PWM_Start()

7,编写中断服务函数 TIMx_IRQHandler()等 à HAL_TIM_IRQHandler()

8,编写更新中断回调函数 HAL_TIM_PeriodElapsedCallback()

相关HAL库函数介绍

关键结构体介绍

cpp 复制代码
typedef struct 
{ 
   uint32_t OCMode; 	  /* 输出比较模式选择 */
   uint32_t Pulse; 	            /* 设置比较值 */
   uint32_t OCPolarity;       /* 设置输出比较极性 */
   uint32_t OCNPolarity;    /* 设置互补输出比较极性 */
   uint32_t OCFastMode;   /* 使能或失能输出比较快速模式 */
   uint32_t OCIdleState;     /* 空闲状态下OC1输出 */
   uint32_t OCNIdleState;  /* 空闲状态下OC1N输出 */ 
} TIM_OC_InitTypeDef;

注意事项:需要启动软件的更新事件,使用函数为HAL_TIM_GenerateEvent(&TIM_Handle_npwm_struct, TIM_EVENTSOURCE_UPDATE);

并且开启计数器,__HAL_TIM_ENABLE(&TIM_Handle_npwm_struct);

然后再中断中关闭计数器 TIM8->CR1 &= ~(1 << 0);,操作CR1的第0位,置零。

需要知道是的,在中断中操作了RCR重复计数寄存器后,需要重新重新启动软件的更新事件,并且开启计数器,这样才能将RCR的值写入影子寄存器。

相关推荐
代码游侠1 分钟前
ARM嵌入式开发代码实践——LED灯闪烁(C语言版)
c语言·开发语言·arm开发·笔记·嵌入式硬件·学习
Analog11113 分钟前
电子秤采用 SIG5530 国产平替 CS5530
人工智能·嵌入式硬件·目标检测·硬件架构·信号处理·智能硬件
Saniffer_SH35 分钟前
【高清视频】笔记本电脑出现蓝屏、死机、慢、不稳定是这样连接分析M.2 SSD的
运维·服务器·网络·人工智能·驱动开发·嵌入式硬件·fpga开发
赤~峰1 小时前
S32DS for S32 Platform GPIO输入中断实践
单片机·嵌入式硬件
三伏5222 小时前
HAL_I2C_ER_IRQHandler函数解析
stm32·单片机·hal库
想放学的刺客3 小时前
单片机嵌入式试题(第19期)嵌入式系统故障诊断与固件升级设计
c语言·stm32·嵌入式硬件·物联网·51单片机
自动化控制仿真经验汇总3 小时前
Simulink电机控制安全-PART-直流电机-限位器
单片机·嵌入式硬件·安全
VekiSon3 小时前
ARM架构——C 语言+SDK+BSP 实现 LED 点灯与蜂鸣器驱动
c语言·开发语言·arm开发·嵌入式硬件
代码游侠4 小时前
ARM开放——阶段问题综述(一)
arm开发·笔记·嵌入式硬件·学习·架构
大江东去浪淘尽千古风流人物4 小时前
【Project Aria】Meta新一代的AR眼镜及其数据集
人工智能·嵌入式硬件·算法·性能优化·ar·dsp开发