1. Используйте теги для оформления кода.
2. Ошибка секретная?
3. Функция ID определена с параметром, а вызывается без.
4. Что вы этим i=100 хотели сказать? USART_SendData(USART2,i=100);
5. Ну и алгоритм какой-то стрёмный. Я его не понимаю, а значит там наверняка ошибка.
7. А, да, самое то главное. Keil тут причем???
8. RXNE сбрасывается при чтении DR.
9. Проверять USART_IT_RXNE в регистре SR - грубая ошибка!
Спойлер
6. Вам за количество символов в программе платят?Код:
void USART2_IRQHandler()
{
if (USART2->SR & USART_SR_RXNE)
{
RX_buffer[RX_ct++] = USART2->DR;
if ((RX_ct == 2) && (RX_buffer[0] == 0x01)) ID();
}
}
void ID ()
{
while (!(USART2->SR & USART_SR_TXE));
USART2->DR=100;
}