完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
定时器中断只进入一次
void tiM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能TIM3时钟 TIM_TimeBaseStructure.TIM_Period = arr; //指定下次更新事件时要加载到活动自动重新加载寄存器中的周期值 TIM_TimeBaseStructure.TIM_Prescaler = psc; //指定用于划分TIM时钟的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_1; //时钟分频因子 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM计数模式,向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位 TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //使能TIM3中断,允许更新中断 //初始化TIM NVIC,设置中断优先级分组 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //设置抢占优先级0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //设置响应优先级3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道1中断 NVIC_Init(&NVIC_InitStructure); //初始化NVIC TIM_Cmd(TIM3, ENABLE); //TIM3使能 } void TIM3_IRQHandler(void) { static u8 i=0; if (TIM_GetITStatus(TIM3, TIM_IT_Update)!=RESET) //检查TIM3中断是否发生 { TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清除TIM3的中断挂起位 GPIO_WriteBit(GPIOA, GPIO_Pin_1, (i==0) ? (i=Bit_SET):(i=Bit_RESET)); printf("GPIO Togglern"); } } |
|
相关推荐
2个回答
|
|
你好,可参考链接中定时器中断的处理,该版本还有其他定时器的例程,可以参考一下。
|
|
|
|
谢谢 已经解决 RTOS的例程可以发一下吗
void TIM3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); |
|
|
|
只有小组成员才能发言,加入小组>>
481 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2877 浏览 2 评论
2366 浏览 1 评论
821浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
654浏览 1评论
502浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
367浏览 1评论
645浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 10:29 , Processed in 0.977027 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号