完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1、参考资料
《STM32F1开发指南-库函数版本》-第13章 定时器中断时实验 《STM32中文参考手册V10》-第14章 通用定时器 2、时钟选择 计数器时钟可以由下列时钟源提供: ①内部时钟(CK_INT) ②外部时钟模式1:外部输入脚(TIx) ③外部时钟模式2:外部触发输入(ETR) ④内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器, 如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。 3、内部时钟选择 4、时钟计算方法 除非APB1的分频系数是1,否则通用定时器的时钟等于APB1时钟的2倍。 默认调用SystemInit函数情况下: SYSCLK = 72M AHB时钟=72M APB1时钟=36M 所以APB1的分频系数=AHB/APB1时钟=2 所以,通用定时器时钟CK_INT = 2*36M = 72M 5、计数器模式 通用定时器可以向上计数、向下计数、向上向下双向计数模式。 ①向上计数模式:计数器0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。 ②向下计数模式:计数器自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。 ③中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后在从0开始重新计数。 6、向下计数模式(时钟分频因子=1) 向上计数模式(时钟分频因子=1) 中央对齐计数模式(时钟分频因子=1 ARR=6) 7、定时器中断实验相关寄存器 ·计数器当前值寄存器CNT ·预分频寄存器TIMx_PSC ·自动重装载寄存器(TIMx_ARR) ·控制寄存器1(TIMx_CR1) ·DMA中断使能寄存器(TIMx_DIER) ·常用库函数 定时器参数初始化: void TIM_TimeBaseInit(TIM_TypeDef* TIMx,TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); typedef struct { uint16_t TIM_Prescaler; uint16_t TIM_CounterMode; uint16_t TIM_Period; uint16_t TIM_ClockDivision; uint8_t TIM_RepetitionCounter; } TIM_TimeBaseInitTypeDef; TIM_TimeBaseStructure.TIM_Period = 4999; TIM_TimeBaseStructure.TIM_Prescaler =7199; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; T IM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); ·定时器使能函数: void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState) ·定时器中断使能函数: void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState); ·状态标志位获取和清除 FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT); void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT); 8、定时器中断实现步骤 ①使能定时器时钟 RCC_APB1PeriphClockCmd(); ②初始化定时器,配置ARR,PSC TIM_TimeBaseInit(); ③开启定时器中断,配置NVIC void TIM_ITConfig(); NVIC_Init(); ④使能定时器: TIM_Cmd(); ⑤编写中断服务函数 TIMx_IRQHandler(); 9、程序要求 通过定时器中断配置,每500ms中断一次,然后中断服务函数中控制LED实现LED1状态取反(闪烁)。 Tout(溢出事件) = (ARR+1)(PSC+1)/Tclk |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1921 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1687 浏览 1 评论
1174 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
772 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1735 浏览 2 评论
1978浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
810浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
259浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
625浏览 3评论
635浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-26 14:26 , Processed in 0.556337 second(s), Total 44, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号