コード例 #1
0
static void NVIC_SetPriority(int IRQn, uint32_t priority) {
  IRQn -= 16; /* PEx starts numbers with zero, while system interrupts would be negative */
#if configCPU_FAMILY_IS_ARM_M4_M7(configCPU_FAMILY)
  NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);   /* set Priority for device specific Interrupts  */
#else /* M0+ */
  NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
      (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); /* set Priority for device specific Interrupts  */
#endif
}
コード例 #2
0
ファイル: io_int.c プロジェクト: hacktm15/Car2015
void Io_Int_SetPriority(sint8 irq_number, uint8 priority)
{
	if(irq_number < 0)
	{
		SCB->SHP[_SHP_IDX(irq_number)] = (SCB->SHP[_SHP_IDX(irq_number)] & ~(0xFF << _BIT_SHIFT(irq_number))) |
	        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(irq_number));
	}
	else
	{
	NVIC->IP[_IP_IDX(irq_number)] = (NVIC->IP[_IP_IDX(irq_number)] & ~(0xFF << _BIT_SHIFT(irq_number))) |
		(((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(irq_number));
	}
}