完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32 CubeIDE(八)通用定时器PWM
通用定时器 STM32F407 系列控制器有10 个通用定时器,所有通用定时器都是彼此独立的,不共享任何资源。 APB1接口定时器(42MHz): TIM2、TIM5:32位计数器、支持向上计数、向下计数、向上向下计数,可生产DMA请求、四路捕获/比较通道,支持正交解码。 TIM3、TIM4:16位计数器、支持向上计数、向下计数、向上向下计数,可生产DMA请求、四路捕获/比较通道,支持正交解码。 TIM12:16位计数器、支持向上计数,两路捕获/比较通道。 TIM13、TIM14:16位计数器、支持向上计数,一路捕获/比较通道。 APB2接口定时器(84MHz): TIM9:16位计数器、支持向上计数,两路捕获/比较通道。 TIM10、TIM11:16位计数器、支持向上计数,一路捕获/比较通道。 输入/比较通道可用于: 输入捕获 输出比较 PWM生产 单脉冲输出 PWM 脉冲宽度调制,简称PWM,是利用微型处理器的数字信号输出来对模拟威廉希尔官方网站 进行控制的一种非常有效的技术,广泛应用于测量、通讯、功率控制与变换的许多领域中。 在模拟威廉希尔官方网站 中,时间和值在幅度上几乎没有限制,基本上可以取任何实数值,所以电压和电流可以直接用来控制对象。 而在数字威廉希尔官方网站 中,只能输出1和0两种状态,所以电压或电流会通过通断方式的重复脉冲序列加载到模拟负载。 PWM波就是用数字信号对模拟信号的电平进行编码后的脉冲。 PWM的优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换,让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑 1 改变为逻辑 0 或将逻辑 0 改变为逻辑 1 时,也才能对数字信号产生影响。 总之,PWM既经济、节约空间、抗噪性能强,是一种广大工程师在许多设计应用中使用的有效技术。 通用定时器PWM原理 以向上计数模式为例,除了定时器计数值CNT和自动重装载值ARR之外,还有一个计数比较值CCR,当CNT 》 CCR时,通道输出高电平,当CNT 《 CCR时,通道输出低电平,当CNT = ARR时,重新开始计时,至此就输出了一个PWM波。 输出比较初始化结构体 /** * @brief TIM Output Compare Configuration Structure definition */ typedef struct { uint32_t OCMode; /*!《 输出比较模式 */ uint32_t Pulse; /*!《 输出比较值 */ uint32_t OCPolarity; /*!《 输出极性 */ uint32_t OCNPolarity; /*!《 互补通道输出极性 */ uint32_t OCFastMode; /*!《 PWM快速模式 */ uint32_t OCIdleState; /*!《 空闲状态输出极性 */ uint32_t OCNIdleState; /*!《 互补通道空闲状态输出极性 */ } TIM_OC_InitTypeDef; PWM模式 TIM_OCMODE_PWM1:在向上计数时,一旦CNT《CCR时通道为有效电平,否则为无效电平;在向下计数时,一旦CNT》CCR时通道为无效电平,否则为有效电平。 TIM_OCMODE_PWM2:在向上计数时,一旦CNT《CCR时通道为无效电平,否则为有效电平;在向下计数时,一旦CNT》CCR时通道为有效电平,否则为无效电平。 PWM函数 HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim); //PWM定时器初始化 HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel); //PWM通道初始化 HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel); //开启定时器通道的PWM HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); //开启定时器通道的PWM和中断 __HAL_TIM_SetCompare(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t Compare); //设置定时器通道比较值 PWM输出实验 本次实验基于野火STM32F407-霸天虎V2开发板实现,使用通用定时器14产生1KHz,占空比70%的PWM波,,并通过示波器进行观察。 打开Cube,在Timers中激活TIM14,Channel1设置为PWM Generation CH1,设置分频系数83,向上计数模式,自动重装载值999,使能自动重装载,PWM模式1,比较值699,有效电平High。TIM14时钟频率为84MHz,84分频后为1MHz,即计数周期1us,计数值1000即PWM周期1ms,频率1KHz,比较值700,占空比70%。 生成代码后,在main函数中相应位置添加以下代码开启PWM输出。 int main(void) { /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim14, TIM_CHANNEL_1); /* USER CODE END 2 */ } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1885 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1663 浏览 1 评论
1149 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
763 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1720 浏览 2 评论
1964浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
790浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
614浏览 3评论
631浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
593浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-14 01:56 , Processed in 0.708269 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号