Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 28.06.2018, 18:42  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от prinv Посмотреть сообщение
Причём здесь HAL?
При том, что кусок из Хала.
Реклама:
sat_art вне форума  
Непрочитано 28.06.2018, 18:42  
prinv
Прописка
 
Регистрация: 05.09.2012
Адрес: Россия, Пермь
Сообщений: 160
Сказал спасибо: 25
Сказали Спасибо 31 раз(а) в 27 сообщении(ях)
prinv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Исбанни Посмотреть сообщение
Многие ли ЗНАЮТ, что делать с HAL-не_ОКей, какие действия к нему приводят и что вообще это означает?
А тут HAL причём?
prinv вне форума  
Непрочитано 28.06.2018, 18:43  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

prinv, что Вы курите там?
sat_art вне форума  
Непрочитано 28.06.2018, 18:47  
Исбанни
Прописка
 
Регистрация: 21.04.2018
Сообщений: 174
Сказал спасибо: 1
Сказали Спасибо 66 раз(а) в 53 сообщении(ях)
Исбанни на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

prinv, да, $#%ь, при том, что:
PHP код:
   /* Receive data in 8 Bit mode */
    
if(hspi-›Init.DataSize == SPI_DATASIZE_8BIT)
    {
      while(
hspi-›RxXferCount › 1)
      {
        
/* Wait until RXNE flag is set */
        
if(SPI_WaitOnFlagUntilTimeout(hspiSPI_FLAG_RXNERESETTimeout) != HAL_OK)
        { 
          return 
HAL_TIMEOUT;
        }

        (*
hspi-›pRxBuffPtr++) = hspi-›Instance-›DR;
        
hspi-›RxXferCount--;
      } 
это этот ваш самый HAL. А вы даже не знаете структуру HAL! А еще спрашиваете о какой-то $#%-ной "конкретике".
Вот вам КОНКРЕТИКА самая настоящая. КОНКРЕТНЕЕ НЕКУДА!

Причем, КОНКРЕТНО можете объяснить, на что именно и ЗАЧЕМ уходит процессорное время в этом HAL-овском куске кода, который в простой CMSIS-записи сокращается до банальных
while(READ_BIT(USED_SPI-›SR, SPI_SR_RXNE) == 0) { };
byte = USED_SPI-›DR;

Последний раз редактировалось Исбанни; 28.06.2018 в 18:55.
Исбанни вне форума  
Сказали "Спасибо" Исбанни
eddy (28.06.2018)
Непрочитано 28.06.2018, 18:56  
Исбанни
Прописка
 
Регистрация: 21.04.2018
Сообщений: 174
Сказал спасибо: 1
Сказали Спасибо 66 раз(а) в 53 сообщении(ях)
Исбанни на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Да о чем тут можно говорить?? Этот HAL-овод prinv не разбирается даже в собственном HAL-е!! Он просил "конкретики" - вот ему КОНКРЕТИКА, $#$@, а он даже ни слова не понял из конкретики, а в недоумении выдавил "А причем тут HAL_OK и HAL?" Ну о чем тут можно еще спорить?!

--------------------------
Ну ладно, конкретика так конкретика, #$%#.
ЧИСТА КОНКРЕТНЫЙ пример: (огромнейшая портянка кода, выполняющая SPI transmitt на HAL-е)
Нажмите, чтобы открыть спойлер
Код:
/**
  * @brief  Transmit an amount of data in blocking mode
  * @param  hspi: pointer to a SPI_HandleTypeDef structure that contains
  *                the configuration information for SPI module.
  * @param  pData: pointer to data buffer
  * @param  Size: amount of data to be sent
  * @param  Timeout: Timeout duration
  * @retval HAL status
  */
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)
{

  if(hspi-›State == HAL_SPI_STATE_READY)
  {
    if((pData == NULL ) || (Size == 0)) 
    {
      return  HAL_ERROR;
    }

    /* Check the parameters */
    assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi-›Init.Direction));

    /* Process Locked */
    __HAL_LOCK(hspi);

    /* Configure communication */
    hspi-›State = HAL_SPI_STATE_BUSY_TX;
    hspi-›ErrorCode   = HAL_SPI_ERROR_NONE;

    hspi-›pTxBuffPtr  = pData;
    hspi-›TxXferSize  = Size;
    hspi-›TxXferCount = Size;

    /*Init field not used in handle to zero */
    hspi-›TxISR = 0;
    hspi-›RxISR = 0;
    hspi-›pRxBuffPtr  = NULL;
    hspi-›RxXferSize  = 0;
    hspi-›RxXferCount = 0;

    /* Reset CRC Calculation */
    if(hspi-›Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)
    {
      SPI_RESET_CRC(hspi);
    }

    if(hspi-›Init.Direction == SPI_DIRECTION_1LINE)
    {
      /* Configure communication direction : 1Line */
      SPI_1LINE_TX(hspi);
    }

    /* Check if the SPI is already enabled */ 
    if((hspi-›Instance-›CR1 &SPI_CR1_SPE) != SPI_CR1_SPE)
    {
      /* Enable SPI peripheral */
      __HAL_SPI_ENABLE(hspi);
    }

    /* Transmit data in 8 Bit mode */
    if(hspi-›Init.DataSize == SPI_DATASIZE_8BIT)
    {
      if((hspi-›Init.Mode == SPI_MODE_SLAVE)|| (hspi-›TxXferCount == 0x01))
      {
        hspi-›Instance-›DR = (*hspi-›pTxBuffPtr++);
        hspi-›TxXferCount--;
      }

      while(hspi-›TxXferCount › 0)
      {
        /* Wait until TXE flag is set to send data */
        if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_TXE, RESET, Timeout) != HAL_OK)
        { 
          return HAL_TIMEOUT;
        }
        hspi-›Instance-›DR = (*hspi-›pTxBuffPtr++);
        hspi-›TxXferCount--;
      }
      /* Enable CRC Transmission */
      if(hspi-›Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) 
      {
        SET_BIT(hspi-›Instance-›CR1, SPI_CR1_CRCNEXT);
      }
    }
    /* Transmit data in 16 Bit mode */
    else
    {
      if((hspi-›Init.Mode == SPI_MODE_SLAVE) || (hspi-›TxXferCount == 0x01))
      {
        hspi-›Instance-›DR = *((uint16_t*)hspi-›pTxBuffPtr);
        hspi-›pTxBuffPtr+=2;
        hspi-›TxXferCount--;
      }

      while(hspi-›TxXferCount › 0)
      {
        /* Wait until TXE flag is set to send data */
        if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_TXE, RESET, Timeout) != HAL_OK)
        { 
          return HAL_TIMEOUT;
        }
        hspi-›Instance-›DR = *((uint16_t*)hspi-›pTxBuffPtr);
        hspi-›pTxBuffPtr+=2;
        hspi-›TxXferCount--;
      }
      /* Enable CRC Transmission */
      if(hspi-›Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) 
      {
        SET_BIT(hspi-›Instance-›CR1, SPI_CR1_CRCNEXT);
      }
    }

    /* Wait until TXE flag is set to send data */
    if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_TXE, RESET, Timeout) != HAL_OK)
    {
      SET_BIT(hspi-›ErrorCode, HAL_SPI_ERROR_FLAG);
      return HAL_TIMEOUT;
    }

    /* Wait until Busy flag is reset before disabling SPI */
    if(SPI_WaitOnFlagUntilTimeout(hspi, SPI_FLAG_BSY, SET, Timeout) != HAL_OK)
    { 
      SET_BIT(hspi-›ErrorCode, HAL_SPI_ERROR_FLAG);
      return HAL_TIMEOUT;
    }
 
    /* Clear OVERUN flag in 2 Lines communication mode because received is not read */
    if(hspi-›Init.Direction == SPI_DIRECTION_2LINES)
    {
      __HAL_SPI_CLEAR_OVRFLAG(hspi);
    }

    hspi-›State = HAL_SPI_STATE_READY; 

    /* Process Unlocked */
    __HAL_UNLOCK(hspi);

    return HAL_OK;
  }
  else
  {
    return HAL_BUSY;
  }
}


та же самая вещь на сверх-компактном правоверном CMSIS:
Код:
void SPI_SendByte(uint8_t byte)
{
	while(READ_BIT(SPI1-›SR, SPI_SR_TXE) == 0) { }
	SPI1-›DR = byte;
}//----------------------------------------------
И ЭТО ВСЁЁЁЁЁ!!!!! ВСЁЁ! КОНКРЕТНЫЙ ДОЛБАНЫЙ ПРИМЕР СРАВНЕНИЯ! ЧИСТО КОНРЕТНА!
Желающие могут добавить таймаут ожидания TXE и выход с возвратом состояния ошибки по истечению таймаута. это буквально три строчки

Последний раз редактировалось Исбанни; 28.06.2018 в 19:11.
Исбанни вне форума  
Непрочитано 28.06.2018, 19:07  
prinv
Прописка
 
Регистрация: 05.09.2012
Адрес: Россия, Пермь
Сообщений: 160
Сказал спасибо: 25
Сказали Спасибо 31 раз(а) в 27 сообщении(ях)
prinv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от sat_art Посмотреть сообщение
При том, что кусок из Хала
Если HSI не стартанёт - вам уже и HSE не поможет.
HAL здесь причём?
prinv вне форума  
Непрочитано 28.06.2018, 19:11  
prinv
Прописка
 
Регистрация: 05.09.2012
Адрес: Россия, Пермь
Сообщений: 160
Сказал спасибо: 25
Сказали Спасибо 31 раз(а) в 27 сообщении(ях)
prinv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Исбанни Посмотреть сообщение
Да о чем тут можно говорить?? Этот HAL-овод prinv не разбирается даже в собственном HAL-е!! Он просил "конкретики" - вот ему КОНКРЕТИКА, $#$@, а он даже ни слова не понял из конкретики, а в недоумении выдавил "А причем тут HAL_OK и HAL?" Ну о чем тут можно еще спорить?!
Если программер не контролирует возвращаемый результат, то причём тут HAL?
prinv вне форума  
Непрочитано 28.06.2018, 19:13  
Исбанни
Прописка
 
Регистрация: 21.04.2018
Сообщений: 174
Сказал спасибо: 1
Сказали Спасибо 66 раз(а) в 53 сообщении(ях)
Исбанни на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

prinv, я кажется КОНКРЕТНО ВЫРАЗИЛСЯ - а что делать с HAL_не_ОКей и почему это происходит? Знаете? Отвечайте предельно конкретно!
А еще выше я привет ПРЕДЕЛЬНО КОНКРЕТНЫЙ пример. Знаете, что это?

Сообщение от prinv Посмотреть сообщение
Если HSI не стартанёт - вам уже и HSE не поможет.
А на чем тогда работает МК? На дровах или угле? и ладно, если есть MSI. Но при неисправности аналоговой части MSI тоже не запустится, а вместе с ним и весь МК тоже.

Последний раз редактировалось Исбанни; 28.06.2018 в 19:19.
Исбанни вне форума  
Непрочитано 28.06.2018, 19:17  
prinv
Прописка
 
Регистрация: 05.09.2012
Адрес: Россия, Пермь
Сообщений: 160
Сказал спасибо: 25
Сказали Спасибо 31 раз(а) в 27 сообщении(ях)
prinv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Исбанни Посмотреть сообщение
а что делать с HAL_не_ОКей и почему это происходит?
Если не HAL_OK - отрабатывай в зависимости от возвращённого кода.
В чём вопрос-то?
Какая разница - HAL, SPL или CMSIS для обработки ошибок? Ошибки или обрабатываются, или на обработку ошибок забивают.

Последний раз редактировалось prinv; 28.06.2018 в 19:20.
prinv вне форума  
Непрочитано 28.06.2018, 19:22  
prinv
Прописка
 
Регистрация: 05.09.2012
Адрес: Россия, Пермь
Сообщений: 160
Сказал спасибо: 25
Сказали Спасибо 31 раз(а) в 27 сообщении(ях)
prinv на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Исбанни, вы бы прекратили уже редактировать сообщения, на которые уже дали ответ
prinv вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 17:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot