ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
565836 Топик полностью
Vit (13.12.2014 23:24 - 14.12.2014 00:33, просмотров: 69) ответил vl на Гляньте неотвеченную тему в разделе ARM. Легче?
код из похожей оперы --> https://github.com/duff2013/LowPower_Teensy3/blob/master/utility/module.c
https://tfc-twr.googlecode.com/svn-history/r4/trunk/SRC/TFC_BringUp/Sources/TFC/TFC_UART.c
и зачем-то включение делают bitband-ом по первой ссылке при отправке блока просто проверяют наличие данных для передачи и разрешают прерывание, но не пихают символ на отправку. и уже в обработчике выгребают и отправляют, а после последнего байта отрубают разрешение прерывания void TFC_UART_Process() { if(BytesInQueue(&TFC_TWR_UART0_OUTGOING_QUEUE)>0 && (UART4_S1 & UART_S1_TDRE_MASK)) UART4_C2 |= UART_C2_TIE_MASK; //Enable Transmitter Interrupts if(BytesInQueue(&TFC_TWR_UART1_OUTGOING_QUEUE)>0 && (UART3_S1 & UART_S1_TDRE_MASK)) UART3_C2 |= UART_C2_TIE_MASK; //Enable Transmitter Interrupts } void UART3_ISR() { uint8_t Temp; if(UART3_S1 & UART_S1_RDRF_MASK) { ByteEnqueue(&TFC_TWR_UART1_INCOMING_QUEUE,UART3_D); } if(UART3_S1 & UART_S1_TDRE_MASK) { if(BytesInQueue(&TFC_TWR_UART1_OUTGOING_QUEUE)>0) { ByteDequeue(&TFC_TWR_UART1_OUTGOING_QUEUE,&Temp); UART3_D = Temp; } else { //if there is nothing left in the queue then disable interrupts UART3_C2 &= ~UART_C2_TIE_MASK; //Disable the Interrupts } } }