cha331
cha331
这家伙很懒,什么也没写!

注册于 3年前

回答
10
文章
0
关注者
0

发布于10月前

https://github.com/RT-Thread/rt-thread/pull/8776
这个问题发布前后都没有解决,全新的工程建立了就有编译警告

screenshot_image.png

发布于1年前

fal要根据实际芯片修改port文件后才能用,可以参考这些资料先把FAL配置好。

发布于1年前

总结:
rt-thread对STM32的RTC闹钟驱动适配不完善,驱动接口只传递时分秒,而alarm.c的判断更新最近闹钟的逻辑也是根据时分秒的,如果系统里只有一个每日触发的闹钟,会导致在同样的时间重复触发多次。现在的闹钟功能在每日触发模式下是不能用的,每周、月、年也可能有这个问题,可以用每小时触发+回调中计数变量自加方式间接实现。

发布于2年前

screenshot_image.png
同样的问题,可能是gitee调整了安全策略

发布于2年前

发布于2年前

image.png
解决了,drv_rtc.c中的rt_rtc_config函数没有L0系列的条件判断,导致无法进行rtc的初始化,添加选中代码即可。
image.png

发布于3年前

cubeMX修改后要点generate code生成新的代码

发布于3年前

经过几天debug,问题已解决
rt-thread 4.0.x + stm32f072下测试CRC8、CRC16、CRC32结果没问题。

解决方法:

需要修改\bsp\stm32\libraries\HAL_Drivers\drv_crypto.c中的代码。

一、 _crypto_create(struct rt_hwcrypto_ctx *ctx)函数,初始化时使能了默认多项式导致只能进行CRC32的计算。
425行处,修改后代码如下:

  1. hcrc->Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_DISABLE;

二、

_crc_update函数中,直接将crc_cfg中的length传入初始化结构体中的CRCLength,导致CRC设备初始化失败。
参考HAL库中的CRC初始化代码:
image.png

查看HAL库,CRCLength只能为以下值之一:

  1. #if defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || defined(STM32F091xC) || defined(STM32F098xx)
  2. #define CRC_POLYLENGTH_32B (0x00000000U)
  3. #define CRC_POLYLENGTH_16B ((uint32_t)CRC_CR_POLYSIZE_0)
  4. #define CRC_POLYLENGTH_8B ((uint32_t)CRC_CR_POLYSIZE_1)
  5. #define CRC_POLYLENGTH_7B ((uint32_t)CRC_CR_POLYSIZE)

因此可以将88行处

  1. HW_TypeDef->Init.CRCLength = ctx ->crc_cfg.width;

修改为:

  1. switch(ctx ->crc_cfg.width)
  2. {
  3. case 7:
  4. HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_7B;
  5. break;
  6. case 8:
  7. HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_8B;
  8. break;
  9. case 16:
  10. HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_16B;
  11. break;
  12. case 32:
  13. HW_TypeDef->Init.CRCLength = CRC_POLYLENGTH_32B;
  14. break;
  15. default :
  16. goto _exit;
  17. }

发布于3年前

同时读两个通道,两两组合全都试过也没有问题,只有三个才会出现这个现象。

发布于3年前

这个问题我也遇到过,翻源码发现rt_adc_enable(adc_dev, ch_x)
实际执行的是drv_adc.c中的stm32_adc_enabled, 传入的ch_x这个参数根本没使用,也就是说所有通道都被使能了,可能是bug。

回到
顶部

发布
问题

投诉
建议