/* Incoming UART messages will trigger an interrupt. The ISR keeps track of
* the incoming color code and updates the color structure as it receives
* characters.
*/
void USART3_IRQHandler(void)
{
uint8_t hex = 0;
static uint32_t ISRCount = 0; // counts interrupt service routines
if (USART_GetITStatus(USART3, USART_IT_RXNE) != RESET){
hex = ascii_to_hex((char)USART_ReceiveData(USART3));
}
if (ISRCount % 6 == 0) color = 0;
color += hex << 4*(5 - (ISRCount % 6));
ISRCount++;
AssignColor(&ColorStructure, color);
}