thewon86
thewon86
每个 spi 总线都有一个 struct stm32_spi 结构体变量的吧,因此,各个 wait_event 变量是独立的。 XXX_TxRxCplt_EVENT XXX_TxCplt_EVENT XXX_RxCplt_EVENT 这几个宏定义一个就够了吧。 set_wait_event 函数也不用区分是哪个总线。
> struct stm32_spi spi1总线有个 struct stm32_spi 结构体变量对应 spi1 总线控制。spi2总线也有个 struct stm32_spi 结构体变量对应 spi2 总线控制。 struct stm32_spi 里第一个元素 handle 肯定不会是所有 spi 总线共用的吧。wait_event 元素变量也肯定不会是所有 spi 总线共用了。
https://club.rt-thread.org/ask/article/3204.html 各类函数的用法,重点在于告诉用户怎么用,而不是让使用者毫无头绪的去乱试,每次遇到 assert 才恍然大悟,哦,这个函数不能这么用。这种想法是错的。 assert 是在开发阶段,或者说,是对入门者的一种快速暴力提示;对于一个熟练使用者来讲还依靠 assert 来定位用法错误,会对产品引入隐患的。 一个产品,绝对不能带着 assert 运行。虽然 ipc 中添加的这些 assert 经过实验阶段验证没有问题了,也不能让他们留在程序里。 @mysterywolf 就像前不久在微信群里提到的那样,检测宏最好放到函数开头,醒目的地方,做“警示”“提示”作用。让使用者方便,快速,第一件需要了解到的事儿就是知道这个函数的使用环境。 这个 pr ,除了增加了代码大小,并不能引导使用者使用上的更多注意。
> 顺便一提,我遇到的问题是,在 rtthread_startup() 函数中(线程调度初始化完成之前),调用 rt_mutex_take() 和 rt_mutex_release() 函数后,struct rt_mutex.value 的值会意外的变成2,导致后续可以有多个线程同时持有互斥锁。 `rt_thread_startup` 函数? 它里面需要用到锁了?
> 大佬,有没有可能和V2版本融合起来啊,目前V2版本历史包袱还没那么重,应该比较容易调整的。如果再加一个版本的串口框架进来,如果我是用户,我都不知道该用哪个了😂 交给使用者去选择吧。usb 协议栈那么多,总不能只留一个其它都不支持了吧,modbus 库那么多也不能只让用一个吧。
> > > 选择太多的话,做成软件包比较合适。 > > > > > > 别做软件包了吧,这个是关键性核心功能,如果谁都不妥协的话,就先这样放着吧,先百家争鸣。经过一段时间的收敛,再最终汇总成一个新版本的串口框架。16年了,RT-Thread串口框架还是有问题,没有收敛下来,串口框架是个大问题呀。 > > 作为 RT-Thread 上游软件更多要考虑长期的兼容性和可维护性,发散、灵活、自由的组件选择交给软件包。 > > 另外,现在串口 V2 还有什么问题? 1. 阻塞 非阻塞概念不明确。 2. 做不到 0 等待 write 3....
@armink 看论坛文章,有更详细的说明。
想法不错
想法不错
https://club.rt-thread.org/ask/article/8493fe4546bac15b.html 考虑一下,设定的时间精度问题先?