完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
H7所含的定时器资源
H7中一共包含10个通用定时器(TIM2~TIM5,TIM12~TIM17), 其中TIM2~TIM5具有4个通道,而TIM12~TIM17只具有2个通道。 其中TIM2~TIM5支持向上、向下、向下/向上自动装载计数器(TIMx——CNT) (仅TIM2和TIM5是32位计数器)TIM12~TIM17只支持向上(递增)计数方式。 软件设计部分 定时器初始化 TIM_HandleTypeDef TIM3_Handler; //创建TIM3句柄 void TIM3_Init(u16 arr,u16 psc) { TIM3_Handler.Instance=TIM3; //选择通用定时器3 TIM3_Handler.Init.Prescaler=psc; //预分频系数,TIM3是十六位计数器 TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;//模式向上计数 TIM3_Handler.Init.Period=arr; //重装载值 TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子 HAL_TIM_Base_Init(&TIM3_Handler); //初始化定时器 HAL_TIM_Base_Start_IT(&TIM3_Handler); //使能定时器3和定时器3更新中断 定时器频率设置:如果设置MCU系统时钟为400MHz,则定时器频率为200MHz/(psc+1) 计数时间:T=(arr+1)/定时器频率 2.定时器底层驱动 //此函数会被上方的HAL_TIM_Base_Init(&TIM3_Handler)调用 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) { __HAL_RCC_TIM3_CLK_ENABLE(); //定时器3时钟使能 HAL_NVIC_SetPriority(TIM3_IRQn,1,3); //定时器中断优先级设置,抢占优先级为1,子优先级3 HAL_NVIC_EnableIRQ(TIM3_IRQn); //使能定时器3中断 } 定时器3中断函数 void TIM3_IRQHandler(void) { HAL_TIM_IRQHandler(&TIM3_Handler); } 定时器中断服务函数调用 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim==(&TIM3_Handler)) //判断是定时器3溢出中断 { 定时器中断处理函数 } } |
|
|
|
H7所含的定时器资源
H7中一共包含10个通用定时器(TIM2~TIM5,TIM12~TIM17), 其中TIM2~TIM5具有4个通道,而TIM12~TIM17只具有2个通道。 其中TIM2~TIM5支持向上、向下、向下/向上自动装载计数器(TIMx——CNT) (仅TIM2和TIM5是32位计数器)TIM12~TIM17只支持向上(递增)计数方式。 软件设计部分 定时器初始化 TIM_HandleTypeDef TIM3_Handler; //创建TIM3句柄 void TIM3_Init(u16 arr,u16 psc) { TIM3_Handler.Instance=TIM3; //选择通用定时器3 TIM3_Handler.Init.Prescaler=psc; //预分频系数,TIM3是十六位计数器 TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;//模式向上计数 TIM3_Handler.Init.Period=arr; //重装载值 TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子 HAL_TIM_Base_Init(&TIM3_Handler); //初始化定时器 HAL_TIM_Base_Start_IT(&TIM3_Handler); //使能定时器3和定时器3更新中断 定时器频率设置:如果设置MCU系统时钟为400MHz,则定时器频率为200MHz/(psc+1) 计数时间:T=(arr+1)/定时器频率 2.定时器底层驱动 //此函数会被上方的HAL_TIM_Base_Init(&TIM3_Handler)调用 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) { __HAL_RCC_TIM3_CLK_ENABLE(); //定时器3时钟使能 HAL_NVIC_SetPriority(TIM3_IRQn,1,3); //定时器中断优先级设置,抢占优先级为1,子优先级3 HAL_NVIC_EnableIRQ(TIM3_IRQn); //使能定时器3中断 } 定时器3中断函数 void TIM3_IRQHandler(void) { HAL_TIM_IRQHandler(&TIM3_Handler); } 定时器中断服务函数调用 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim==(&TIM3_Handler)) //判断是定时器3溢出中断 { 定时器中断处理函数 } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1763 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1617 浏览 1 评论
1059 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
723 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1932浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
725浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
564浏览 3评论
591浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
549浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 20:51 , Processed in 0.800252 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号