张世争
张世争
This guy hasn't written anything yet

注册于 1 year ago

回答
205
文章
78
关注者
30

  • 出现问题可以大胆的怀疑,假定,但不能断定,否则影响自己的思路。
  • 既然可以软件调试,可以查看调用函数,数据是由那个函数调用,如何被修改的
  • 这款芯片RAM够大,建议把每个线程栈加大一点。
  • 不排除其他线程的异常操作,指针操作,修改了数据
  • MSH命令工作时可能申请内存,但不至于影响全局变量。

建议使用:STM32CubeMX,把引脚重新配置正确,生成msp文件后,替换掉这部分。

你手动改的,初步看上去有的不正确。如使能GPIOD,你使能的是GPIOA,另外引脚变了,复用AF也变了。

https://club.rt-thread.org/ask/article/2385.html
供参考
先排除硬件的干扰
(1)根据原理图,配置好初始化的CAN引脚、时钟,不要指望CAN框架给你配好,因为CAN框架不知道你的引脚。
(2)注意波特率的设置

确认硬件是否正常?如引脚配置。
通过工具看数据接收与发送都正常。

试下在按钮的函数里:

this.setData({ lblStatus: { value: "val" } });

lblStatus 为label的ID

rtconfig.h 来自各个Kconfig文件,Kconfig文件可以根据需要自行添加、修改。不建议直接改rtconfig.h。
缺少文件,可能是构建脚本里没有把路径添加上,查看修改响应目录下的SConstruct

这个不算BUG,没有任何问题。

1、立即退出更不好,因为睡眠模式没有更改,idle依旧会循环的进入,影响睡眠质量。
2、IDLE模式一般是WFI或是空(什么都不做),由用户适配决定。
3、建议多实践,了解1S 1ms的细分,也就是了解假如1ms中,CPU一直工作与CPU只有100uS工作,哪个功耗更低。
4、建议多了解IDLE模式的特点(快速唤醒)与深睡眠DeepSleep的特点(进入退出需要较长的切换时间)。

  • 如果使用RS485,不控制方向,无法正常(双向)通信!!
  • 如果没使用RS485,可以使用RS232模式通信。modbus_rtu_set_serial_mode(ctx, MODBUS_RTU_RS232);

工程路径为中文?改为英文。

main.c 可能有异常的编码字符,main.c可以改为utf-8或其他格式

在线软件包,需要手动更新下:pkgs --update

(1)HAL_UART_MspInit 是在:HAL_UART_Init初始化调用的。
(2)rt_hw_board_init 会调用:rt_hw_usart_init 完成uart硬件初始化
(3)drv_usart.c中,实现串口的配置、收发、中断等。

协议数据解读如下:

功能              10

起始地址 Hi        01

起始地址 Lo        33

寄存器数量 Hi      00

寄存器数量 Lo      02

字节数              04

寄存器值 Hi      00

寄存器值 Lo        ex

寄存器值 Hi      d0

寄存器值 Lo        d1

CRCL              ch

CRCH              cl

但是延时时间是设定的3倍。来自systick吧,systick怎么配置的?
找找

rt_hw_systick_init
HAL_SYSTICK_Config

手动加一个,先调试起来。
后面碰到:xxx_drv.c这种文件,是用户的驱动文件,建议直接手动改!!
官方只是维护一个较通用的。

回到
顶部

发布
问题

投诉
建议