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

注册于 1 year ago

回答
296
文章
88
关注者
36

  • 用的最新的RT-Thread + PM组件吗?
  • 不睡眠却引起的问题?

是的,这是平台适配的,缺的,要么找相似的修改,要么自己写。

  • 这是因为默认drv_gpio.c中, 设置双边沿触发后,PIN_IRQ_MODE_RISING_FALLING,中断使能后,会重新初始化引脚,默认为NOPULL,造成引脚初始化的上拉没有了,外部没有上拉电阻,会造成引脚浮空,频繁触发。
  • 手动在:drv_gpio.c 中,改为上拉试试。

  • 使用RT-Thread 的设备框架,可以多次调用open,有打开计数。
  • 设备的使用,可以在多个线程使用,注意并发调用时的互斥操作即可

  • MSH_CMD_EXPORT 可以导出一个自己的shell命令,不过这个命令最好能快速的返回,中间不要有:while(1)死循环,如果占用较大的栈,运行时间长,需要配合线程处理,shell名字尽快返回。
  • ftp这种操作,尽量使用线程去处理,shell命令发送触发的消息。
  • 注意shell本身的线程栈大小是否够用。

  • 需要确认uart3 引脚配置是否正确?
  • UART3的BSP宏是否开启
  • list_device 查看是否有uart3

  • 【莫把示例当实例】
  • 通过 modbus_receive接收到数据后,可以拿到接收的数据,如用户自己定义的应用数据,然后用户判断处理完,填充数据好响应的数据,调用提供的modbus_reply接口响应主机。
  • 也就是说,主机来了数据,并不一定要响应,如果响应,也要判断处理下,根据主机的要求进行操作。有些耗时的操作,可能还要配合另一个处理线程去处理,先reply以免引起主机响应超时。
  • 通讯协议只提供了数据的收与发,具体的数据处理(如通讯协议的modbus的命令,不是真正用户的命令,用户的数据协议,一般定义在数据段中)由用户应用决定

想这种类似保存参数到NV的操作,改动NV结构后,是需要重新确认参数是否不受影响

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

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

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

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

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

回到
顶部

发布
问题

投诉
建议