<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32F10x 學(xué)習筆記3(CRC計算單元)

STM32F10x 學(xué)習筆記3(CRC計算單元)

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò ) 收藏
STM32F系列的單片機內部帶了CRC32計算單元。這個(gè)內置CRC模塊的方法使用非常簡(jiǎn)單。其操作如下圖所示。

本文引用地址:http://dyxdggzs.com/article/201611/318838.htm

圖1CRC計算單元框圖

歸納起來(lái)有如下幾步操作:

1. 開(kāi)啟CRC單元的時(shí)鐘。RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE)
2. 復位CRC模塊(設置CRC_CR=0x01),這個(gè)操作把CRC余數初始化為0xFFFFFFFF
3. 把要計算的數據按逐個(gè)地寫(xiě)入CRC_DR寄存器
4. 寫(xiě)完所有的數據字后,從CRC_DR寄存器讀出計算的結果

STM32F10x StdPeriph Driver 中提供了幾個(gè)函數。

CRC_ResetDR(void)
用來(lái)復位CRC模塊。

uint32_t CRC_CalcCRC(uint32_t Data)
將一個(gè)數據寫(xiě)入CRC_DR寄存器,返回值為計算結果。

uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength)
計算一個(gè)數組的CRC 值。

uint32_t CRC_GetCRC(void)
讀取CRC_DR寄存器的結果。

另外,CRC 模塊中還有個(gè)獨立數據寄存器(CRC_IDR)。這是個(gè)單字節的寄存器,用于臨時(shí)存放1字節的數據,不受復位操作影響。相應的操作函數有兩個(gè)。

void CRC_SetIDRegister(uint8_t IDValue)
uint8_t CRC_GetIDRegister(void)
分別是寫(xiě)CRC_IDR和讀 CRC_IDR 寄存器。

雖然STM32F 上的CRC 單元用起來(lái)很簡(jiǎn)單,但是似乎它計算出來(lái)的結果與傳統的CRC32算法得到的結果有些不同。
下面是個(gè)簡(jiǎn)單的例子。
  1. #include"stm32f10x.h"
  2. intmain(void)
  3. {
  4. uint32_tj;
  5. uint32_tstr[11]={1,2,3,4,5,6,7,8,9,};
  6. SystemInit();
  7. RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC,ENABLE);
  8. CRC_ResetDR();
  9. str[9]=CRC_CalcBlockCRC(str,1);
  10. CRC_ResetDR();
  11. CRC_CalcCRC(0xA5A5A5A5);
  12. j=CRC_GetCRC();
  13. CRC_CalcCRC(j);
  14. for(;;)
  15. {
  16. }
  17. }



關(guān)鍵詞: STM32F10xCRC計算單

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>