一般在ucos任务里面的常用结构如下
- while (DEF_ON) { /* Task body, always written as an infinite loop. */
- p_msg = OSQPend(&UsbRxQ,
- 0, //timeout 0表示永远等待
- OS_OPT_PEND_BLOCKING,
- &msg_size,
- &ts,
- &err);
- PrintfBuffer("usb rx:",(char *)p_msg, 16);
- OSMemPut(&UsbRxMem, (void *)p_msg, &err); //free memory block, pointer is msg, from BTRxMem
- usb_send("HELLO", 16);
- }
要么是pend到一个event(包括信号量等)
要么是
- while (DEF_ON) { /* Task body, always written as an infinite loop. */
- LED_LED1_ON();
- OSTimeDlyHMSM(0, 0, 0, 100,
- OS_OPT_TIME_HMSM_STRICT,
- &err);
- LED_LED1_OFF();
- OSTimeDlyHMSM(0, 0, 0, 100,
- OS_OPT_TIME_HMSM_STRICT,
- &err);
- }
且不论你在CAN总线的操作上有没有什么问题,首先你要先解决你ucos程序结构上的问题,才能再考虑对资源的操作
如果调试CAN,可以先用供应商的代码,其实CAN只要知道那 10几20个寄存器的配置,是相当简单的。
|