Модуль CRC MCAL
Підтримувані родини STM32: U5
Не підтримуються: G4, H5, H7, L4
Модуль CRC (Cyclic Redundancy Check) MCAL надає абстракцію для налаштування та використання периферії CRC в мікроконтролерах STM32.
Цей модуль є частиною рівня MCAL і забезпечує уніфікований API для різних родин STM32.
Різні родини STM32 підтримуються в окремих гілках; перейдіть на правильну гілку для вашого MCU.
🚀 Можливості
- Ініціалізація та деініціалізація периферії CRC
- Налаштовувані поліном і початкове значення
- Керування порядком вхідних/вихідних даних
- Активація/деактивація периферії
- Підтримка неблокуючої передачі з перериваннями завершення та половини передачі
- Отримання конфігурації за замовчуванням
- Обробник періодичних завдань
Публічний API
Інформація про модуль
crc_ModuleVersion_t Crc_Get_ModuleVersion ( void );
Повертає поточну версію модуля CRC.
Ініціалізація
-
crc_RequestState_t Crc_Init ( crc_Config_t * const crcConfig );
Ініціалізує периферію CRC із заданою конфігурацією. -
void Crc_Deinit ( void );
Деініціалізує периферію CRC і скидає конфігурацію. -
void Crc_Task ( void );
Обробляє фонові завдання (якщо цього вимагає реалізація). -
crc_RequestState_t Crc_Get_DefaultConfig ( crc_Config_t * const crcConfig );
Отримує структуру конфігурації за замовчуванням для безпечної ініціалізації.
Керування периферією
-
crc_RequestState_t Crc_Set_PeriphActive ( crc_PeriphId_t crcId );
Активує периферію CRC. -
crc_RequestState_t Crc_Set_PeriphInactive ( crc_PeriphId_t crcId );
Деактивує периферію CRC. -
crc_Data_t Crc_Get_Data ( crc_PeriphId_t crcId );
Зчитує останній обчислений результат CRC.
Конфігурація
-
crc_RequestState_t Crc_Set_OutputDataOrder ( crc_PeriphId_t crcId, crc_DataOrder_t dataOrder ); -
crc_RequestState_t Crc_Get_OutputDataOrder ( crc_PeriphId_t crcId, crc_DataOrder_t * const dataOrder );
Налаштовують або отримують порядок вихідних даних. -
crc_RequestState_t Crc_Set_InputDataOrder ( crc_PeriphId_t crcId, crc_DataOrder_t dataOrder ); -
crc_RequestState_t Crc_Get_InputDataOrder ( crc_PeriphId_t crcId, crc_DataOrder_t * const dataOrder );
Налаштовують або отримують порядок вхідних даних. -
crc_RequestState_t Crc_Set_Polynomial ( crc_PeriphId_t crcId, crc_Data_t polynomial, crc_DataSize_t polySize ); -
crc_RequestState_t Crc_Get_Polynomial ( crc_PeriphId_t crcId, crc_Data_t * const polynomial, crc_DataSize_t * const polySize );
Задають або отримують поліном CRC. -
crc_RequestState_t Crc_Set_InitValue ( crc_PeriphId_t crcId, crc_Data_t initValue ); -
crc_RequestState_t Crc_Get_InitValue ( crc_PeriphId_t crcId, crc_Data_t * const initValue );
Налаштовують або отримують початкове значення CRC.
Підтримка неблокуючої передачі
-
crc_RequestState_t Crc_Set_TransferCpltActive ( crc_PeriphId_t crcId ); -
crc_RequestState_t Crc_Set_TransferCpltInactive ( crc_PeriphId_t crcId ); -
crc_RequestState_t Crc_Get_TransferCpltState ( crc_PeriphId_t crcId );
Керують станом завершення передачі або перевіряють його. -
crc_RequestState_t Crc_Set_TransferCpltIsr ( crc_PeriphId_t crcId, crc_CalcCompleteIsr_t const * const callback ); -
crc_RequestState_t Crc_Get_TransferCpltIsr ( crc_PeriphId_t crcId, crc_CalcCompleteIsr_t const * const callback );
Налаштовують або отримують callback ISR завершення передачі. -
crc_RequestState_t Crc_Set_HalfTransferActive ( crc_PeriphId_t crcId ); -
crc_RequestState_t Crc_Set_HalfTransferInactive ( crc_PeriphId_t crcId ); -
crc_RequestState_t Crc_Get_HalfTransferState ( crc_PeriphId_t crcId );
Керують станом половини передачі або перевіряють його. -
crc_RequestState_t Crc_Set_HalfTransferIsr ( crc_PeriphId_t crcId, crc_CalcCompleteIsr_t const * const callback ); -
crc_RequestState_t Crc_Get_HalfTransferIsr ( crc_PeriphId_t crcId, crc_CalcCompleteIsr_t const * const callback );
Налаштовують або отримують callback ISR половини передачі.
Примітки щодо використання
- Завжди ініціалізуйте модуль за допомогою
Crc_Initперед викликом інших функцій. - API конфігурації за замовчуванням надає безпечну відправну точку.
- Неблокуючий режим дає змогу обробляти операції CRC асинхронно за допомогою callback-ів ISR.
- Поліном і порядок вхідних/вихідних даних слід налаштовувати відповідно до формату даних, очікуваного у застосунку.
🛠 Інтеграція з CMake
Додайте це до CMakeLists.txt вашого модуля:
target_link_libraries(User_Lib PRIVATE Crc_Lib)
Ліцензія
Цей проєкт ліцензовано за Creative Commons Attribution–NonCommercial 4.0 International (CC BY-NC 4.0).
Ви вільні використовувати, змінювати та поширювати цю роботу в некомерційних цілях за умови належного зазначення авторства.
Повні умови дивіться у LICENSE.md або на creativecommons.org/licenses/by-nc/4.0.
Автори
- Mr.Nobody — embedbits.com
Внески вітаються! Будь ласка, відкрийте pull request.