本帖最后由 man2man 于 2016-4-8 10:30 编辑
在做mini51程序时用了一个timer1一个EXIT1想让tmr1的优先级高一点,查文档发现:
Exit1级别为3,高于TMR1
只能修改优先级了,查BSP没有相关说明,只能自己来了
第一步 查技术手册发现与中断优先级相关REG如下
要修改IRQ3和IRQ9对应的值,查看发现在寄器中用2bit来设置4级优先级
直接操作寄存器有点麻烦,在BSP中NVIC,发现以下函数
__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
这个就是来设置优先级的了吧
查函数代码,发现是设置NVIC->IP,反查
IP对就偏移地址0x300,结合上面的NVIC_IPR0(SCS_BA+0x400) ,差0x100,再细看,NVIC_ISER(SCS_BA+0x100)
这不0x100就对上了,说明正好是这个
得到解决方法
NVIC_SetPriority(EINT1_IRQn,1);
NVIC_SetPriority(TMR1_IRQn,0);
附上IRQn_Type的定义
完成
看来学习时要动一下脑子
|