打印
[STM32F1]

STM32--CRC学习

[复制链接]
200|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
robertesth|  楼主 | 2024-9-20 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码
crc.c

#include "stm32f1xx_hal.h"

// 定义一个CRC_HandleTypeDef结构体的实例,用于管理CRC模块
CRC_HandleTypeDef crc;

// CRC初始化函数,用于配置CRC模块的参数并初始化
void CRC_Init(void)
{
    // 设置CRC_HandleTypeDef结构体实例的Instance成员为CRC外设的地址
    crc.Instance = CRC;
    // 调用HAL库提供的函数,初始化CRC模块
    HAL_CRC_Init(&crc);
}

// CRC模块的初始化回调函数
void HAL_CRC_MspInit(CRC_HandleTypeDef *hcrc)
{
    // 启用CRC外设的时钟,以便可以使用CRC功能
    __HAL_RCC_CRC_CLK_ENABLE();
    // 这个回调函数会在HAL_CRC_Init()函数中被调用
    // 在这里,我们只需要开启CRC的时钟即可,不需要做其他的初始化工作
}
crc.h

#ifndef __CRC_H
#define __CRC_H

void CRC_Init(void);                // 声明 CRC 初始化函数

extern CRC_HandleTypeDef crc;      // 声明 CRC 外设的句柄变量,该变量在其他文件中定义

#endif
main.c

#include "stm32f1xx_hal.h"   // 包含STM32 HAL库的头文件
#include "rcc.h"             // 包含RCC模块的头文件
#include "uart.h"            // 包含UART模块的头文件
#include "crc.h"             // 包含CRC模块的头文件

uint32_t buff[4] = {0x01020304, 0x05060708, 0x090A0B0C, 0x0D0E0F00}; // 定义一个包含4个32位数据的数组

int main(void)
{
    HAL_Init();                 // 初始化HAL库
    RccClock_Init();            // 初始化系统时钟
    U1_Init(9600);              // 初始化UART1串口,波特率设置为9600
    CRC_Init();                 // 初始化CRC模块

    // 使用CRC模块计算数据缓冲区buff的CRC校验值,并通过UART打印输出
    u1_printf("%x\r\n", HAL_CRC_Calculate(&crc, buff, 4));

    while (1)
    {
        // 程序进入主循环,持续运行
    }   
}


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

1147

帖子

0

粉丝