Перейти к содержанию
    

Bandy

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация

  • Город
    Array

Посетители профиля

1 155 просмотров профиля
  1. Если Вы считаете контрольную сумму для протокола ModBus RTU то желательно по другому настраивать модуль CRC, ниже как сделано у меня, попробуйте должно получиться. void MX_CRC_Init(void) { /* Peripheral clock enable */ LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_CRC); LL_CRC_SetInputDataReverseMode(CRC, LL_CRC_INDATA_REVERSE_BYTE); LL_CRC_SetOutputDataReverseMode(CRC, LL_CRC_OUTDATA_REVERSE_BIT); LL_CRC_SetInitialData(CRC, 0xFFFF); LL_CRC_SetPolynomialCoef(CRC, 0x8005); LL_CRC_SetPolynomialSize(CRC, LL_CRC_POLYLENGTH_16B); } uint16_t Calculate_CRC( uint8_t *aDataBuffer, uint32_t BufferSize) { register uint32_t index = 0; LL_CRC_ResetCRCCalculationUnit(CRC); /* Compute the CRC of Data Buffer array*/ for (index = 0; index < BufferSize; index++) { LL_CRC_FeedData8(CRC, aDataBuffer[index]); } /* Return computed CRC value */ return(LL_CRC_ReadData16(CRC)); }
  2. Посмотрите серию STM32F373 это похоже то что Вам надо
  3. В своих блоках температуру считаю по следующим формулам Vsense = (3.3 * ADC1ConvertedValue) /4096.0; Temperatura = (1.43 - Vsense)/0.0043+23.0; она маленько отличается от Вашей, в связи с тем что, температура кристала и окружаещего воздуха отличается где-то на 2 градуса. Учитывать питающее напряжение и т.п., при том разрешении датчика температуры, я думаю не стоит. Если нужно более точно знать температу, лучше задуматся о других способах измерения.
  4. STM32F103 + Encoder

    Подобную проблему решили так. Настраиваем таймер с энкодером на прерывания по переполнению, в обработчике прерываний, в зависимости от направления счета таймера, увеличиваем или уменьшаем старшую часть счета. К сожаленью по другому ни как. Если не нужно определять направление счета то можно соеденить два счетчика каскадно
×
×
  • Создать...