完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void tiM2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void TIM2_Int_Init(u16 arr,u16 psc) {? ?GPIO_InitTypeDef? GPIO_InitStructure ; ? ??TIM_ICInitTypeDef? ?TIM_ICInitStructure ; ? ??TIM_TimeBaseInitTypeDef? TIM_TimeBaseStructure; ? ???NVIC_InitTypeDef NVIC_InitStructure; ? ? RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //时钟使能 ? ??RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); ? ???GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; ? ???GPIO_InitStructure.GPIO_Mode =? GPIO_Mode_IPD; ? ???GPIO_Init(GPIOA, &GPIO_InitStructure); ? ? ??GPIO_ResetBits(GPIOA, GPIO_Pin_15); ? ???GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE); //PA0复用位定时器5 ? ? ?TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值? ? ???TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值? 10Khz的计数频率 ? ? ?TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim ? ???TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;? //TIM向上计数模式 ? ??TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位 ? ??TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;? //选择通道2 ? ???TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;//配置分频不分频 ? ???TIM_ICInitStructure.TIM_ICFilter = 0x00;//IC1F=0000 配置输入滤波器 不滤波 ? ???TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;//上升沿捕获 ? ???TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//映射到TI1上 ? ???TIM_PWMIConfig(TIM2, &TIM_ICInitStructure); ? ? NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; ? ? NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;? //先占优先级0级 ? ?NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;? //从优先级3级 ? ?NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能 ? ?NVIC_Init(&NVIC_InitStructure);? //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器 ?TIM2->INTFR = 0; ?TIM_ITConfig(TIM2, TIM_IT_CC1 , ENABLE); ?//TIM_ITConfig( TIM2, TIM_IT_Update ,ENABLE? ); ?TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2); ?TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); ?TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); ?TIM_Cmd(TIM2, ENABLE);? //使能TIMx外设 } u16 speed_JC; void TIM2_IRQHandler(void)? ?//TIM2中断 { ?if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) //检查指定的输入捕获中断发生与否:TIM 中断源 ?{ ?speed_JC++; ?printf ("%drn",speed_JC); ?TIM_ClearITPendingBit(TIM2,TIM_IT_CC1);? //清除TIM定时器更新中断待处理位:TIM 中断源 ?} } |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2617 浏览 2 评论
2145 浏览 1 评论
ch554g的板子准备烧录程序,用串口总是显示等待设备连接是为啥
1022浏览 14评论
请问ch32v307用ch-link调试或者读写有什么特殊操作方法吗?
921浏览 13评论
Windows系统下如何确定COM口为CH340/CH341设备?
2259浏览 12评论
697浏览 12评论
CH32V307以太网接近满速后,几秒或几十秒后就死机怎么解决?
1990浏览 11评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-17 02:13 , Processed in 0.719669 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号