新手入门
- 积分
- 4
- 金钱
- 4
- 注册时间
- 2019-9-12
- 在线时间
- 0 小时
|
1金钱
求助:我用定时器2 做了一个PWM 功能是 每发送一次PWM 进入一次定时器2中断,然后在定时器2中断里面做一个计数器累加并判断如果大于32次就关闭PWM。这个PWM 是 大约100US 使能一次,从新产生一个PWM。。同时用定时器3做了一个100US的定时器,这个定时器中断里面我做了一些程序。结果发现 定时器3 中断会影响 我做的PWM,使PWM产生的个数大于我开始设定的32次了(可能是40左右,如果屏蔽定时器3中断里面的程序,PWM 就恢复)。我试图通过改变中断优先级来解决这个问题,但最后没有成功。问题1:通过配置中断优先级能不能解决我的问题,如果能帮忙看看我为什么失败了。问题2:有什么好的方法能解决我遇到的问题吗?希望各位大神伸出援助之手,再次感谢。
中断优先级设置:
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel; //用于PWM
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01; //抢占优先级1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //从优先级1,
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //允许中断
NVIC_Init(&NVIC_InitStructure);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel; //用于100Us定时
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01; //抢占优先级1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //从优先级2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //允许中断
NVIC_Init(&NVIC_InitStructure);
|
|