STM32 CRC寄存器操作

发布者:AngelicHeart最新更新时间:2017-02-26 来源: eefocus关键字:STM32  CRC寄存器 手机看文章 扫描二维码
随时随地手机看文章

//CRC.C

/*************************************************************************************************/
/* STM32 CRC  */
//20120427


#include "stm32f10x_map.h"
#include "system.h"
#include "crc.h"


/*************************************************************************************************************************
* 函数 :  void CRC_Reset(void)
* 功能 :  复位CRC
* 参数 :  无
* 返回 :  无
* 依赖 :  底层宏定义
* 作者 :  陈鹏
* 时间 :  20120427
* 最后修改时间 : 20120427
* 说明 : 复位CRC
*************************************************************************************************************************/
void CRC_Reset(void)
{
CRC->CR = 0x00000001;//复位CRC_DR
}


/*************************************************************************************************************************
* 函数 :  void CRC_Init(void)
* 功能 :  初始化CRC模块
* 参数 :  无
* 返回 :  无
* 依赖 :  底层宏定义
* 作者 :  陈鹏
* 时间 :  20120427
* 最后修改时间 : 20120427
* 说明 : 使能CRC时钟
*************************************************************************************************************************/
void CRC_Init(void)
{
DeviceClockEnable(DEV_CRC,ENABLE);//使能CRC时钟
CRC_Reset();  //复位CRC
}

/*************************************************************************************************************************
* 函数 :  u32 CRC_CalculateCRC(u32 data)
* 功能 :  计算单个数据32BIT CRC
* 参数 :  计算的数值
* 返回 :  32BIT CRC校验值
* 依赖 :  底层宏定义
* 作者 :  陈鹏
* 时间 :  20120427
* 最后修改时间 : 20120427
* 说明 : 计算CRC,每次写入前要清除寄存器,即复位CRC
*************************************************************************************************************************/
u32 CRC_CalculateCRC(u32 data)
{
CRC_Reset();  //复位CRC
CRC->DR = data;//写入要生成CRC的数据
return CRC->DR;//返回CRC
}


/*************************************************************************************************************************
* 函数 :  u32 CRC_CalculateBlockCRC(u8 pBuffer[], u32 BufferLength)
* 功能 :  计算缓冲区中的数据的CRC
* 参数 :  pBuffer[]:缓冲区指针,BufferLength:缓冲区大小
* 返回 :  32BIT CRC校验值
* 依赖 :  底层宏定义
* 作者 :  陈鹏
* 时间 :  20120502
* 最后修改时间 : 20120502
* 说明 : 写入前先复位CRC
*************************************************************************************************************************/
u32 CRC_CalculateBlockCRC(u8 pBuffer[], u32 BufferLength)
{
u32 i;


CRC_Reset();  //复位CRC
for(i = 0;i < BufferLength;i++)
CRC->DR = (u32)pBuffer[i];//循环写入数据

return CRC->DR;//返回CRC
}

//CRC.H

/*************************************************************************************************/
/* STM32 CRC  */
//20120427


#ifndef _CRC_H_
#define _CRC_H_


#include "stm32f10x_map.h"
#include "system.h"
#include "crc.h"


void CRC_Init(void); //初始化CRC模块
void CRC_Reset(void); //复位CRC
u32 CRC_CalculateCRC(u32 data); //计算32BIT CRC
u32 CRC_CalculateBlockCRC(u8 pBuffer[], u32 BufferLength);//计算缓冲区中的数据的CRC

#endif

关键字:STM32  CRC寄存器 引用地址:STM32 CRC寄存器操作

上一篇:STM32 SDIO 报错 SD_RX_OVERRUN
下一篇:S3C6410 纯粹的裸机启动,自己写的SD BOOT启动

推荐阅读最新更新时间:2024-03-16 15:34

再造STM32---第一部分:如何正规的安装KEIL5?
获取本文所有安装包和注册机方式: 1、CSDN下载: https://download.csdn.net/download/qq_38351824/10943718 2、可以关注点赞并在下方评论,我给你邮箱发过去。 3、关注微信公众号下载: ① 关注微信公众号:Tech云 ② 一、温馨提示: 1、 安装路径不能带中文,必须是英文路径 2、 安装目录不能跟 51 的 KEIL 或者 KEIL4 冲突,三者目录必须分开 3、 KEIL5 的安装比起 KEIL4 多了一个步骤,必须添加 MCU 库,不然没法使用。 4、 如果使用的时候出现莫名其妙的错误,先百度查找解决方法,莫乱阵脚。 二、获取 KEIL5
[单片机]
再造STM32---第一部分:如何正规的安装KEIL5?
STM32】实战3.1—用STM32与TB6600驱动器驱动42步进电机(一)
1 实验预期效果 完成步进电机的正转(不通过串口控制、非可移动供电)。 2 硬件学习 2.1 TB6600驱动器 某宝店家提供资料如下: 2.1.1 通过拨码开关设定细分与电流 2.1.2 共阴共阳接线法 共阴: 驱动器 —— stm32 DIR- 与 PUL- —— GND DIR+ —— 方向引脚 PUL+ —— 脉冲引脚 共阳: 驱动器 —— stm32 DIR+ 与 PUL+ —— +5V DIR- —— 方向引脚 PUL- —— 脉冲引脚 2.2 开关电源(AC转DC变压器)& 电源线
[单片机]
【<font color='red'>STM32</font>】实战3.1—用<font color='red'>STM32</font>与TB6600驱动器驱动42步进电机(一)
linux上搭建stm32开发环境 vscode+gcc+stm32cubeMX 和 vscode+platformIO
一、软件清单: VSCode:应用商店安装 或 sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo apt-get install ubuntu-make sudo umake web visual-studio-code arm-none-eabi-gcc: sudo apt-get install gcc-arm-none-eabi sudo apt-get install gdb-arm-none-eabi del /del 或 手动下载安装:https://launchpad.net/gcc-arm-embedd
[单片机]
linux上搭建<font color='red'>stm32</font>开发环境 vscode+gcc+stm32cubeMX 和 vscode+platformIO
如何设计在stm32中的复位电路?
说到复位,我们都不会陌生,系统基本都有一个复位按键。复位的种类有很多:上电复位、掉电复位、复位引脚复位、看门狗复位、软件复位等。本文探讨的就是在stm32中复位电路如何设计。 STM32介绍 STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex®-M0,M0+,M3, M4和M7内核在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。 新系列采用LQFP64、LQFP100和LFBGA
[单片机]
如何设计在<font color='red'>stm32</font>中的复位电路?
stm32_FSMC注意事项
关于FSMC总线的介绍前面已经略有介绍,在此不作赘述。只是简单说一下其配置过程既需要注意的几点问题: 一、 FSMC内部结构和映射地址空间 FSMC包含AHB接口、NOR Flash和PSRAM控制器、NANDflash和PC卡控制器、外部设备接口4个主要模块。在ST吗内部,FSMC的一端通过内部高速总线AHB连接内核,另一端则是面向扩展存储器的外部总线。内核对外部存储器的访问信号发送到AHB总线后,经过FSMC转换为符合外部存储器规约的信号,送到外部存储器响应的管脚,视线内河鱼 数据交换。FSMC起到了桥梁的作用,既能够进行信号类型的转换,有能够进行信号宽度和时序的调整,屏蔽掉不同存储器之间的差异。 FSMC内部包含NOR Fl
[单片机]
STM32 CAN总线调试经验
前言 STM32 CAN代码网上很多,但大都是讲如何配置的,对于一些原理以及注意事项没有很清楚的说明。在实际调试过程中,两个设备间的通信只要设备CAN的配置一样基本就可以调通,但在增加设备的过程中,很容易出现多设备无法通信的问题,这里主要就这一问题进行说明。 硬件 STM32F042G4 + MAX3051 测试过程 测试板回来后,两个设备间的通信轻松搞定,但在增加设备的过程中,增加的设备总是不能正常通信。详细比对了一下配置,也没有任何问题。后来,仔细研读MAX3051的芯片手册,得到以下几个重要信息: MAX3051有四种工作模式 高速模式:数据传输速率可达1Mbps,但抗干扰能力弱,需要双绞线 斜率控制:可
[单片机]
stm32 io模拟spi通信
首先借鉴他人的编写程序: #define MOSI_H GPIO_SetBits(GPIOB, GPIO_Pin_10) #define MOSI_L GPIO_ResetBits(GPIOB, GPIO_Pin_10) #define SCLK_H GPIO_SetBits(GPIOB, GPIO_Pin_13) #define SCLK_L GPIO_ResetBits(GPIOB, GPIO_Pin_13) #define MISO GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) unsigned char SPI_SendByte(unsigned char dt)
[单片机]
STM32的功能引脚重映射和复用功能
Stm32的引脚一般应用: 模拟输入_AIN 应用ADC模拟输入,或者低功耗下省电。 浮空输入_IN_FLOATING 可以做KEY识别,RX1 开漏输出_Out_OD 应用于I2C总线; (STM32开漏输出若外部不接上拉电阻只能输出0) STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能,本文对一些在使用引脚重映射时所遇到的有关问题加以说明。 我们知道每个内置外设都有若干个输入输出引脚,一般这些引脚的输出脚位都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在 STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的脚位外,还可以通过设置重映射寄存器的方式,把这个
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved