完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
按手册上敲的,但定时器5还是一直在运行任务函数
[C] 纯文本查看 复制代码 void interrupt_task(void *pvParameters){static u32 total_num=0;while(1){total_num += 1;if(total_num == 5){printf("关闭中断.........rn");portDISABLE_INTERRUPTS();//关闭中断delay_ms(5000);//延时5sprintf("打开中断.........rn");//打开中断portENABLE_INTERRUPTS();//打开中断}LED0 =~ LED0;vTaskDelay(1000);}} 定时器的定义 [C] 纯文本查看 复制代码 void TIM3_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); ///使能TIM2时钟 TIM_TimeBaseInitStructure.TIM_Period = arr; //自动重装载值TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定时器分频TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允许定时器3更新中断TIM_Cmd(TIM3,ENABLE); //使能定时器3NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //定时器3中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x04; //抢占优先级4NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x00; //子优先级0NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);} [C] 纯文本查看 复制代码 void TIM5_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); ///使能TIM5时钟 TIM_TimeBaseInitStructure.TIM_Period = arr; //自动重装载值TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定时器分频TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM5,&TIM_TimeBaseInitStructure);//初始化TIM5TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE); //允许定时器5更新中断TIM_Cmd(TIM5,ENABLE); //使能定时器5NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn; //定时器5中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x05; //抢占优先级5NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x00; //子优先级0NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);} |
|
相关推荐
8个回答
|
|
输出的函数发来看看,你是在定时器中断输出的吗?
|
|
|
|
[C] 纯文本查看 复制代码
void TIM3_IRQHandler(void){if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断{printf("TIM3输出......rn");}TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位} [C] 纯文本查看 复制代码 void TIM5_IRQHandler(void){if(TIM_GetITStatus(TIM5,TIM_IT_Update)==SET) //溢出中断{printf("TIM5输出......rn");}TIM_ClearITPendingBit(TIM5,TIM_IT_Update); //清除中断标志位} |
|
|
|
试试寄存器版本sys.c里面的那两个函数,包好用。
|
|
|
|
试试寄存器版本sys.c里面的那两个函数,包好用。
|
|
|
|
这个是因为你关的中断是系统可管理的中断,按照你的代码应该是5,所以这个中断关不了的,在配置文件中改为3就可以关了,其实没必要?
把定时器中断优先级改为10也能关的掉?不信你试一下? |
|
|
|
将定时器的中断优先级改为10?抢占优先级吗?抢占优先级无效
|
|
|
|
看一下你的 delay_ms(5000); 函数,是否有任务调度。不能有任务调度
|
|
|
|
@发烧友 原子哥,我在这个实验中,加入了一个比中断任务优先级高的任务,关闭中断后,高优先级任务也被阻塞了,能帮忙解释下吗
|
|
|
|
只有小组成员才能发言,加入小组>>
772 浏览 0 评论
1148 浏览 1 评论
2527 浏览 5 评论
2858 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1060浏览 3评论
189浏览 2评论
453浏览 2评论
365浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
452浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 14:08 , Processed in 1.227896 second(s), Total 94, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191