完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
这里说明下,我这边的最小系统版的芯片型号是105K系列的,定时器部分没有TIM5TIM6,只有TIM4,所以不讲解TIM1与TIM5/6的同步,想要了解这部分可以看官方手册。
TIM1的计数器使用三种模式与外部的触发信号同步:标准触发模式、复位触发模式和门控触发模式。 标准触发模式: 说白了就是使用外部信号触发内部计数器启动,然而如何配置呢,看手册: 下面根据官方给出的步骤配置寄存器: void Tim1_trigger_standard_mode_Init(void){//tim1标准触发模式初始化 PC_DDR_DDR2 =0;//输入 //PD_CR1_C14 =0;//浮空输入 PC_CR1_C12 =1;//上拉输入 PC_CR2_C22 =0;//禁止外部中断功能 TIM1_CCMR2_CC2S=0x01;//CC2通道被配置为输入, IC2映射在TI2FP2上; TIM1_CCMR2_OC2M=0x00;//无滤波器,以fMASTER采样 TIM1_CCER1_CC2P=0;//捕获发生在TI2F的上升沿 TIM1_SMCR_SMS=0x06;//触发模式:计数器在触发输入TRGI的上升沿启动(但不复位),只有计数器的启动是受控的 TIM1_SMCR_TS=0x06;//选定TI2作为输入源 TIM1_IER_TIE=1;//触发中断使能 Send_String("rntim1标准触发模式初始化完成rn"); } #pragma vector=TIM1_OVR_TIF_vector//计数上升沿触发中断 __interrupt void Tim1_trigger_standard_mode_IRQHandler(void){ if(TIM1_SR1_TIF){ TIM1_SR1_TIF=0; Send_String("rn"); Send_String("计数触发中断rn"); } } 串口输出: 复位触发模式: 这个模式就是使计数器清零: void Tim1_Trigger_reset_mode_Init(void){//tim1复位触发模式初始化 PC_DDR_DDR1 =0;//输入 //PD_CR1_C14 =0;//浮空输入 PC_CR1_C11 =1;//上拉输入 PC_CR2_C21 =0;//禁止外部中断功能 TIM1_CCMR1_CC1S=0x01;//CC1通道被配置为输入, IC1映射在TI1FP1上; TIM1_CCMR1_OC1M=0x00;//无滤波器,以fMASTER采样 TIM1_CCER1_CC1P=0;//捕获发生在TI1F的上升沿 TIM1_SMCR_SMS=0x04;//复位模式: TIM1_SMCR_TS=0x05;//选定TI1作为输入源 TIM1_CR1_CEN=1;//使能计数器 TIM1_IER_TIE=1;//触发中断使能 Send_String("rntim1复位触发模式初始化完成rn"); } #pragma vector=TIM1_OVR_TIF_vector//计数上升沿触发中断 __interrupt void Tim1_trigger_standard_mode_IRQHandler(void){ if(TIM1_SR1_TIF){ TIM1_SR1_TIF=0; Send_String("rn"); Send_String("计数触发中断rn"); } } 串口调试输出: 门控触发模式: 这个模式是当TI1电平保持低时,计数器才继续计数,高的时候不计数。 void Tim1_Trigger_gated_mode_Init(void){//tim1门控触发模式初始化 PC_DDR_DDR1 =0;//输入 //PD_CR1_C14 =0;//浮空输入 PC_CR1_C11 =1;//上拉输入 PC_CR2_C21 =0;//禁止外部中断功能 TIM1_CCMR1_CC1S=0x01;//CC1通道被配置为输入, IC2映射在TI1FP1上; TIM1_CCMR1_OC1M=0x00;//无滤波器,以fMASTER采样 TIM1_CCER1_CC1P=1;//捕获发生在TI1F的上升沿 TIM1_SMCR_SMS=0x05;//门控模式 TIM1_SMCR_TS=0x05;//选定TI1作为输入源 TIM1_CR1_CEN=1;//使能计数器 TIM1_IER_TIE=1;//触发中断使能 Send_String("rntim1门控触发模式初始化完成rn"); } #pragma vector=TIM1_OVR_TIF_vector//计数上升沿触发中断 __interrupt void Tim1_trigger_standard_mode_IRQHandler(void){ if(TIM1_SR1_TIF){ TIM1_SR1_TIF=0; Send_String("rn"); Send_String("计数触发中断rn"); } } 串口调试输出: 按键保持为低时计数器继续计数。 外部时钟模式2+触发模式 这个模式使用ETR作为计数器计数信号,触发模式用于控制计数器计数、复位,这里选择的出发模式为标准触发模式。 void Tim4_Init(void){//tim4初始化 TIM4_CR1_ARPE=0;//预装载使能 TIM4_CR1_OPM=0;//计数器在更新事件时不停止 TIM4_CNTR=0;//计数器初始化 TIM4_PSCR_PSC=0x03;//8分频,8M/8=1M TIM4_ARR=0xFA;//初始化自动装载值 TIM4_EGR_UG=1;//手动产生更新事件 TIM4_IER_UIE=1;//更新中断使能 TIM4_CR1_CEN=1;//使能计数器 } void GPIO_PE5_Init(){//PE5端口初始化 PE_DDR_DDR5=1;//配置PD0为输出模式 PE_CR1_C15=1;//配置PD0为推挽模式 PE_CR2_C25=1;//配置PD0输出最大为10Mhz PE_ODR_ODR5=0; } unsigned int i=0; #pragma vector=TIM4_OVR_UIF_vector//TIM4更新中断 __interrupt void TIM4_OVR_UIF_IRQHandler(void){ if(TIM4_SR_UIF) { i++; TIM4_SR_UIF=0;//清除更新中断标志 if(i>=4000){ i=0; PE_ODR_ODR5=!PE_ODR_ODR5; } } } void Tim1_Count_mode2_Init(void){//tim1计数模式2初始化 PB_DDR_DDR3 =0;//输入 //PB_CR1_C14 =0;//浮空输入 PB_CR1_C13 =1;//上拉输入 PB_CR2_C23 =0;//使能外部中断功能 TIM1_ETR_ETF=0x00;//无滤波器,以fMASTER采样 TIM1_ETR_ETPS=0x00;//无分频 TIM1_ETR_ETP=0;//ETR不反相,即高电平或上升沿有效 TIM1_ETR_ECE=1;//使能外部时钟模式2,计数器的时钟为ETRF的有效沿 // TIM1_IER_TIE=1;//触发中断使能 //TIM1_CR1_CEN=1;//使能计数器 Send_String("tim1模式2计数初始化完成rn"); } void Tim1_trigger_standard_mode_Init(void){//tim1标准触发模式初始化 PC_DDR_DDR1 =0;//输入 //PD_CR1_C14 =0;//浮空输入 PC_CR1_C11 =1;//上拉输入 PC_CR2_C21 =0;//禁止外部中断功能 TIM1_CCMR1_CC1S=0x01;//CC1通道被配置为输入, IC1映射在TI1FP1上; TIM1_CCMR1_OC1M=0x00;//无滤波器,以fMASTER采样 TIM1_CCER1_CC1P=0;//捕获发生在TI2F的上升沿 TIM1_SMCR_SMS=0x06;//触发模式:计数器在触发输入TRGI的上升沿启动(但不复位),只有计数器的启动是受控的 TIM1_SMCR_TS=0x05;//选定TI1作为输入源 TIM1_IER_TIE=1;//触发中断使能 Send_String("rntim1标准触发模式初始化完成rn"); } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 23:38 , Processed in 0.751189 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号