完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
cubeMX只启用CRC功能,其余默认配置,编译没有任何问题。调用参考官方例程,CRC32的计算结果没问题,尝试CRC16、CRC8,计算结果明显不对,还是32位数。 |
|
相关推荐
1个回答
|
|
经过几天debug,问题已解决 rt-thread 4.0.x + stm32f072下测试CRC8、CRC16、CRC32结果没问题。 解决方法: 需要修改bspstm32librariesHAL_Driversdrv_crypto.c中的代码。 一、 _crypto_create(struct rt_hwcrypto_ctx *ctx)函数,初始化时使能了默认多项式导致只能进行CRC32的计算。 425行处,修改后代码如下: hcrc->Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_DISABLE; 二、 _crc_update函数中,直接将crc_cfg中的length传入初始化结构体中的CRCLength,导致CRC设备初始化失败。 参考HAL库中的CRC初始化代码: ![]() 查看HAL库,CRCLength只能为以下值之一: #if defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || defined(STM32F091xC) || defined(STM32F098xx) #define CRC_POLYLENGTH_32B (0x00000000U) #define CRC_POLYLENGTH_16B ((uint32_t)CRC_CR_POLYSIZE_0) #define CRC_POLYLENGTH_8B ((uint32_t)CRC_CR_POLYSIZE_1) #define CRC_POLYLENGTH_7B ((uint32_t)CRC_CR_POLYSIZE) 因此可以将88行处 HW_TypeDef->Init.CRCLength = ctx ->crc_cfg.width; 修改为: switch(ctx ->crc_cfg.width) { case 7: HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_7B; break; case 8: HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_8B; break; case 16: HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_16B; break; case 32: HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_32B; break; default : goto _exit; } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
973 浏览 0 评论
IaaS+on+DPU(IoD)+下一代高性能算力底座技术白皮书
1917 浏览 0 评论
飞凌嵌入式-ELFBOARD 常用的USB接口及其不同版本介绍第1期
1062 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board上OSPI-Flash实践
1517 浏览 0 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 应用层更改引脚复用的方法
3744 浏览 0 评论
65023 浏览 21 评论
嵌入式热门DIY项目:智能机器人开源资料合集(原理图、代码、论文)
67698 浏览 22 评论
57696 浏览 32 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 06:35 , Processed in 0.715512 second(s), Total 71, Slave 53 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191