红枫
红枫 - 认证专家
This guy hasn't written anything yet

注册于 2 years ago

回答
258
文章
4
关注者
31

两者都使用了调度钩子,钩子上只能挂接一个回调函数,所以造成了两者不能同时使用。syswatch主要使用在产品发布阶段,用于保障系统运行,systemview主要用于调试阶段,用于开发调试。如果要两者同时工作,需要劫持系统调度钩子设置函数,做个中间层,使得可以同时挂接多个钩子函数。

建议可以使用rs485软件包处理串口数据收发,并学习下软件包是如何工作的

调用函数

LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue)

使用函数rt_hwtimer_control直接设置频率

检测串口写返回结果,如果发生错误那么就将串口关闭再打开.

是调rt_device_open/rt_device_close开关串口设备吗?这两个函数中有打开计数,不会造成你说的问题啊.
image.png

有外部中断寄存器可以判断哪根线发生了中断

试试每个通道连续采集2次,取第二次采集值,这样可以消除通道间的影响

上syswatch可以发现和防止此类问题

高优先级线程不能长时间占死cpu,否则你的线程设计就是有问题的。
一般一件事务处理使用一个线程,事务工作来了线程激活,完成此次处理后释放cpu,继续等待下次事务到了。
比如一个键盘扫描事务,可以设计成每10ms扫描一遍各按键按下状态,有键按下就向按键队列发按键码,一次扫描完成后等待10ms,然后再次扫描。

线程函数退出,系统会自动将其删除,不需要线程自己删自己

MSP430资源太小了,跑不了RT-Thread

回到
顶部

发布
问题

投诉
建议