新手入门
- 积分
- 7
- 金钱
- 7
- 注册时间
- 2019-8-13
- 在线时间
- 2 小时
|
一直都在论坛索取,今天刚好一个小的调试BUG在论坛没有找到解决方案,解决后准备发上来分享一下。
最近调试CAN总线,发现CAN中断不能打断定时器中断,即使配置了CAN中断抢断优先级为0,定时器抢断优先级为1,也不能实现中断嵌套。所以准备用两个定时器中断重复这个实验过程。
配置定时器中断优先级如下:
NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn; //定时器4中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; //抢占优先级1
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x01; //响应优先级1
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //定时器3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; //抢占优先级2
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02; //响应优先级
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
定时器3 2ms中断,定时器4 10ms中断,进入中断IO引脚拉高,退出中断IO引脚拉低,问题表现为,定时器4无法抢断定时器2进行中断。示波器显示如下:
问题解决:设置系统中断优先级分组需要在定时器初始化前,否则初始化定时器时,并没有分组信息。
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
TIM3_Init(999,839);
TIM4_Init(999,167);
程序正常运行后示波器照片如下:
|
|