1
完善资料让更多小伙伴认识你,还能领取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; } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1111 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3930 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1534 浏览 0 评论
2287 浏览 0 评论
1730 浏览 0 评论
75562 浏览 21 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 01:38 , Processed in 0.513883 second(s), Total 71, Slave 53 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号