完善资料让更多小伙伴认识你,还能领取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; } |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1570 浏览 0 评论
5148 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9744 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2944 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2370 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 07:52 , Processed in 0.742071 second(s), Total 75, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2998