基于stm32 + CRC—循環冗余校驗
單片機源程序如下:
- /**
- ******************************************************************************
- * @file main.c
- * @author fire
- * @version V1.0
- * @brief CRC計算。
- */
- #include "stm32f10x.h"
- #include "./usart/bsp_usart.h"
- #include "./crc/bsp_crc.h"
- extern __IO uint32_t CRCValue;
- /*
- * 函數名:main
- * 描述 :主函數
- * 輸入 :無
- * 輸出 :無
- */
- int main(void)
- {
- uint8_t i = 0;
-
- /* USART1 config 115200 8-N-1 */
- USART_Config();
-
- /* 使能CRC時鐘 */
- CRC_Config();
-
- printf("\r\n 這是一個 CRC(循環冗余校驗)實驗 \r\n");
-
- /* Compute the CRC of "DataBuffer" */
- for(i=0; i<BUFFER_SIZE; i++ )
- {
- //對該寄存器進行寫操作時,作為輸入寄存器,可以輸入要進行CRC計算的新數據。
- //對該寄存器進行讀操作時,返回上一次CRC計算的結果。
- //每一次寫入數據寄存器,其計算結果是前一次CRC計算結果和新計算結果的組合(對整個32位字
- //進行CRC計算,而不是逐字節地計算)。
- CRCValue = CRC_CalcBlockCRC((uint32_t *)DataBuffer, BUFFER_SIZE);
- printf("\r\n32-bit CRC 校驗碼為:0X%X\r\n", CRCValue);
- }
- printf("\r\nCRC(循環冗余校驗)測試成功\r\n");
- for(;;)
- {
-
- }
- }
復制代碼- /**
- ******************************************************************************
- * @file bsp_ds18b20.c
- * @author fire
- * @version V1.0
- */
- #include "./crc/bsp_crc.h"
- __IO uint32_t CRCValue = 0; // 用于存放產生的CRC校驗值
- /*
- * 函數名:CRC_Config
- * 描述 :使能CRC時鐘
- * 輸入 :無
- * 輸出 :無
- * 調用 : 外部調用
- */
- void CRC_Config(void)
- {
- /* Enable CRC clock */
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
- }
復制代碼
所有資料51hei提供下載:
CRC—循環冗余校驗.7z
(181.44 KB, 下載次數: 43)
2019-4-10 16:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|