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