单片机耍了3年,RTOS耍了一年,用过RL-ARM和UCOS。
自己写过RL-ARM下的UART驱动,我都是做成阻塞加环形缓冲的模式。
以STM32为例
我定义一个结构体
OS_SEM rxSem; //8
U8* rxBuf; //4
U16 rxSize; //2
U16 rxPush; //2
U16 rxPop; //2
U16 rxCnt; //2
OS_SEM txSem; //8
U8* txBuf; //4
U16 txSize; //2
U16 txPush; //2
U16 txPop; //2
U16 txCnt; //2
接收中断触发时,把收到字节放入Buffer中,还有触发一个信号量,任务里面通过这个信号量来读取buffer的字节。
发送时还是用环形buffer的模式,也用信号量来控制,如果发送buffr没有写满,就有信号量,然后中断里面读buffer并发送,发完产生一个信号量。
这种方法好不好??我怎么看的很多RTOS的例程都没这么做?
uart.rar
(3.05 KB)
|