Код
*pSIC_IAR0 = 0x0FFFFFFF; //SPORT1 RX IRQ 0=IVG7
*pSIC_IAR1 = 0xFFFFFFFF;
*pSIC_IAR2 = 0xFFFFFFFF;
*pSIC_IAR3 = 0xFFFFFFFF;
Вы уверены что поставили ноль куда надо, не знаю точно как в 537 но у 533 этот ноль соответствует прерыванию RTC. Думаю регистры этих процессоров одинаковые. Значения этих регистров никогда не менял всегда оставлял по-умолчанию. Тем более вы не меняете приоритет, а оставляетет его как он был. Вы хотите работать с DMA? Если да то не вижу настройку DMA. И тут опять возможно расхождения с 533 но DMA5 соответствует SPI а не SPORT.
Вот это
Код
while(SPORT1_STAT & RXNE)
{
u16 adc_data = *pSPORT1_RX;
//пишу данные куда надо
}
надо заменить на
Код
while(!(*pSPORT1_STAT & RXNE));
tmp = *pSPORT1_RX16;
Что у вас *pSPORT1_RX это указатель на short или int? Судя по всему у вас 16 разрядные слова, по-этому это должен быть указатель на short. Для 533 он определен как *pSPORT1_RX16. Чтение этого регистра уже сбрасывает флаг прерывания.