Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Вопросы по Keil

Пн апр 13, 2020 14:43:27

Здравствуйте ,мне надо передать по UART число в блоке данных с помощью функции :
void USART2_IRQHandler(void) //function obrabotchik preryvaniya
{

if ( USART_GetITStatus(USART2, USART_IT_RXNE) )
{
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
RX_buffer[RX_write] = USART_ReceiveData(USART2);
RX_write++;
RX_ct++;
if (RX_ct == 2)
{
if (RX_buffer[0] == 0x01) //ID
{
ID();
}
}
}
}

void ID (uint8_t i)
{
while (!USART_GetFlagStatus(USART2, USART_SR_TXE)) {}
USART_SendData(USART2,i=100);
}

Но почему-то все равно выдает ошибку ..

Re: Вопросы по Keil

Пн апр 13, 2020 15:18:36

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;
}

Re: Вопросы по Keil

Вт апр 14, 2020 06:46:58

И ни тебе спасибо, ни тебе до свидания....

Re: Вопросы по Keil

Чт июл 09, 2020 18:57:54

спасибо... до свидания :о)
Ответить